lunes, 22 de noviembre de 2010

HERRAMIENTAS PARA GENERAR COMPILADORES


Herramientas tradicionales
Lex/Yacc, Pclex, Pcyacc, Bison, Flex.
Ventajas: Generan analizadores eficientes, incluso más que los que pudiéramos hacer de manera manual.
- Los analizadores ascendentes reconocen la mayor parte de los lenguajes
Desventajas: Las acciones semánticas asociadas con las producciones de los no terminales de las gramáticas son difíciles de depurar
- Mezcla las especificaciones sintácticas con las semánticas
Herramientas de nueva generación

ANTLR

- Se considera el lex/yacc del nuevo milenio.
- Genera árboles sintácticos descendentes .
- Escrito íntegramente en JAVA.
- Genera código en JAVA o C++.
Ventajas:  Buena integración de los analizadores léxicos y sintácticos
- El código  generado por ANTLR es mas fácil  de entender y depurar que el YACC.
- Las especificaciones gramaticales de ANTLR permiten la notación BNF y generan árboles de análisis sintáctico.
Desventajas:  Genera analizadores menos eficientes que los generados por YACC.
- Los ficheros de especificación de ANTLR son muy complejas.
- El proceso de depurado consta de las siguientes fases:
1)    Escribir el código de acciones.
2)    Compilar el fichero de especificaciones
3)    Compilar y ejecutar el programa generado y Localizar errores del programa
4)    Corregir errores en el fichero de especificaciones

JAVACC

- Inicialmente se llamo JACK.
- Similar al ANTLR.
- Analizador ascendente.

Ventajas:

- Buena integración y los analizadores léxicos y sintáctico.
- Genera analizadores sintácticos descendentes basados en la gramática.
- Incluye la herramienta JJTREE para generar árboles sintácticos.
Desventajas:
- Las mismas que ANTLR
Otras herramientas

BYACC/JAVA

- Extensión de YACC para generar código JAVA en vez de C/C++.
- Fichero de especificaciones igual que YACC

COCO/JAVA

- Generados de compiladores que a partir de la descripción del lenguaje mediante una gramática LL genera un analizador sintáctico y un analizador léxico para dicho lenguaje.

CUP

 - Versión LEX/YACC para JAVA (su forma de trabajo es análoga).

JACCIE
- JAVA  BASED COMPILER.-Compiler in an Interactive Environment.
- Herramienta educativa que se puede utilizar para visualizar las técnicas de compilación.

JELL
- Es un generador de analizadores sintácticos que genera analizadores descendentes a partir de gramáticas LL.


Kits para la construcción de compiladores

COKTAIL

Conjunto de herramientas para construir compiladores
- REXàgenerador de analizadores léxicos.
- LALRàgenerador de analizadores sintácticos.
- ELLàgenerador de analizadores sintácticos.
- ASTàgenerador de árboles sintácticos.
- AGàpermite procesar gramáticas atribuidas.

ELI

- Combina una variedad de herramientas estándar para implementar potentes estrategias en la construcción de compiladores.
- Se pueden generar automáticamente implementaciones de lenguajes completos a partir de las especificaciones de la aplicación.

PCCT

- Escrito inicialmente en C++ para generar compiladores en C++.
- Consta de 3 herramientas:
·        ANTLRàgenerador de analizadores de sintácticos
·        DLGàgenerador de analizadores léxicos
·        SORCERERàgenerador de árboles sintácticos

1 comentario:

  1. Ala gran esta informacion me a servido de mucha ayuda, y disculpen mi pregunta pero todas esas son las unicas herramientas que hay para la construccion de compiladores?? o hay mas, esq soy estudiante de ingenieria en sistemas, me gustaria mas informacion acerca de esto, mi correo es nivek-5@hotmail.com agreguenme o publiquen sus correos

    ResponderEliminar