PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR
SEDE IBARRA
COMPILADORES
Nombre: María Fernanda Pinto
Fecha: 2016 – 06 – 21
Herramientas para la construcción de procesadores de lenguaje.
Reseña Histórica:
Los primeros lenguajes de programación surgieron de la idea de Charles Babagge, la
cual se le ocurrió a este hombre a mediados del siglo XIX. Era
un profesor matemático de la universidad de Cambridge e inventor inglés, que al
principio del siglo XIX predijo muchas de las teorías en que se basan los actuales
ordenadores. Consistía en lo que él denominaba la maquina analítica, pero que por
motivos técnicos no pudo construirse hasta mediados del siglo XX. Con él colaboro
Ada Lovedby, la cual es considerada como la primera programadora de la historia,
pues realizo programas para aquélla supuesta máquina de Babagge,
en tarjetas perforadas. Como la maquina no llego nunca a construirse, los programas
de Ada, lógicamente, tampoco llegaron a ejecutarse, pero si suponen un punto de
partida de la programación, sobre todo si observamos que en cuanto se empezó a
programar, los programadores utilizaron las técnicas diseñadas por Charles
Babagge, y Ada, que consistían entre otras, en la programación mediante tarjetas
perforadas. A pesar de ello, Ada ha permanecido como la primera programadora de
la historia. Se dice por tanto que estos dos genios de antaño, se adelantaron un siglo
a su época, lo cual describe la inteligenciade la que se hallaban dotados.
En 1823 el gobierno Británico lo apoyo para crear el proyecto de una máquina de
diferencias, un dispositivo mecánico para efectuar sumas repetidas. Pero Babagge
se dedicó al proyecto de la máquina analítica, abandonando la máquina de
diferencias, que se pudiera programar con tarjetas perforadas, gracias a la creación
de Charles Jacquard (francés). Este hombre era un fabricante de tejidos y había
creado un telar que podía reproducir automáticamente patrones de tejidos, leyendo
la información codificada en patrones de agujeros perforados en tarjetas de papel
rígido. Entonces Babagge intento crear la máquina que se pudiera programar con
tarjetas perforadas para efectuar cualquier cálculo con una precisión de 20 dígitos.
Pero la tecnología de la época no bastaba para hacer realidad sus ideas. Si bien las
ideas de Babagge no llegaron a materializarse de forma definitiva, su contribución
es decisiva, ya que los ordenadores actuales responden a un esquema análogo al de
la máquina analítica. En su diseño, la máquina constaba de cinco unidades básicas.
Diseño y construcción de un compilador.
Es básicamente un “procesador de lenguajes”.
Un rol importante que cumple, es el de reportar errores durante el proceso de
traducción.
Si el programa destino es ejecutable, puede ser invocado por el usuario para recibir
entradas y generar salidas.
Las herramientas Flex y Bison.
- GNU bison es un programa generador de analizadores sintácticos de propósito
general perteneciente al proyecto GNU disponible para prácticamente todos
los sistemas operativos, se usa normalmente acompañado de flex aunque los
analizadores léxicos se pueden también obtener de otras formas.
Bison convierte la descripción formal de un lenguaje, escrita como
una gramática libre de contexto LALR, en un programa en C, C++, o Java que
realiza análisis sintáctico. Es utilizado para crear analizadores para muchos
lenguajes, desde simples calculadoras hasta lenguajes complejos. Para utilizar Bison,
es necesaria experiencia con él la sintaxis usada para describir gramáticas.
- Flex es un una herramienta que permite generar analizadores léxicos. A partir de
un conjunto de expresiones regulares, Flex busca concordancias en un fichero de
entrada y ejecuta acciones asociadas a estas expresiones. Es compatible casi al 100%
con Lex, una herramienta clásica de Unix para la generación de analizadores léxicos,
pero es un desarrollo diferente realizado por GNU bajo licencia GPL.
Instalación Flex y Bison
1. Descarga el software.
2. Instalar el software en la unidad C: (para explicar a partir del punto 4 se tendrá
como hipótesis de que flex y bison han sido instalados en la ruta: C:GnuWin32
donde contiene una subcarpeta llamada bin donde se encuentran los programas
respectivos)
3. Flex y bison son aplicaciones de consola, por lo que se deberá entrar al Símbolo
del sistema y tipear líneas de comando para ejecutar Flex. Una alternativa es crear
un archivo de proceso por lotes (*.bat) que contenga las líneas de comando para la
ejecución de Flex y Bison y/o la compilación del archivo generado.
4. Si deseas que flex y bison se integren al conjunto de variables del entorno (esto te
va a permitir llamar a flex/bison desde cualquier ubicación en la línea de comandos)
debes hacer lo siguiente:
Clic derecho en “Mi PC”.
Selecciona “Propiedades”
Clic en la pestaña “Opciones Avanzadas”
Presiona el botón “Variables de entorno”
En la ventana de variables de entorno, ubicarse en la sección “Variables del sistema”
luego haz clic en PATH y luego en el botón “Modificar” (si no está hacer clic en
“Nueva” y agregar PATH)
5. En la nueva ventana, escribir la ruta completa al directorio “bin” de la aplicación
flex/bison. Si existe otro valor, separarlos con comas.
Aceptar los cambios y luego reiniciar el sistema operativo.
6. Cuando tengas listo podrás llamar a flex/bison desde el símbolo del sistema sin
necesidad de ubicarte en la carpeta donde ha sido instalado flex/bison
Como se compila con Flex y Bison
Luego de escribir las especificaciones de flex y bison realizar lo siguiente. Si se desea
invocar a flex:
Por ejemplo, si se tiene un archivo de especificación de Flex llamado prueba.l dentro
de una carpeta “archivos” tipear lo siguiente C:archivos>flex prueba.l Luego
presionar ENTER Se habrá generado un archivo de nombre lex.yy.c dentro de la
carpeta donde se encuentra el archivo prueba.l
Si se desea invocar a bison (recordar que bison trabaja en conjunto con flex):
Por ejemplo, si se tiene un archivo de especificación de Bison llamado prueba.y
dentro de una carpeta “archivos” tipear lo siguiente C:archivos>bison –d prueba.y
Luego al presionar ENTER se generará dos archivos: prueba.tab.h y prueba.tab.c
dentro de la carpeta donde se encuentra el archivo prueba1.y. El argumento –d
realiza esta división, si se hubiese llamado a bison sin el parámetro, se hubiese
generado un solo archivo con extensión C El archivo cabecera (.h) es el que declarará
dentro de la especificación de Flex para poder trabajar en conjunción con bison.
Para invocar a Bison en conjunción con flex realizar lo siguiente:
Por ejemplo, si se tiene un archivo de especificación de Bison y Flex llamado
prueba.y y prueba.l respectivamente dentro de una carpeta “archivos” tipear lo
siguiente C:archivos>bison –d prueba.y C:archivos>flex prueba.l Luego al
presionar ENTER se generarán tres archivos para su posterior compilación:
prueba.tab.h, prueba.tab.c y lex.yy.c.
Para compilar los archivos generados. Flex: MinGW
Luego de haber generado los archivos .c tipear lo siguiente: C:gcc –o pruebaej
lex.yy.c Con esto generará se un archivo llamado “pruebaej.exe” El argumento –o
permite crear el archivo ejecutable
Una alternativa es utilizar un compilador para windows como DevC++ o Borland
C++ 4.5. Abriendo el archivo lex.yy.c y luego compilándolo se generará el ejecutable
“lex.yy.exe” BISON y FLEX en conjunción:
Luego de haber generado los archivos prueba.tab.c, prueba.tab.h, lex.yy.c tipear lo
siguiente: C:gcc -o pruebaej prueba.tab.c lex.yy.c Con esto generará se un archivo
llamado “pruebaej.exe”
Ejemplos:
Ejemplo1: Calculadora

