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.
Ventajas:
Como ventajas 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.
Ejemplos:
Numero 1
Definamos una gramática para el lenguaje de los paréntesis.
grammar prueba;
principal
: ’(’ principal ’)’|;
grammar prueba;
principal
: SI principal1 (CONTRA principal)?|ALGO;
principal1
: SI principal1|ALGO;
SI : ’sib’;
CONTRA : ’en_otro_caso’;
ALGO : ’algo’;
WS : (’\n’|’\t’|’\r’|’ ’)+{skip();};
Numero2
grammar suma;
start : expresion;
expresion
: NUMERO OPERADOR expresion| NUMERO;
NUMERO : ’0’..’9’+;
OPERADOR: ’+’;
ESPACIOS: (’\n’|’\r’|’\t’){skip();};
Ejercicios:
- Comprobar con varios inputs que la gramática acepta lo que se piensa.
- Añadir a la gramática las expresiones con el signo menos.
- Cuando se añade la multiplicación, ¿se debe de hacer como con la suma o la resta?
- Encontrar una gramatica para el palíndromo con tres letras a,b,c.
- Encontrar una gramática que genere todas las palabras formadas por letras a y b cuyos prefijos tengan al menos más aes que bes.
- Encontrar una gramática que acepte solo los numeros binarios con el mismo número de ceros que unos.
Anexo:
La imagen nos da una visión global de un sistema. Describe brevemente el proceso general que se seguirá durante la compilación, ensamblado y ejecución del script, y cada uno de los módulos que van a intervenir en el proceso.
Si deseamos agregar antlr indevidualmente a un proyecto de Eclipse o de Netbeans podemos seguir ir al siguiente link Ir en el que se nos explica paso a paso el procedimiento para realizar esto. El sitio esta en Ingles pero es básico, creo lo comprenderán, sino pueden hacer uso de un traductor de la web o sino escribirme cualquier inquietud que dichosa los guiare.
Enlaces:Web principal de ANTLR
Web principal de ANTLRWorks
Wiki de documentación (Docs, Tutoriales, Ejemplos...)
No hay comentarios:
Publicar un comentario