1. PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR SEDE IBARRA
ESCUELA DE INGENIERÍA EN SISTEMAS
TALLER DE COMPILADORES
Nombre: Guissela Guerrero
Nivel: Quinto
Fecha: 2013-05-28
1) Herramientas para la construcción de procesadores de lenguaje.
Herramienta Lenguaje Descripción
Bison C Generador de Analizadores Sintácticos Ascendentes tipo YACC
COCO/R C/C++ Generador de Analizadores Léxicos y Sintácticos Descendentes Recursivos
Flex C Generador de Analizadores Léxicos tipo Lex
Lex C Generador de Analizadores Léxicos
SDGLL1 exe Sistema Detector de Gramáticas LL(1) y generador de la tabla
TS 2006 C/C++ Tipo abstracto de datos Tabla de Símbolos de uso sencillo
TS C Tipo abstracto de datos Tabla de Símbolos
TS-OO C++ Tipo abstracto de datos orientado a objetos Tabla de Símbolos
VASt exe
Visualizador de árboles sintácticos partiendo de los ficheros con la
gramática y el parse pedidos en la Práctica [versión 2.0, Windows]
VASt C++
Visualizador de árboles sintácticos partiendo de los ficheros con la
gramática y el parse pedidos en la Práctica [versión 1.0, Linux]
YACC C Generador de Analizadores Sintácticos Ascendentes LR(1)
2. 2) Aplicación de los lenguajes:
a) Reseña Histórica
AÑO CARACTERISTICAS
1940’s
Primeros ordenadores.
Programación directa en código máquina.
Nace el ensamblador (traducido manualmente)
Se automatiza la etapa de ensamblado
1950’s
(1950) John Backus dirige en IBM un proyecto de lenguaje algebraico
(1954-1958) Nace el FORTRAN (FORmulae TRANslator)
Primer compilador de FORTRAN para IBM modelo 704
1950’s (medianos)
Noam Chomsky publica sus estudios sobre la estructura de los lenguajes y
las gramáticas formales.
1950’s (finales)
F.L. Bauer (Univ. Munich) dirige un proyecto de lenguaje formal
Se crea un comité conjunto con la Association for Computing Machinery en
el que participa Backus
Se define IAL (International Algebraic Language)
Posteriormente se denomina ALGOL 58 (ALGOrithmic Language)
1960’s
Primeras técnicas de desarrollo de compiladores
1958: Strong y otros proponen dividir el compilador en dos fases:
front-end y back-end y promueven la creación de un lenguaje intermedio
universal (UNCOL – UNiversal Computer Oriented Language).
1959: Rabin y Scott proponen utilizar autómatas deterministas para el
análisis léxico
1961: Primer analizador sintáctico descendente recursivo
Durante toda la década se estudian intensamente las gramáticas LL.
1970’s
Se estudian las gramáticas LR
Se definen los métodos de análisis ascendente SLR y LALR
Se crean numerosas herramientas de ayuda al diseño de compiladores
A mediados de la década aparecen las herramientas lex y yacc que se
convierten en estándares de facto al distribuirse con UNIX.
La Free Software Fundation distribuye estas herramientas bajo los
nombres de flex y bison
4. c) Las herramientas Flex y Bison.
Flex y bison son las herramientas desarrolladas en el proyecto GNU (Free Software
Foundation) equivalentes a lex y yacc en el sistema operativo UNIX®.
3) Que es flex y Bison
Flex y Bison están envejeciendo utilidades Unix que le ayudan a escribir programas de análisis
muy rápido de formatos de archivos de casi arbitrarias. Formalmente, implementan Look-
Ahead-izquierda-derecha (en lugar de "descenso recursivo") el análisis de las gramáticas libres
de contexto (a diferencia de “lenguaje natural “no ambiguo.
4) Como se instala Flex y Bison
1) Primero se descarga el archivo .rar de la pagina http://www.delorie.com/djgpp/.
2) Creamos una carpeta en C que se llame DJGPP y descomprimimos los archivos
contenidos en DJGPP ahí.
3) Luego debemos crear una carpeta en la unidad C: que se llame PRUEBAS.
5. 4) En esta carpeta cargaremos todos nuestros proyectos de Flex y bison.
5) El siguiente paso es configurar las rutas de Flex y bison, esto lo hacemos entrando
al cmd.
6) Colocándonos en la carpeta de pruebas con los comandos
Cd
Cd pruebas
Y escribimos estos comandos
cd PRUEBAS
set djgpp=c:djgppdjgpp.env
set path=c:djgppbin
6. 7) Con esto ya tendremos configurados Flex y lex para que el cmd los reconozca
como comandos validos (cabe destacar que esta acción se tiene que repetir cada
vez que se abre una nueva instancia del cmd).
Esto es la parte de configuración, ahora lo que se tiene que hacer es cargar los
archivos léxicos y sintácticos creados en el bloc de notas.
Por lo que se ejecutan los comandos Flex "nombre_de_archivo.l"
8) Y bison -dy "nombre_de_archivo.y"
9) Se crean los archivos lexyy.c, y.tab.c, y.tab.h
7. 5) Como se compila con Flex y Bison
1) Crearemos un nuevo proyecto en dev-c++
2) Escogemos una aplicación de consola y que sea un proyecto en c
3) Agregamos los archivos creados por el Flex y bison
8. 4) Y compilamos
5) Se crea el ejecutable con el nombre del proyecto en este caso "pruebita.exe"
6) Y ejecutamos nuestro programa
9. 6) 2 Ejemplos de la creación de un compilador utilizando Flex y Bison.
Calculadora sencilla que reconocerá las principales operaciones aritmética (+,-,* y /).
2) Traducción del lenguaje coloquial de SQL en español al conocido ANSI SQL.