ANTLRWORKS
Compiladores e Intrpretes
Tabla de contenido
1. Objetivos.........................................................................................3
2........................................................................Introduccin
2.1
Que es ANTLR...........................................................................3
2.2
Caractersticas nicas...............................................................3
2.3
Interprete de la Gramtica....................................................3
2.4
Cdigo de Generacin...........................................................4
Compiladores e Intrpretes
1. Objetivos
2. Introduccin
2.1 Que es ANTLR
ANTLR nos sirve para construccin de procesadores de lenguaje, generando
cdigo fuente en distintos lenguajes de programacin como JAVA, C++,
Pyton entre otros.
Podemos incorporar acciones semnticas para el tratamiento del fichero de
entrada.
ANTLR es una herramienta multiplataforma con un proyecto bajo licencia
BSD y ademas est escrita en Java por lo tanto podemos ejecutarla sin
ningn problema en entornos Mac OS, Windows o Linux.
Podemos utilizar una serie de Plugings para nuestro editor de texto favorito
o utilizar directamente el entorno de desarrollo ANTLRWORKS especfico
para esta herramienta con la licencia de BSD.
ANTLR es capaz de generar un analizador lxico, sintctico o semntico en varios
lenguajes (java, C++ y C#) a partir de unos ficheros escritos en un lenguaje propio,
este lenguaje es simplemente una serie de reglas EBNF y un conjunto de
construcciones auxiliares.
Compiladores e Intrpretes
Figura 1.0
2. Seleccionamos el primer enlace Version 1.5 - for Windows, Linux and
Mac OS X
Figura 2.0
Compiladores e Intrpretes
8
4. Ejecutamos l .jar que se descargo
Figura 3.0
5. Seleccionamos la opcin ANTLR 3 para crear un nuevo proyecto
Figura 4.0
6. Le damos un nombre a nuestro proyecto y presionamos OK
Figura 5.0
Compiladores e Intrpretes
8
4. ANTLRWORKS (Entorno de desarrollo)
Contiene:
Editor sensible al contexto
Interprete ANTLR
Compilador ANTLR
Depurador ANTLR
Durante el desarrollo de nuestra gramtica podemos visualizar los
diagramas sintcticos.
Figura 6.0
Durante el modo de depuracin podemos visualizar el rbol sintctico de la
cadena que estemos procesando, as como ver el contenido de la pila del
analizador sintctico.
Figura 7.0
Compiladores e Intrpretes
8
5. Reglas lxicas y sintcticas
Una de las partes ms complicadas en el desarrollo de un procesador de
lenguaje es la escritura de las reglas lxico sintcticas
Tenemos que escribir toda la especificacin en un nico fichero que tendr
extensin (.g)
Se dispone de:
Smbolos lxicos: Comienzan con mayscula.
Smbolos auxiliares: Comienzan con minscula.
Comentarios:
o // Una lnea
o /* Varias
Lneas*/
Literal entre comillas simples: a
o Negacin: ~x
o Alternativas (o): |
o 0 o ms ocurrencias: *
o 1 o ms ocurrencias: +
o 0 o 1 ocurrencia: ?
Reglas:
o <smbolo lxico o auxiliar> : <definicin1> | <definicin2> |
<definicin_i> ;
Reglas sintcticas en EBNF (Extended Backus-Naur Form): Se permite
+, *, ? en las partes derechas de las reglas.
6. reas de Aplicacin
ANTLR se usa dentro de varias aplicaciones conocidas en el mundo actual:
La red social Twitter la utiliza para parsear las consultas que se
realizan diariamente, que son alrededor de 2 millones.
Oracle utiliza dentro del IDE SQL Developer.
NetBeans analiza C++ con la ayuda de ANTLR.
Lex Machina1 lo utiliza para la extraccin de informacin de textos
legales
El lenguaje HQL (Hibernate object-relational mapping framework) est
construido en base a ANTLR.
Compiladores e Intrpretes
8
7. Ejemplo (Evaluador de expresiones)
Programa
Este programa consta de una gramtica completa que evala las
expresiones que contengan +, - , * adems de asignaciones de variables.
Para el almacenamiento y posterior presentacin de los datos, estos fueron
almacenados en una tabla Hash simple.
Para ejecutar el programa se requiere la versin de ANTLRWorks 1.5 y el JRE
de java.
El intrprete permite para probar rpidamente la gramtica con una entrada
de muestra. Por ejemplo, se escribe la entrada "(3+4)+(5+8)-4" (y volver),
asegrese de que la regla "prog" se selecciona en el men emergente y
haga clic en el botn para ejecutar el intrprete. El intrprete muestra el
rbol de anlisis, similar al presentado a continuacin en la figura 7.9:
El cdigo fuente de la aplicacin es el siguiente el cual generar tanto
parsers como lexers, el nico proceso necesario es crear un arhivo .g con el
nombre Expr y copiar todo el cdigo:
grammar Expr;
@header {
package test;
import java.util.HashMap;
}
@members {
/** Map variable name to Integer object holding value */
HashMap memory = new HashMap();
}
prog: stat+ ;
Compiladores e Intrpretes
| NEWLINE
;
ID : ('a'..'z'|'A'..'Z')+ ;
INT : '0'..'9'+ ;
NEWLINE:'\r'? '\n' ;
WS : (' '|'\t')+ {skip();} ;
Compiladores e Intrpretes
8
Figura 7.1
Stat
Figura 7.2
expr
Compiladores e Intrpretes
8
Figura 7.3
multExpr
Figura 7.4
Compiladores e Intrpretes
atom
Figura 7.5
ID
Figura 7.6
Compiladores e Intrpretes
INT
Figura 7.7
NEWLINE
Compiladores e Intrpretes
WS
Figura 7.8
Figura 7.9
Compiladores e Intrpretes
8. Recomendaciones
9. Conclusiones
10. Bibliografa
TUTORIAL ANTLR (2016, 13 de marzo), recuperado el 19 de Junio de
2016, de https://es.scribd.com/doc/310210235/Tutorial-ANTLR
GUA PRCTICA DE ANTLR 2.7.2 (2013, septiembre), recuperado el 19
de
Junio
de
2016,
de
http://www.lsi.us.es/~troyano/documentos/guia.pdf
Wikipedia.
Obtenido
Compiladores e Intrpretes
de
de