PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR
SEDE IBARRA
Mario Granja
Taller de Compiladores
1. Herramientas para la construcción de procesadores de lenguaje.
A continuación se muestran algunas de las herramientas disponibles que pueden
utilizarse para la realización de la Práctica de Procesadores de Lenguajes. Estas
herramientas funcionan bajo Windows, aunque se puede utilizar, si se desea, cualquier
otra herramienta. No obstante, se recuerda que los ficheros que debe generar la
práctica no son generados automáticamente por estas herramientas (y en concreto, el
árbol sintáctico generado por la herramienta Gold Parser no es correcto ni válido para
aprobar la práctica).
2. Aplicación de los lenguajes.
Los lenguajes de programación hoy en día tienen una infinidad de aplicaciones,
básicamente cualquier objeto electrónico tiene cierto grado de programación. Algunos
de los más comunes son C++ y JAVA, también existe HTML, HTTP, XML, XAML y C#, este
último actualmente es el
Más utilizado en todos los dispositivos y redes basados en MICROSOFT (Xbox 360,
Windows Mobile, Windows Phone, Windows Cloud, Zune, etc.). Ya que los lenguajes de
programación son informáticamente un puente entre el Hardware y el Software estos
permiten que las computadoras puedan establecer conexión con un celular, una cámara
o una consola portátil de videojuego. Otra de las aplicaciones de los lenguajes de
programación son las matemáticas como las calculadoras, cajas registradoras, cajeros
automáticos, por solo mencionar algunos ejemplos sencillos. Existen también niveles de
programación mucho más complejos como los videojuegos o los pilotos automáticos de
los aviones comerciales o las máquinas de juego de los casinos que siguen un patrón de
probabilidad a partir de un arreglo de números al azar establecido por una
programación numérica. La robótica es la combinación de mecánica, electrónica y
programación, la cual en base a sensores y mecanismos sigue una serie de instrucciones
algorítmicas las cuales le permiten por ejemplo a un brazo robótico montar una rueda,
ajustar un tornillo o cortar un rectángulo de 3 cm cuadrados en una placa de acero. Con
el avance de la tecnología los límites de la programación se vuelven cada vez más
distantes.
3. 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 inteligencia de la que se hallaban
dotados.
4. Diseño y construcción de un compilador.
5. Las herramientas Flex y Bison.
Flex:
Flex es una herramienta que traduce la especificación de un analizador léxico a un
programa escrito en C que lo implementa.
Para especificarlo usaremos expresiones regulares a las que se puede asociar acciones
escritas en C.
Cada vez que el analizador encuentra en la cadena de entrada una secuencia que encaja
en una de las expresiones regulares especificadas, ejecutará la acción que le hayamos
asociado.
fichero.l ---> FLEX ---> lex.yy.c
lex.yy.c + (ficheros .c) ---> GCC ---> ejecutable
Bison:
Bison es una herramienta que traduce la especificación de una gramática de contexto
libre a un programa en C implementa un analizador LALR(1) que reconoce frases de esa
gramática.
El analizador LALR(1) generado es un analizador ascendente de desplazamiento-
reducción.
Además de reconocer frases se puede asociar código C a las reglas de la gramática, lo
que permite especificar acciones semánticas, que se ejecutarán cada vez que se aplique
la regla correspondiente.
Bison es compatible con Yacc (el generador de analizador clásico de los sistemas UNIX),
además añade una seríe de características no disponibles en Yacc.
fichero.y ---> BISON ---> fichero.tab.c
fichero.tab.c + (ficheros .c) ---> GCC ---> ejecutable
|
|-- main()
|-- yyerror()
|-- yylex()
6. Que es Flex y Bison.
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.
Los ficheros de entrada de Flex (normalmente con la extensión .l) siguen el siguiente
esquema:
%%
patrón1 {acción1}
patrón2 {acción2}
...
donde:
patrón: expresión regular
acción: código C con las acciones a ejecutar cuando se encuentre concordancia del
patrón con el texto de entrada-
7. Como se instala Flex y Bison.
1. Descarga el software disponible en el sitio de la cátedra.
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) • En la nueva ventana, escribir la ruta completa al directorio
“bin” de la aplicación.
flex/bison. Si existe otro valor, separarlos con comas.
8. Como se compila con Flex y Bison.
9. 2 Ejemplos de la creación de un compilador utilizando Flex y Bison.
parser.y
A continuación el analizador sintáctico, también sencillo, que sólo consta de una construcción
válida para el lenguaje.
Flex y bison

