You are on page 1of 18

Herramientas bsicas

para generar
compiladores.
Generacin de cdigo
La arquitectura de software
Las caractersticas del lenguaje de programacin
El lenguaje con el que se desarrollar el generador.

Herramientas para generar
compiladores
Bsqueda de patrones
Escritura de cdigo
Anlisis sintctico
Anlisis lxico
Optimizacin de cdigo

Herramientas tradicionales
Lex/yacc
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
Fue desarrollado por Stephen C. Johnson para Unix.
El nombre es un acrnimo de " Sin embargo, otro compilador de
compiladores"
Genera un programa de anlisis (por parte de un compilador que
intenta darle sentido sintctico al 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 archivos de entrada dados, o la entrada estndar si no se le
ha indicado ningn nombre de archivo, 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 archivo 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.
Herramientas de nueva generacin.
ANTLR (ANother Tool for Language Recognition otra herramienta para
reconocimiento de lenguajes)
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.
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.
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.
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.


Backus-Naur form (BNF)
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
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
Generador de analizadores sintcticos que genera analizadores
descendentes a partir de gramticas LL, tambin es un meta
compilador.
Kits para la construccin de
compiladores.

COKTAIL
Conjunto de herramientas para construir compiladores.
REX generador de analizadores lxicos.
LALR generador de analizadores sintcticos.
ELL generador de analizadores sintcticos.
AST generador de rboles sintcticos.
AG permite 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:
ANTLR generador de analizadores de sintcticos
DLG generador de analizadores lxicos
SORCERER generador de rboles sintcticos