UNIVERSIDAD NACIONAL DE TRUJILLO
HERRAMIENTAS PARA
DESARROLLAR UN
ANALIZADOR
SINTÁCTICO
Autómatas y compiladores
INTEGRANTES:
Infante Chancafe, Ingrid
Terán Mejía, Lesly
2019
UNIVERSIDAD NACIONAL DE TRUJILLO
Contenido
INTRODUCCION ............................................................................................................................2
1. HERRAMIENTAS TRADICIONALES .........................................................................................3
a) Bison.................................................................................................................................3
b) Lex ....................................................................................................................................3
c) Flex ...................................................................................................................................3
d) Yacc ..................................................................................................................................3
2. HERRAMIENTAS DE NUEVA GENERACION ............................................................................4
a) ANTLR (ANother Tool for Language Recognition – otra herramienta para
reconocimiento de lenguajes) ..................................................................................................4
b) JavaCC (Java Compiler Compiler) ......................................................................................4
3. OTRAS HERRAMIENTAS ........................................................................................................4
a) BYACC/JAVA .....................................................................................................................4
b) COCO/JAVA ......................................................................................................................4
c) JELL ...................................................................................................................................4
d) JACCIE ...............................................................................................................................5
4. KIT PARA LA CONSTRUCCION DE COMPILADORES ...............................................................5
a) COKTAIL ............................................................................................................................5
b) ELI .....................................................................................................................................5
c) PCCT .................................................................................................................................5
AUTOMATAS Y COMPILADORES
UNIVERSIDAD NACIONAL DE TRUJILLO
INTRODUCCION
El uso y perfeccionamiento de los compiladores ha traído consigo el desarrollo
de herramientas que aportan a la realización de los mismos, estas se han ido
especializando en las diferentes fases del proceso de compilación, brindándole
a los desarrolladores una serie de facilidades a la hora de diseñar e implementar
un compilador. En el mundo existen diversas herramientas de apoyo de este tipo,
desarrolladas en diferentes lenguajes de programación, las cuales responden a
los intereses de los múltiples sistemas operativos. Entre las herramientas más
utilizadas se pueden encontrar el Flex, Yacc, Lex, Bison entre otras.
Bison
HERRAMIENTAS Lex/Yacc
TRADICIONALES
Flex
Yacc
ANTLR:(ANother Tool for Language Recognition – otra
HERRAMIENTAS DE herramienta para reconocimiento de lenguajes)
NUEVA GENERACION
JAVACC: (Java Compiler Compiler)
BYACC/JAVA
COCO/JAVA
OTRAS HERRAMIENTAS
JACCIE
JELL
COKTAIL
KITS PARA LA
CONSTRUCCIÓN DE ELI
COMPILADORES
PCCT
AUTOMATAS Y COMPILADORES
UNIVERSIDAD NACIONAL DE TRUJILLO
1. HERRAMIENTAS TRADICIONALES
a) Bison
Es un generador de analizadores sintácticos de propósito general que convierte
una descripción gramatical para una gramática independiente del contexto en un
programa en C que analice esa gramática. Es utilizado en un amplio rango de
analizadores de lenguajes, desde aquellos usados en simples calculadoras de
escritorio hasta complejos lenguajes de programación.
b) Lex
Es un generador de analizador léxico, que sirve para generar los token para la
siguiente fase. La principal característica de Lex es que va a permitir asociar
acciones descritas en C, a la localización de las Expresiones Regulares que se
hayan definido. Para ello Lex se apoya en una plantilla que recibe como
parámetro, y que se debe diseñar con cuidado. Internamente Lex va a actuar
como un autómata que localizará las expresiones regulares que se le describan,
y una vez reconocida la cadena representada por dicha expresión regular,
ejecutará el código asociado a esa regla.
c) Flex
Es una herramienta para generar escáneres: programas que reconocen
patrones léxicos en un texto. Flex lee los ficheros de entrada dados, o la entrada
estándar si no se le ha indicado ningún nombre de fichero, con la descripción de
un escáner a generar. Estas herramientas de apoyo han sido reescritas para
otros lenguajes, incluyendo Ratfor, EFL, ML,Ada, Java, Python, y Limbo. De esta
forma se ha logrado una mayor utilización de las mismas en diferentes
compiladores desarrollados sobre tecnologías libres. Teniendo en cuenta las
características de las aplicaciones antes mencionadas, se ha escogido para la
realización del compilador las herramientas Yacc y Lex. En muchos de los
compiladores desarrollados en el mundo suelen ser utilizados juntos. Yacc utiliza
una gramática formal para analizar un flujo de entradas, algo que Lex no puede
hacer con expresiones regulares simples (Lex se limita a los autómatas de
estados finitos simples). Sin embargo, Yacc no puede leer en un flujo de entradas
simple, requiere una serie de símbolos. Lex se utiliza a menudo para
proporcionar a Yacc estos símbolos.
d) Yacc
Es un programa para generar analizadores sintácticos. Las siglas del nombre
significan Yet Another Compiler Compiler, es decir, "Otro generador de
compiladores más". Genera un analizador sintáctico (la parte de un compilador
que comprueba que la estructura del código fuente se ajusta a la especificación
sintáctica del lenguaje) basado en una gramática analítica.Yacc genera el código
para el analizador sintáctico en el Lenguaje de programación C.
AUTOMATAS Y COMPILADORES
UNIVERSIDAD NACIONAL DE TRUJILLO
2. HERRAMIENTAS DE NUEVA GENERACION
a) 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). ANTLR genera un programa que determina
si una sentencia o palabra pertenece a dicho lenguaje (reconocedor), utilizando
algoritmos LL(*) de parsing. Si a dicha gramática, se le añaden acciones escritas
en un lenguaje de programación, el reconocedor se transforma en un traductor
o interprete. Además, proporciona facilidades para la creación de árboles
sintácticos y estructura para recorrerlos. ANTLR es un proyecto bajo licencia
BSD, viniendo con todo el código fuente disponible, y preparado para su
instalación bajo plataformas Linux, Windows y Mac OS X.
Actualmente ANTLR genera código Java, C, C++, C#, Python, Perl, Delphi,
Ada95, JavaScript y Objective-C.
b) JavaCC (Java Compiler Compiler)
Es un generador de analizadores sintácticos de código abierto para el lenguaje
de programación Java, 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 y genera analizadores descendentes. Además agrega un
constructor de árboles conocido como: JJTree, construye árboles de abajo hacia
arriba.
3. OTRAS HERRAMIENTAS
a) BYACC/JAVA
Es una extensión de YACC para generar código JAVA en vez de C/C++, que
genera ficheros de especificaciones igual que YACC y sus salidas son código y
declaraciones de lenguaje escritos en JAVA.
b) COCO/JAVA
Es una herramienta de distribución de Java para Linux, es un generador 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 o
sea es un meta compilador.
c) JELL
Es un generador de analizadores sintácticos que genera analizadores
descendentes a partir de gramáticas LL, también es un meta compilador.
AUTOMATAS Y COMPILADORES
UNIVERSIDAD NACIONAL DE TRUJILLO
d) 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 sintácticos.
4. KIT PARA LA CONSTRUCCION DE COMPILADORES
a) 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.
b) 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.
c) 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 sintácticos
DLG: Generador de analizadores léxicos
SORCERER: Generador de árboles sintácticos
AUTOMATAS Y COMPILADORES
UNIVERSIDAD NACIONAL DE TRUJILLO
BIBLIOGRAFIA
https://www.ecured.cu/Herramientas_para_la_construcci%C3%B3n_de_compiladores
http://bloggcompliladores7mo1.blogspot.com/2010/11/unidad-4_20.html
https://sites.google.com/site/teoriadelenguajesycompiladores/herramientas
AUTOMATAS Y COMPILADORES