Flex y bison

  • 1.
    PONTIFICIA UNIVERSIDAD CATÓLICADEL ECUADOR SEDE IBARRA Mario Granja Taller de Compiladores 1. Herramientas para la construcción de procesadores de lenguaje. A continuación se muestran algunas de las herramientas disponibles que pueden utilizarse para la realización de la Práctica de Procesadores de Lenguajes. Estas herramientas funcionan bajo Windows, aunque se puede utilizar, si se desea, cualquier otra herramienta. No obstante, se recuerda que los ficheros que debe generar la práctica no son generados automáticamente por estas herramientas (y en concreto, el árbol sintáctico generado por la herramienta Gold Parser no es correcto ni válido para aprobar la práctica). 2. Aplicación de los lenguajes. Los lenguajes de programación hoy en día tienen una infinidad de aplicaciones, básicamente cualquier objeto electrónico tiene cierto grado de programación. Algunos de los más comunes son C++ y JAVA, también existe HTML, HTTP, XML, XAML y C#, este último actualmente es el Más utilizado en todos los dispositivos y redes basados en MICROSOFT (Xbox 360, Windows Mobile, Windows Phone, Windows Cloud, Zune, etc.). Ya que los lenguajes de programación son informáticamente un puente entre el Hardware y el Software estos permiten que las computadoras puedan establecer conexión con un celular, una cámara o una consola portátil de videojuego. Otra de las aplicaciones de los lenguajes de programación son las matemáticas como las calculadoras, cajas registradoras, cajeros automáticos, por solo mencionar algunos ejemplos sencillos. Existen también niveles de programación mucho más complejos como los videojuegos o los pilotos automáticos de los aviones comerciales o las máquinas de juego de los casinos que siguen un patrón de probabilidad a partir de un arreglo de números al azar establecido por una programación numérica. La robótica es la combinación de mecánica, electrónica y programación, la cual en base a sensores y mecanismos sigue una serie de instrucciones algorítmicas las cuales le permiten por ejemplo a un brazo robótico montar una rueda, ajustar un tornillo o cortar un rectángulo de 3 cm cuadrados en una placa de acero. Con el avance de la tecnología los límites de la programación se vuelven cada vez más distantes. 3. Reseña Histórica.
  • 2.
    Los primeros lenguajesde 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 inteligencia de la que se hallaban dotados. 4. Diseño y construcción de un compilador. 5. Las herramientas Flex y Bison. Flex: Flex es una herramienta que traduce la especificación de un analizador léxico a un programa escrito en C que lo implementa. Para especificarlo usaremos expresiones regulares a las que se puede asociar acciones escritas en C. Cada vez que el analizador encuentra en la cadena de entrada una secuencia que encaja en una de las expresiones regulares especificadas, ejecutará la acción que le hayamos asociado. fichero.l ---> FLEX ---> lex.yy.c
  • 3.
    lex.yy.c + (ficheros.c) ---> GCC ---> ejecutable Bison: Bison es una herramienta que traduce la especificación de una gramática de contexto libre a un programa en C implementa un analizador LALR(1) que reconoce frases de esa gramática. El analizador LALR(1) generado es un analizador ascendente de desplazamiento- reducción. Además de reconocer frases se puede asociar código C a las reglas de la gramática, lo que permite especificar acciones semánticas, que se ejecutarán cada vez que se aplique la regla correspondiente. Bison es compatible con Yacc (el generador de analizador clásico de los sistemas UNIX), además añade una seríe de características no disponibles en Yacc. fichero.y ---> BISON ---> fichero.tab.c fichero.tab.c + (ficheros .c) ---> GCC ---> ejecutable | |-- main() |-- yyerror() |-- yylex() 6. Que es Flex y Bison. 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. Los ficheros de entrada de Flex (normalmente con la extensión .l) siguen el siguiente esquema: %% patrón1 {acción1} patrón2 {acción2} ... donde: patrón: expresión regular acción: código C con las acciones a ejecutar cuando se encuentre concordancia del patrón con el texto de entrada- 7. Como se instala Flex y Bison. 1. Descarga el software disponible en el sitio de la cátedra. 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
  • 4.
    tipear líneas decomando 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) • En la nueva ventana, escribir la ruta completa al directorio “bin” de la aplicación. flex/bison. Si existe otro valor, separarlos con comas.
  • 5.
    8. Como secompila con Flex y Bison.
  • 6.
    9. 2 Ejemplosde la creación de un compilador utilizando Flex y Bison. parser.y A continuación el analizador sintáctico, también sencillo, que sólo consta de una construcción válida para el lenguaje.