Sunteți pe pagina 1din 9

Universidad Mariano Glvez

Sede Retalhuleu
Facultad ingeniera en sistemas cc

Herramientas para generar compiladores

Gilberto Vinicio Conde Gonzalez


Carnet- 2790-13-6286
Compiladores
Ing. Edgar Matul Garca

Introduccin
Al igual que cualquier sistema de programacin para poder crear
podemos tomar en cuenta utilizar un editor para poder programar
nuestro compilador, existen muchas herramientas para facilitarnos el
trabajo, hay unos ms eficaces que otras, en esta ocasin vamos hablar
de las diferentes herramientas que podemos utilizar.

HERRAMIENTAS PARA GENERAR COMPILADORES


Herramientas tradicionales
- Lex/Yacc
- Pclex
- Pcyacc
- Bison
- Flex
Ventajas:
- Generan analizadores eficientes, incluso ms que los que pudiramos hacer
de manera manual.
- Los analizadores ascendentes reconocen la mayor parte de los lenguajes
Desventajas:
- Yacc usa herramientas externas para que le provean los tokens necesarios
- Las acciones semnticas asociadas con las producciones de los no terminales
de las gramticas son difciles de depurar
- Yacc no genera rboles de anlisis sintctico
- Mezcla las especificaciones sintcticas con las semnticas
- Incrementos en la dificultad del trabajo de depuracin de puesto que los
errores que cometen el fichero de especificacin con solo visibles en el
analizador generado.
Herramientas de nueva generacin
ANTLR
- Se considera el lex/yacc del nuevo milenio.
- Genera rboles sintcticos descendentes .
- Escrito ntegramente en JAVA.
- Genera cdigo en JAVA o C++.
Ventajas:
- Buena integracin de los analizadores lxicos y sintcticos
- El cdigo generado por ANTLR es mas fcil de entender y depurar que el
YACC.
- Las especificaciones gramaticales de ANTLR permiten la notacin BNF y
generan rboles de anlisis sintctico.

Desventajas:
- Genera analizadores menos eficientes que los generados por YACC.
- Los ficheros de especificacin de ANTLR son muy complejas.
- El proceso de depurado consta de las siguientes fases:
1)

Escribir el cdigo de acciones.

2)

Compilar el fichero de especificaciones

3)

Compilar y ejecutar el programa generado

4)

Localizar errores del programa

5)

Corregir errores en el fichero de especificaciones

JAVACC
- Inicialmente se llamo JACK.
- Similar al ANTLR.
- Analizador ascendente.
Ventajas:
- Buena integracin y los analizadores lxicos y sintctico.
- Genera analizadores sintcticos descendentes basados en la gramtica.
- Incluye la herramienta JJTREE para generar rboles sintcticos.
Desventajas:
- Las mismas que ANTLR

Otras herramientas
BYACC/JAVA
- Extensin de YACC para generar cdigo JAVA en vez de C/C++.
- Fichero de especificaciones igual que YACC
- Cdigo y declaraciones de lenguaje escritos en JAVA.
COCO/JAVA
- Generados de compiladores que a partir de la descripcin del lenguaje
mediante una gramtica LL genera un analizador sintctico y un analizador
lxico para dicho lenguaje.
CUP

- Versin LEX/YACC para JAVA (su forma de trabajo es anloga).


JACCIE
- JAVA BASED COMPILER.-Compiler in an Interactive Environment.
- Herramienta educativa que se puede utilizar para visualizar las tcnicas de
compilacin.
- Dos principales componentes: un generador de analizadores lxicos y una
variedad de generadores de generadores sintcticos.
JELL
- Es un generador de analizadores sintcticos que genera analizadores
descendentes a partir de gramticas LL.
Kits para la construccin de compiladores

COKTAIL
Conjunto de herramientas para construir compiladores
- REXgenerador de analizadores lxicos.
- LALRgenerador de analizadores sintcticos.
- ELLgenerador de analizadores sintcticos.
- ASTgenerador de rboles sintcticos.
- AGpermite procesar gramticas atribuidas.

ELI
- Combina una variedad de herramientas estndar para implementar potentes
estrategias en la construccin de compiladores.
- Se pueden generar automticamente implementaciones de lenguajes
completos a partir de las especificaciones de la aplicacin.
- Contiene libreras de especificaciones reusables.
PCCT
- Escrito inicialmente en C++ para generar compiladores en C++.
- Portado a JAVA y llamado ANTLR.XX
- Consta de 3 herramientas:

ANTLRgenerador de analizadores de sintcticos

DLGgenerador de analizadores lxicos

