ANTLR

ANTLR toma como entrada una gramática que especifica un idioma y genera como salida, el código fuente de un reconocedor para ese idioma. Por el momento, ANTLR apoya la generación de código en los lenguajes de programación C, C #, Java, Objective-C y Python. Un lenguaje se especifica mediante una gramática libre de contexto que se expresa mediante extendido Backus Naur Formulario EBNF.

Permite la generación de analizadores lexicos, analizadores de árboles y programas de análisis combinado. Los Analizadores lexicos pueden generar automáticamente los árboles de sintaxis abstracta que pueden ser procesados con programas de análisis de árbol. ANTLR proporciona una notación única coherente para especificar analizadores lexicos, y analizadores de árboles. Esto está en contraste con el analizador de otros generadores de léxico y añade en gran medida a la facilidad de la herramienta de uso.

De forma predeterminada ANTLR lee una gramática y genera un reconocedor para el lenguaje definido por la gramática (es decir, un programa que lee un flujo de entrada y genera un error si la secuencia de entrada no se ajusta a la sintaxis especificada por la gramática). Si no hay errores de sintaxis a continuación, la acción predeterminada es simplemente para salir sin imprimir cualquier mensaje. Con el fin de hacer algo útil con el lenguaje, las acciones se puede unir a los elementos de la gramática en la gramática. Estas acciones están escritos en el lenguaje de programación en el que se genera el reconocedor. Cuando el reconocedor se está generando, las acciones se insertan en el código fuente del reconocedor en los puntos apropiados. Las acciones pueden ser utilizados para construir y comprobar las tablas de símbolos y emitir las instrucciones en un idioma de destino, en el caso de un compilador.

Tambien el ANTLR es una herramienta que proporciona un marco de trabajo para la construcción de reconocedores, intérpretes, compiladores y traductores de lenguajes a partir de gramáticas enriquecidas con acciones. En resumen proporciona todo lo necesario para el desarrollo de este tipo de sistemas, entre los más importantes:

  • Construcción de analizadores léxicos.
  • Construcción de analizadores sintácticos.
  • Mecanismos de construcción y recorrido de árboles de sintaxis abstracta (AST).
  • Mecanismos de tratamiento de plantillas.
  • Mecanismos de detección y recuperación de errores.

Como VENTAJAS adicionales que diferencian a ANTLR de otras herramientas similares podemos citar la posibilidad de generar el código de salida en diferentes lenguajes como Java, C, C++, C# o Python, y el hecho de disponer de un entorno de desarrollo propio llamado ANTLRWorks que nos permitirá construir de una forma bastante amigable las gramáticas de entrada a la herramienta, proporcionando representaciones gráficas de las expresiones y árboles generados, e incluyendo un intérprete y depurador propio.

VIDEOS

ANTLR

 

LINKS:

GUIA_ANTLR

ANTLR_EJ

EJEMP