Sei sulla pagina 1di 5

H ERRAMIENTAS

UTILIDADES Y G ENERADORES DE C OMPILADORES


A continuacin se muestran algunas de las herramientas disponibles que pueden utilizarse para la realizacin del Proyecto de Compiladores. Todas estas herramientas funcionan bajo Windows.

Herramientas para la construccin de compiladores

Herramienta Lenguaje Bison COCO/R Flex Lex SDGLL1 TS 2006 TS TS-OO YACC C C/C++ C C exe C/C++ C C++ C

Descripcin Generador de Analizadores Sintcticos Ascendentes tipo YACC Generador de Analizadores Lxicos y Sintcticos Descendentes Recursivos Generador de Analizadores Lxicos tipo Lex Generador de Analizadores Lxicos Sistema Detector de Gramticas LL(1) Tipo abstracto de datos Tabla de Smbolos de uso sencillo (beta 0.4) Tipo abstracto de datos Tabla de Smbolos Tipo abstracto de datos Tabla de Smbolos Generador de Analizadores Sintcticos Ascendentes LR(1)

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: Las acciones semnticas asociadas con las producciones de los no terminales de las gramticas son difciles de depurar - Mezcla las especificaciones sintcticas con las semnticas

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

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.

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.

PCCT
- Escrito inicialmente en C++ para generar compiladores en C++. - Consta de 3 herramientas: ANTLRgenerador de analizadores de sintcticos DLGgenerador de analizadores lxicos SORCERERgenerador de rboles sintcticos

UNIDAD IV.- Herramientas bsicas para generar compiladores.


Para la creacin de cdigo, es importante considerar los siguientes aspectos: la arquitectura de software para la cual se va a desarrollar el generador de cdigo, las caractersticas especificas del lenguaje de programacin para el cual se har el generador, el lenguaje con el que se desarrollar el propio generador.

Afortunadamente para cada lenguaje de programacin para el cual se vaya a desarrollar un compilador, existen variadas herramientas que pueden ayudar a su construccin. Estas herramientas pueden hacer muchas de las tareas que realizan los compiladores, tales como la bsqueda de patrones, la escritura de cdigo, el anlisis sintctico, el anlisis lxico y la optimizacin de cdigo

4.1.- Herramientas tradicionales.

Lex/yacc: es un programa para generar analizadores lxicos, se utiliza comnmente con el programa yacc que se utiliza para generar anlisis sintctico. Lex, escrito originalmente por Eric Schmidt y Mike Lesk, es el analizador lxico estndar en los sistemas Unix, y se incluye en el estndar de POSIX. Lex toma como entrada una especificacin de analizador lxico y devuelve como salida el cdigo fuente implementando el analizador lxico en C.

Yacc: es una herramienta general para describir la entrada a un programa de computadora. El usuario especifica las estructuras de su entrada, junto con el cdigo que puede invocarse como cada estructura como se reconoce y yacc devuelve una subrutina que controla el proceso de entrada, con frecuencia, es conveniente y apropiado que la mayor parte del flujo de control en la aplicacin del usuario al cargo de este subprograma. Fue

desarrollado por Stephen C. Johnson en para Unix. El nombre es un acrnimo de " Sin embargo, otro compilador de compiladores . " Se genera un programa de anlisis (por parte de un compilador que intenta darle sentido sintctico del cdigo fuente), y genera cdigo para C.

Flex: herramienta que implementa un analizador lxico. Es una herramienta para generar escneres: programas que reconocen patrones lxicos en un texto. Flex lee los ficheros de entrada dados, o la entrada estndar si no se le ha indicado ningn nombre de fichero, con la descripcin de un escner a generar. La descripcin se encuentra en forma de parejas de expresiones regulares y cdigo C, denominadas reglas. Flex genera como salida un fichero fuente en C

Bison: herramienta que implementa un analizador sintctico. Es un generador de analizadores sintcticos de propsito general perteneciente al proyecto GNU disponible para prcticamente todos los sistemas operativos. Bison convierte la descripcin formal de un lenguaje, escrita como una gramtica libre de contexto LALR, en un programa en C, C++, o Java que realiza anlisis sintctico. GNU bison tiene compatibilidad con Yacc.

PCyacc.

PClex.

4.2.-Herramientas de nueva generacin.

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), intrpretes, compiladores y traductores de lenguajes a partir de las descripciones gramaticales de los mismos (conteniendo acciones semnticas a realizarse en varios lenguajes de programacin). ANTLR genera un programa que determina si una sentencia o palabra pertenece a dicho lenguaje (reconocedor), utilizando algoritmos LL(*) de parsing. Si a dicha gramtica, se le aaden acciones escritas en un lenguaje de programacin, el reconocedor se transforma en un traductor o interprete. Adems, proporciona facilidades para la creacin de rboles sintcticos y estructura para recorrerlos. ANTLR es un proyecto bajo licencia BSD, viniendo con todo el cdigo fuente disponible, y preparado para su instalacin bajo plataformas Linux, Windows y Mac OS X. Actualmente ANTLR genera cdigo Java, C, C++, C#, Python, Perl, Delphi, Ada95, JavaScript y Objective-C.

JavaCC (Java Compiler Compiler): es un generador de analizadores sintcticos de cdigo abierto para el lenguaje de programacin Java, es similar a Yacc en que genera un parser para una gramtica presentada en notacin BNF, con la diferencia de que la salida es en cdigo Java y genera analizadores descendentes. Adems agrega un constructor de rboles conocido como: JJTree, construye rboles de abajo hacia arriba.

4.3.- Otras herramientas.

BYACC/JAVA: es una extensin de YACC para generar cdigo JAVA en vez de C/C++, que genera ficheros de especificaciones igual que YACC y sus salidas son cdigo y declaraciones de lenguaje escritos en JAVA.

COCO/JAVA: es una herramienta de distribucin de Java para Linux, es un generador 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 o sea es un meta compilador.

CUP: versin LEX/YACC para JAVA (su forma de trabajo es anloga).

JELL: es un generador de analizadores sintcticos que genera analizadores descendentes a partir de gramticas LL, tambin es un meta compilador.

4.4.- 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. Consta de 3 herramientas:

ANTLRgenerador de analizadores de sintcticos DLGgenerador de analizadores lxicos SORCERERgenerador de rboles sintcticos

Potrebbero piacerti anche