Vous êtes sur la page 1sur 15

Pontificia Universidad Catlica del Ecuador

ANTLRWORKS
Compiladores e Intrpretes

INGENIERO: Damin Nicolalde.


INTEGRANTES:
Dayana
Amoguimba.
Andrea
Caizares.
Andrs Jami.
David Arauz.
Rodolfo lvaro.
PARCIAL: 3 ero
FECHA: 20 de Junio de 2016

Tabla de contenido
1. Objetivos.........................................................................................3

Pontificia Universidad Catlica del Ecuador

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

3. Instalacin para Windows...............................................................4


4. ANTLRWORKS (Entorno de desarrollo)............................................6
5. Reglas lxicas y sintcticas............................................................7
6. reas de Aplicacin........................................................................7
7. Ejemplo (Evaluador de expresiones)...............................................8
8. Recomendaciones.........................................................................13
9. Conclusiones.................................................................................13
10. Bibliografa.................................................................................13

Compiladores e Intrpretes

Pontificia Universidad Catlica del Ecuador

1. Objetivos

Demostrar mediante ANTLRWorks la construccin de reconocedores,


interpretes, compiladores y traductores de lenguaje mediante
descripciones gramaticales.
Describir detalladamente los pasos para su instalacin en las
diferentes plataformas como son Windows, Mac OSX, Linux.
Fundamentar en base a la teora la forma de usar el entorno de
desarrollo, basndonos en un ejercicio complementario.

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.

2.2 Caractersticas nicas


El rendimiento y la consistencia de los algoritmos de anlisis de cdigo
Tunnel Vision Labs 'nos permite proveer varias caractersticas adicionales
para ayudar a los usuarios a entender grandes cantidades de cdigo con
menos esfuerzo. ANTLRWorks 2 permite a los usuarios se ciernen sobre un
elemento en una gramtica para ver notas con informacin acerca de la
regla se hace referencia.

2.3 Interprete de la Gramtica


ANTLRWorks puede interpretar de inmediato una gramtica y probarlo en
contra de algunos de los ejemplos de entrada sin generar nada. Se obtiene
el rbol de anlisis, como resultado de la interpretacin de una gramtica.

Compiladores e Intrpretes

Pontificia Universidad Catlica del Ecuador

Imaginar que pasa alguna entrada a una regla con su gramtica


y al instante ver cmo la regla llega a coincidir con la entrada.

2.4 Cdigo de Generacin


ANTLRWork tiene la generacin de cdigo en cualquier idioma y se genera a
travs de la salida= opcin de idioma.
ANTLRWorks sabe cmo construir un instrumento de prueba, se compila
todo, y pone en marcha el anlisis del programa.

3. Instalacin para Windows


1. I

Figura 1.0
2. Seleccionamos el primer enlace Version 1.5 - for Windows, Linux and
Mac OS X

Figura 2.0

Compiladores e Intrpretes

Pontificia Universidad Catlica del Ecuador

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

Pontificia Universidad Catlica del Ecuador

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

Pontificia Universidad Catlica del Ecuador

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

Pontificia Universidad Catlica del Ecuador

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

@lexer::header {package test;}

@members {
/** Map variable name to Integer object holding value */
HashMap memory = new HashMap();
}

prog: stat+ ;

stat: expr NEWLINE {System.out.println($expr.value);}


| ID '=' expr NEWLINE

Compiladores e Intrpretes

Pontificia Universidad Catlica del Ecuador

{memory.put($ID.text, new Integer($expr.value));}

| NEWLINE
;

expr returns [int value]


: e=multExpr {$value = $e.value;}
( '+' e=multExpr {$value += $e.value;}
| '-' e=multExpr {$value -= $e.value;}
)*
;

multExpr returns [int value]


: e=atom {$value = $e.value;} ('*' e=atom {$value *= $e.value;})*
;

atom returns [int value]


: INT {$value = Integer.parseInt($INT.text);}
| ID
{
Integer v = (Integer)memory.get($ID.text);
if ( v!=null ) $value = v.intValue();
else System.err.println("undefined variable "+$ID.text);
}
| '(' e=expr ')' {$value = $e.value;}
;

ID : ('a'..'z'|'A'..'Z')+ ;
INT : '0'..'9'+ ;
NEWLINE:'\r'? '\n' ;
WS : (' '|'\t')+ {skip();} ;

Compiladores e Intrpretes

Pontificia Universidad Catlica del Ecuador

8
Figura 7.1
Stat

Figura 7.2

expr

Compiladores e Intrpretes

Pontificia Universidad Catlica del Ecuador

8
Figura 7.3

multExpr

Figura 7.4

Compiladores e Intrpretes

Pontificia Universidad Catlica del Ecuador

atom

Figura 7.5

ID

Figura 7.6

Compiladores e Intrpretes

Pontificia Universidad Catlica del Ecuador

INT

Figura 7.7
NEWLINE

Compiladores e Intrpretes

Pontificia Universidad Catlica del Ecuador

WS

Figura 7.8

Ejecutando la expresin: (3+4)+(5+8)-4

Figura 7.9

Compiladores e Intrpretes

Pontificia Universidad Catlica del Ecuador

8. Recomendaciones

Es factible tener el conocimiento de las plataformas en las que se


puede trabajar, y conocer sobre los IDE correcto para el desarrollo.
Es recomendable empezar con un aprendizaje terico sobre la
ANTLRWorks, sus ventajas, desventajas, modelo de trabajo y todo
aquello que ayude a la elaboracin del primer proyecto en dicha
herramienta.
Otro punto importante es el entorno de desarrollo de ANTLRWorks,
quizs la parte ms esencial para el desarrollo, tratar de
familiarizarse y conocer sobre la herramienta para tener una facilidad
al momento de la creacin de estructuras intermedias de anlisis.

9. Conclusiones

ANTLRWorks es una importante herramienta que facilita de gran


manera el reconocimiento de lenguajes.
En definitiva ANTLRworks tiene una gran facilidad para
implementarse por el simple hecho de estar creado en Java puede
generar cdigo Java,C, C++, PYTHON, PERL, DELPHI entre otros.
Por ultimo dicha herramienta es una gran visualizador de software,
quizs uno de los ms importantes.
Hemos logrado la construccin de intrpretes, compiladores y
traductores de lenguaje mediante descripciones gramaticales.
Mediante el documento presentando se ha logrado cubrir el proceso
de instalacin en las diferentes plataformas.

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

ANTLR. (15 de 06 de 2016). Obtenido de http://www.antlr.org/


ANTLR.
(19 de
06
de
2016).
https://es.wikipedia.org/wiki/ANTLR

Wikipedia.

Obtenido

GRAMATICAS FORMALES (15 de 06 de 2016). Obtenido


https://gramaticasformales.wordpress.com/category/antlr/

Compiladores e Intrpretes

de
de

Vous aimerez peut-être aussi