sábado, 20 de noviembre de 2010

UNIDAD 4: HERRAMIENTAS PARA GENERAR COMPILADORES

ESTA UNIDAD TRATA SOBRE LAS DIFERENTES HERRAMIENTAS CON LAS QUE SE CUENTA HOY EN DIA PARA PODER CREAR NUESTRO PROPIO COMPILADOR, CONOCIENDO CADA UNA DE LAS HERRAMIENTAS QUE A CONTINUCACION SE DESCRIBEN...



HERRAMIENTAS TRADICIONALES
HERRAMIENTAS DE NUEVA GENERACION
OTRAS HERRAMIENTAS
KIT PARA LA CONSTRUCCION DE COMPILADORES

HERRAMIENTAS TRADICIONALES


- Lex/Yacc: Sirven, respectivamente, para generar analizadores lexicográficos y analizadores sintácticos para su aprovechamiento como partes de los compiladores de los lenguajes de programación; estos usos de Lex y Yacc no son los únicos, aunque sí son los que aquí se consi¬deran principalmente.
Para entender cabalmente el funcionamiento de los generadores de analizadores, hay que co¬nocer la teoría de compiladores relacionada con las tareas de análisis de lenguajes.

Cuando se emplea el término Lex, se mencionan dos posibles significados:
a) una notación para especificar las características lexicográficas de un lenguaje de programación,
b) un traductor de especificaciones lexicográficas.

- Pclex: Permite mostrar cómo, utilizando expresiones regulares, se puede combinar la especificación
de patrones con acciones, por ejemplo, haciendo entradas de una tabla de símbolos cuya ejecución se pueda pedir a un analizador léxico.
- Flex: Es un marco de trabajo de código abierto gratuito y altamente productivo para la creación de aplicaciones web expresivas que se implantan coherentemente en exploradores, ordenadores de sobremesa y sistemas operativos


HERRAMIENTAS DE NUEVA GENERACION


ANTLR:(ANother Tool for Language Recognition – otra herramienta para reconocimiento de lenguajes) es una herramienta creada principalmente por Terence Parr, que opera sobre lenguajes, proporcionando un marco para construir reconocedores (parsers), intérpretes, compiladores y traductores de lenguajes a partir de las descripciones gramaticales de los mismos (conteniendo acciones semánticas a realizarse en varios lenguajes de programación).
- Se considera el lex/yacc del nuevo milenio.
- Genera árboles sintácticos descendentes .
- Escrito íntegramente en JAVA.
- Genera código en JAVA o C++.
JAVACC: (Java Compiler Compiler) es un generador de analizadores sintácticos de código abierto para el lenguaje de programación Java. JavaCC es similar a Yacc en que genera un parser para una gramática presentada en notación BNF, con la diferencia de que la salida es en código Java. A diferencia de Yacc, JavaCC genera analizadores descendentes (top-down), lo que lo limita a la clase de gramáticas LL(K) (en particular, la recursión desde izquierda no se puede usar).
- Inicialmente se llamo JACK.
- Similar al ANTLR.
- Analizador ascendente.

OTRAS HERRAMIENTAS


BYACC/JAVA
- Extensión de YACC para generar código JAVA en vez de C/C++.
- Fichero de especificaciones igual que YACC
- Código y declaraciones de lenguaje escritos en JAVA.
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.
- Dos principales componentes: un generador de analizadores léxicos y una variedad de generadores de generadores sintácticos.
JELL
- Es un generador de analizadores sintácticos que genera analizadores descendentes a partir de gramáticas LL.

KIT PARA LA CONSTRUCCION 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.
- Contiene librerías de especificaciones reusables.
PCCT
- Escrito inicialmente en C++ para generar compiladores en C++.
- Portado a JAVA y llamado ANTLR.XX
- 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: