ANTLR

ANTLR
ANTLR
Desarrollador(es)
Terence Parr y Colaboradores
http://www.antlr.org
Información general
Apareció en 1988
Última versión estable 3.2 (23-09-2009)
Influido por PCCTS
Sistema operativo Linux, Windows, Mac OS X
Licencia licencia BSD

ANTLR (ANother Tool for Language Recognition; en español "otra herramienta para reconocimiento de lenguajes") es una herramienta creada principalmente por Terence Parr, que opera sobre lenguajes, proporcionando un marco para construir reconocedores (parsers), intérpretes, compiladores y traductores de lenguajes a partir de las descripciones gramaticales de los mismos (conteniendo acciones semánticas a realizarse en varios lenguajes de programación).

Contenido

Introducción

ANTLR cae dentro de la categoría de meta-programas, por ser un programa que escribe otros programas. Partiendo de la descripción formal de la gramática de un lenguaje, ANTLR genera un programa que determina si una sentencia o palabra pertenece a dicho lenguaje (reconocedor), utilizando algoritmos LL(*) de parsing. Si a dicha gramática, se le añaden acciones escritas en un lenguaje de programación, el reconocedor se transforma en un traductor o intérprete.

Además, ANTLR proporciona facilidades para la creación de estructuras intermedias de análisis (como ser ASTs - Abstract Sintax Tree), para recorrer dichas estructuras, y provee mecanismos para recuperarse automáticamente de errores y realizar reportes de los mismos.

ANTLR es un proyecto bajo licencia BSD, viniendo con todo el código fuente disponible, y preparado para su instalación bajo plataformas Linux, Windows y Mac OS X.

Historia

Los inicios del proyecto se remontan a otoño de 1988, cuando el profesor de la Universidad de Purdue, Hank Dietz, inicia el proyecto PCCTS (Purdue Compiler Construction Tool Set) como un generador de parsers, para su utilización en un curso de graduación. Bajo la tutela de Dietz, Terence Parr realiza su tesis para el grado de Máster, creando ANTLR (originalmente llamado YUCC).Esta versión alfa, fue totalmente re-diseñada y escrita, para dar paso a la versión 1.00B. Dicha versión fue la primera release distribuida a través de Internet por un grupo de noticias (comp.compilers), en Febrero de 1990, obteniendo un buen recibimiento y comunidad de seguidores. Esta versión solo generaba parsers LL(1) y no manejaba parámetros de retorno, pero permitía expresar de manera conjunta la descripción del análisis léxico y sintáctico a realizarse.

Conforme Parr iniciaba su Ph.D. en Purdue en otoño de 1990, comenzó la segunda completa revisión y re-escritura de ANTLR. A partir de la misma, así como de la incorporación de nuevas técnicas de analizar gramáticas descubiertas en esos momentos, es que surge la versión 1.00, publicada vía un artículo en Noticias SIGPLAN (periódico mensual de la ACM). Dicha versión incluía métodos para generar parsers LL(k), para la creación y manipulación de AST’s, clases léxicas, clases para manejo de errores, y clases para recuperación automática de fallas. Esta versión fue extensamente testeada por profesionales de Micro Data Base System [1] así como candidatos a Ph.D de la Universidad de Minnesota, mostrando ser una sólida base para la evolución que surgiría a partir de la misma, y continuaría hasta hoy en día.

Versiones

La versión 1 de ANTLR siguió su curso, y fue incorporando nuevas características, así como nuevas capacidades y facilidades para el programador (siendo una de las más destacadas SORCERER, la cual facilitaba el parseo de los subárboles hijos de un nodo mediante la especificación de una gramática, en vez de realizar una recorrida recursiva sobre ambos).

En mayo de 1997, Parr unido principalmente con John Lilley, se plantean escribir ANTLR desde cero, enfocándose en mejorar su rendimiento, reducir el uso de memoria, y agregar más características al lexer (como ser la posibilidad ingorar si los símbolos se encuentran en mayúscula o minúscula). Esto da lugar al surgimiento de ANTLR 2.0.

En diciembre del mismo año, surge el sitio web http://www.antlr.org, el cual fue acompañado de la publicación de la versión 2.2.0, englobando varias mejoras, como ser tratamiento de AST extendido, herencia de gramáticas, etc.