SORCERERgenerador de rboles sintcticos

HERRAMIENTAS PARA GENERAR COMPILADORES


Herramientas tradicionales
- Lex/Yacc
- Pclex
- Pcyacc
- Bison
- Flex
Ventajas:
- Generan analizadores eficientes, incluso ms que los que pudiramos hacer
de manera manual.
- Los analizadores ascendentes reconocen la mayor parte de los lenguajes
Desventajas:
- Yacc usa herramientas externas para que le provean los tokens necesarios
- Las acciones semnticas asociadas con las producciones de los no terminales
de las gramticas son difciles de depurar
- Yacc no genera rboles de anlisis sintctico
- Mezcla las especificaciones sintcticas con las semnticas
- Incrementos en la dificultad del trabajo de depuracin de puesto que los
errores que cometen el fichero de especificacin con solo visibles en el
analizador generado.
Herramientas de nueva generacin
ANTLR
- Se considera el lex/yacc del nuevo milenio.
- Genera rboles sintcticos descendentes .
- Escrito ntegramente en JAVA.
- Genera cdigo en JAVA o C++.
Ventajas:
- Buena integracin de los analizadores lxicos y sintcticos
- El cdigo generado por ANTLR es mas fcil de entender y depurar que el
YACC.
- Las especificaciones gramaticales de ANTLR permiten la notacin BNF y
generan rboles de anlisis sintctico.
Desventajas:
- Genera analizadores menos eficientes que los generados por YACC.
- Los ficheros de especificacin de ANTLR son muy complejas.
- El proceso de depurado consta de las siguientes fases:
1) Escribir el cdigo de acciones.
2) Compilar el fichero de especificaciones
3) Compilar y ejecutar el programa generado
4) Localizar errores del programa

5)

Corregir errores en el fichero de especificaciones

JAVACC
- Inicialmente se llamo JACK.
- Similar al ANTLR.
- Analizador ascendente.
Ventajas:
- Buena integracin y los analizadores lxicos y sintctico.
- Genera analizadores sintcticos descendentes basados en la gramtica.
- Incluye la herramienta JJTREE para generar rboles sintcticos.
Desventajas:
- Las mismas que ANTLR

Otras herramientas
BYACC/JAVA
- Extensin de YACC para generar cdigo JAVA en vez de C/C++.
- Fichero de especificaciones igual que YACC
- Cdigo y declaraciones de lenguaje escritos en JAVA.
COCO/JAVA
- Generados de compiladores que a partir de la descripcin del lenguaje
mediante una gramtica LL genera un analizador sintctico y un analizador
lxico para dicho lenguaje.
CUP
- Versin LEX/YACC para JAVA (su forma de trabajo es anloga).
JACCIE
- JAVA BASED COMPILER.-Compiler in an Interactive Environment.
- Herramienta educativa que se puede utilizar para visualizar las tcnicas de
compilacin.
- Dos principales componentes: un generador de analizadores lxicos y una
variedad de generadores de generadores sintcticos.
JELL
- Es un generador de analizadores sintcticos que genera analizadores
descendentes a partir de gramticas LL.

Kits para la construccin de compiladores


COKTAIL
Conjunto de herramientas para construir compiladores
- REXgenerador de analizadores lxicos.
- LALRgenerador de analizadores sintcticos.
- ELLgenerador de analizadores sintcticos.
- ASTgenerador de rboles sintcticos.
- AGpermite procesar gramticas atribuidas.
ELI
- Combina una variedad de herramientas estndar para implementar potentes
estrategias en la construccin de compiladores.
- Se pueden generar automticamente implementaciones de lenguajes
completos a partir de las especificaciones de la aplicacin.
- Contiene libreras de especificaciones reusables.
PCCT
- Escrito inicialmente en C++ para generar compiladores en C++.
- Portado a JAVA y llamado ANTLR.XX
- Consta de 3 herramientas:

ANTLRgenerador de analizadores de sintcticos

DLGgenerador de analizadores lxicos

SORCERERgenerador de rboles sintcticos

Conclusin
En este trabajo se conocieron brevemente algunas de las diferentes
herramientas que existen para desarrollar compiladores, as como algunas de
sus caractersticas, ventajas y desventajas de las mismas para poder tener la
teora de que herramienta podremos adquirir para nuestro proyecto a futuro.
Cada programa o mtodo tiene formas de como facilitar la creacin de los
compiladores, aunque no existir la mejor aplicacin todas cuentas con
desventajas una de la otra y debemos saber cmo adecuar las herramientas
para el mejor resultado.