miércoles, 2 de febrero de 2011

ANTL



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