Fyb

  • 1.
    PONTIFICIA UNIVERSIDAD CATÓLICADEL ECUADOR SEDE IBARRA COMPILADORES Nombre: María Fernanda Pinto Fecha: 2016 – 06 – 21 Herramientas para la construcción de procesadores de lenguaje. Reseña Histórica: Los primeros lenguajes de programación surgieron de la idea de Charles Babagge, la cual se le ocurrió a este hombre a mediados del siglo XIX. Era un profesor matemático de la universidad de Cambridge e inventor inglés, que al principio del siglo XIX predijo muchas de las teorías en que se basan los actuales ordenadores. Consistía en lo que él denominaba la maquina analítica, pero que por motivos técnicos no pudo construirse hasta mediados del siglo XX. Con él colaboro Ada Lovedby, la cual es considerada como la primera programadora de la historia, pues realizo programas para aquélla supuesta máquina de Babagge, en tarjetas perforadas. Como la maquina no llego nunca a construirse, los programas de Ada, lógicamente, tampoco llegaron a ejecutarse, pero si suponen un punto de partida de la programación, sobre todo si observamos que en cuanto se empezó a programar, los programadores utilizaron las técnicas diseñadas por Charles Babagge, y Ada, que consistían entre otras, en la programación mediante tarjetas perforadas. A pesar de ello, Ada ha permanecido como la primera programadora de la historia. Se dice por tanto que estos dos genios de antaño, se adelantaron un siglo a su época, lo cual describe la inteligenciade la que se hallaban dotados. En 1823 el gobierno Británico lo apoyo para crear el proyecto de una máquina de diferencias, un dispositivo mecánico para efectuar sumas repetidas. Pero Babagge se dedicó al proyecto de la máquina analítica, abandonando la máquina de diferencias, que se pudiera programar con tarjetas perforadas, gracias a la creación de Charles Jacquard (francés). Este hombre era un fabricante de tejidos y había creado un telar que podía reproducir automáticamente patrones de tejidos, leyendo
  • 2.
    la información codificadaen patrones de agujeros perforados en tarjetas de papel rígido. Entonces Babagge intento crear la máquina que se pudiera programar con tarjetas perforadas para efectuar cualquier cálculo con una precisión de 20 dígitos. Pero la tecnología de la época no bastaba para hacer realidad sus ideas. Si bien las ideas de Babagge no llegaron a materializarse de forma definitiva, su contribución es decisiva, ya que los ordenadores actuales responden a un esquema análogo al de la máquina analítica. En su diseño, la máquina constaba de cinco unidades básicas. Diseño y construcción de un compilador. Es básicamente un “procesador de lenguajes”. Un rol importante que cumple, es el de reportar errores durante el proceso de traducción. Si el programa destino es ejecutable, puede ser invocado por el usuario para recibir entradas y generar salidas. Las herramientas Flex y Bison. - GNU bison es un programa generador de analizadores sintácticos de propósito general perteneciente al proyecto GNU disponible para prácticamente todos los sistemas operativos, se usa normalmente acompañado de flex aunque los analizadores léxicos se pueden también obtener de otras formas. Bison convierte la descripción formal de un lenguaje, escrita como una gramática libre de contexto LALR, en un programa en C, C++, o Java que realiza análisis sintáctico. Es utilizado para crear analizadores para muchos lenguajes, desde simples calculadoras hasta lenguajes complejos. Para utilizar Bison, es necesaria experiencia con él la sintaxis usada para describir gramáticas. - Flex es un una herramienta que permite generar analizadores léxicos. A partir de un conjunto de expresiones regulares, Flex busca concordancias en un fichero de entrada y ejecuta acciones asociadas a estas expresiones. Es compatible casi al 100% con Lex, una herramienta clásica de Unix para la generación de analizadores léxicos, pero es un desarrollo diferente realizado por GNU bajo licencia GPL. Instalación Flex y Bison 1. Descarga el software. 2. Instalar el software en la unidad C: (para explicar a partir del punto 4 se tendrá como hipótesis de que flex y bison han sido instalados en la ruta: C:GnuWin32
  • 3.
    donde contiene unasubcarpeta llamada bin donde se encuentran los programas respectivos) 3. Flex y bison son aplicaciones de consola, por lo que se deberá entrar al Símbolo del sistema y tipear líneas de comando para ejecutar Flex. Una alternativa es crear un archivo de proceso por lotes (*.bat) que contenga las líneas de comando para la ejecución de Flex y Bison y/o la compilación del archivo generado. 4. Si deseas que flex y bison se integren al conjunto de variables del entorno (esto te va a permitir llamar a flex/bison desde cualquier ubicación en la línea de comandos) debes hacer lo siguiente: Clic derecho en “Mi PC”. Selecciona “Propiedades” Clic en la pestaña “Opciones Avanzadas” Presiona el botón “Variables de entorno” En la ventana de variables de entorno, ubicarse en la sección “Variables del sistema” luego haz clic en PATH y luego en el botón “Modificar” (si no está hacer clic en “Nueva” y agregar PATH) 5. En la nueva ventana, escribir la ruta completa al directorio “bin” de la aplicación flex/bison. Si existe otro valor, separarlos con comas. Aceptar los cambios y luego reiniciar el sistema operativo. 6. Cuando tengas listo podrás llamar a flex/bison desde el símbolo del sistema sin necesidad de ubicarte en la carpeta donde ha sido instalado flex/bison Como se compila con Flex y Bison Luego de escribir las especificaciones de flex y bison realizar lo siguiente. Si se desea invocar a flex: Por ejemplo, si se tiene un archivo de especificación de Flex llamado prueba.l dentro de una carpeta “archivos” tipear lo siguiente C:archivos>flex prueba.l Luego presionar ENTER Se habrá generado un archivo de nombre lex.yy.c dentro de la carpeta donde se encuentra el archivo prueba.l Si se desea invocar a bison (recordar que bison trabaja en conjunto con flex): Por ejemplo, si se tiene un archivo de especificación de Bison llamado prueba.y dentro de una carpeta “archivos” tipear lo siguiente C:archivos>bison –d prueba.y Luego al presionar ENTER se generará dos archivos: prueba.tab.h y prueba.tab.c dentro de la carpeta donde se encuentra el archivo prueba1.y. El argumento –d realiza esta división, si se hubiese llamado a bison sin el parámetro, se hubiese generado un solo archivo con extensión C El archivo cabecera (.h) es el que declarará dentro de la especificación de Flex para poder trabajar en conjunción con bison.
  • 4.
    Para invocar aBison en conjunción con flex realizar lo siguiente: Por ejemplo, si se tiene un archivo de especificación de Bison y Flex llamado prueba.y y prueba.l respectivamente dentro de una carpeta “archivos” tipear lo siguiente C:archivos>bison –d prueba.y C:archivos>flex prueba.l Luego al presionar ENTER se generarán tres archivos para su posterior compilación: prueba.tab.h, prueba.tab.c y lex.yy.c. Para compilar los archivos generados. Flex: MinGW Luego de haber generado los archivos .c tipear lo siguiente: C:gcc –o pruebaej lex.yy.c Con esto generará se un archivo llamado “pruebaej.exe” El argumento –o permite crear el archivo ejecutable Una alternativa es utilizar un compilador para windows como DevC++ o Borland C++ 4.5. Abriendo el archivo lex.yy.c y luego compilándolo se generará el ejecutable “lex.yy.exe” BISON y FLEX en conjunción: Luego de haber generado los archivos prueba.tab.c, prueba.tab.h, lex.yy.c tipear lo siguiente: C:gcc -o pruebaej prueba.tab.c lex.yy.c Con esto generará se un archivo llamado “pruebaej.exe” Ejemplos: Ejemplo1: Calculadora