El 17 de Mayo del 2007 publican la versión actual de ANTLR, 3.0. Dicha versión llevó 4 años de investigación y desarrollo. La misma esta re-escrita en Java, y su principal objetivo fue el de proveer un código fuente limpio y claro de entender, presentando la sintaxis y semántica de la gramática del meta-lenguaje de ANTLR de una manera más sencilla. Además se mejoró nuevamente el rendimiento del software, así como también se añadieron algunas funciones nuevas (modo automático de recorrida en reversa, mecanismo de reescritura de reglas del AST, extensión al algoritmo LL(k), llamada LL(*), la cual permite que no se especifique el parámetro k de búsqueda en la cadena de entrada, sino que ANTLR busca automáticamente tantos caracteres como sea necesario, hasta que se logre evitar la ambigüedad, etc.).

A esto se le añadió que Jean Bovet creó el entorno de desarrollo para la creación y edición de gramáticas para ANTLR llamado “ANTLRWorks”.

Lenguajes compatibles e integración con entornos de desarrollo

ANTLRWorks es un entorno de desarrollo con interfaz gráfica que permite el desarrollo de gramáticas para la versión 3.0 o superior de ANTLR. Consiste en una aplicación independiente Java, que se puede ejecutar directamente desde un jar. De quererse incorporar las funcionalidade de ANTLR en ambientes de desarrollo ya existentes, existen plug-ins que se pueden bajar directamente de la web del autor, habilitando el poder trabajar en IntelliJ, gUnit, Eclipse, NetBeans, etc.

Actualmente ANTLR genera código Java, C, C++, C#, Python, Perl, Delphi, Ada95, JavaScript y Objective-C. Otros lenguajes como Ruby, php, etc. son generados por medio de extensiones planteadas por la comunidad.

Aportes del autor

Terence Parr es un profesor de Teoría de la Computación en la Universidad de San Francisco, y ha estado trabajando en ANTLR junto con varios colegas desde 1989. Su principal aporte ha sido el liderar el resurgimiento de los algoritmos de parsing LL(*) utilizados en herramientas de reconocimiento de lenguajes.

Véase también

Enlaces externos


Wikimedia foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Mira otros diccionarios:

  • Antlr — Saltar a navegación, búsqueda ANTLR Apareció en: 1988 Desarrollador: Terence Parr y Colaboradores Última versión: 3.2 (23 09 2009) Influido por: PCCTS Sistema operativo: Linux …   Wikipedia Español

  • ANTLR — ist ein objektorientierter Parsergenerator, der seit 1989 von Terence Parr an der Universität von San Francisco entwickelt wird. Die Abkürzung ANTLR steht für ANother Tool for Language Recognition.[1] Inhaltsverzeichnis 1 Beschreibung 2 Beispiel …   Deutsch Wikipedia

  • ANTLR — Автор Терренс Парр и другие Написана на Java Первый выпуск Февраль 1992 Аппаратная платформа Кроссплатформенное программное обеспечение Последняя версия 3.4 (18 июля 2011) Состояние …   Википедия

  • ANTLR — Dernière version 3.2 (23 septembre 2009) [ …   Wikipédia en Français

  • ANTLR — Infobox Software name = ANTLR caption = author = Terence Parr and others developer = released = February 1992 latest release version = 3.1 latest release date = release date|2008|08|12 programming language = Java operating system = platform =… …   Wikipedia

  • ANTLR Studio — Infobox Software name = ANTLR Studio genre = Integrated development environment website = [http://placidsystems.com http://placidsystems.com] ANTLR Studio is an IDE for the ANTLR parser generator. It plugs into the Eclipse development environment …   Wikipedia

  • Antlr — …   Википедия

  • Syntactic predicate — A syntactic predicate specifies the syntactic validity of applying a production in a formal grammar and is analogous to a semantic predicate that specifies the semantic validity of applying a production. It is a simple and effective means of… …   Wikipedia

  • LL parser — An LL parser is a top down parser for a subset of the context free grammars. It parses the input from Left to right, and constructs a Leftmost derivation of the sentence (hence LL, compared with LR parser). The class of grammars which are… …   Wikipedia

  • LL-анализатор — Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка. Статью следует исправить согласно стилистическим правилам Википедии …   Википедия

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”