miércoles, 2 de febrero de 2011

ANTLR

Es el nombre de a generador del programa de análisis ese aplicaciones LL (*) análisis. ANTLR es el sucesor a Sistema de herramienta de la construcción del recopilador de Purdue (PCCTS), primero convertido en 1989, y está en el desarrollo activo. Su sostén es profesor Parr de Terence de Universidad de San Francisco.

Las reglas de ANTLR se expresan en un formato deliberadamente similar a EBNF en vez de expresión regular sintaxis empleado por otros generadores del programa de análisis.

En el momento que, ANTLR apoya la generación de código en las idiomas siguientes: C, C++,Java, Python, C#, Objetivo-c. ANTLR 3 está bajo cláusula 3 Licencia del DEB.

Es un generador de lenguajes, a partir de la especificación de un lenguaje a partir de una gramática podemos:

  • Reconocer si un programa (o palabra) cumple una especificación.
  • Traducir el programa (o palabra) a otro lenguaje.
  • Realizar alguna serie de órdenes.

A veces nos interesara definir el lenguaje de una forma más laxa. Admitimos palabras/programas que en principio no tengan mucho sentido porque:

  • Es más fácil definir la gramática.
  • La estructura que define expresa la estructura que buscamos.

Para introducir una gramática en ANTLR, se debe utilizar la notación EBNF. ATENCIÓN, DIFERENTES FORMAS DE DECIR LA GRAMÁTICA NO FUNCIONAN IGUAL.

Ejemplo de utilización de ANTLR

Definamos una gramática para el lenguaje de los paréntesis.

grammar prueba;

principal

: ’(’ principal ’)’|;

Primera prueba, ¿Como definir una gramática para que acepte lo mismo añadiendo los corchetes?

Encontrando una Grámatica

Queremos estudiar un lenguaje de programación.

¿Donde está la información?

¿Que diferencia hay entre elegir una gramática u otra?

Ejemplo de utilización de ANTLR

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();};

grammar suma;

start : expresion;

expresion

: NUMERO OPERADOR expresion| NUMERO;

NUMERO : ’0’..’9’+;

OPERADOR: ’+’;

ESPACIOS: (’\n’|’\r’|’\t’){skip();};

Webgrafia:

http://www.worldlingo.com/ma/enwiki/es/ANTLR

http://personales.unican.es/gomezd/Talf/antlr.pdf

Tambien:

http://www.worldlingo.com/ma/enwiki/es/Compiler-compiler ( generador del programa de análisis)

http://www.worldlingo.com/ma/enwiki/es/LL_parser (LL (*))

http://www.worldlingo.com/ma/enwiki/es/Terence_Parr ( Parr de Terence)

http://www.worldlingo.com/ma/enwiki/es/Extended_Backus%E2%80%93Naur_Form ( EBNF)

http://www.worldlingo.com/ma/enwiki/es/Regular_expression (Expresion regular)

http://www.sgoliver.net/blog/?page_id=30 (Libro Gratuito ANTLR 3 Proyecto FKScript)

No hay comentarios:

Publicar un comentario