SlideShare una empresa de Scribd logo
PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR
SEDE IBARRA
Nombre: Alexis Vilañez
Fecha: 28/05/13
Materia: Compiladores
TALLER DE COPILADORES
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. Todas estas herramientas
funcionan bajo Windows, aunque se puede utilizar, si se desea, cualquier otra herramienta.
Herramientas para la construcción de Procesadores de Lenguajes
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.- Aplicación de los lenguajes:
Los lenguajes de programación hoy en día tienen una infinidad de aplicaciones, basicamente
cualquier objeto electrónico tiene cierto grado de programación. Algunos de los más comunes
son C++ y JAVA, tambien existe HTML, HTTP, XML, XAML y C#, este ultimo actualmente es el
más utilizado en todos los dispositivos y redes basados en MICROSOFT (Xbox 350, Windows
Mobile, Windows Phone, Windows Cloud, Zune, etc.). Ya que los lenguajes de programación
son informaticamente un puente entre el Hardware y el Software estos permiten que las
computadoras puedan establecer conexion con un celular, una camara o una consola portatil
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 tambien niveles de programación mucho mas 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 algoritmicas 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
El alumno recordará que la sistematización de la construcción de Procesadores de
Lenguaje ha sido posible gracias a los siguientes hechos históricos (mencionamos
los más relevantes) que relacionan la evolución de materias muy dispares:
Matemáticas (formalización de la lógica)
Lingüística
Teoría de máquinas (electrónica digital)
Abu Ja’far Mohammed ibn Musa al-Jowârizmî, matemático persa, publicó hacia el
año 825 un tratado de aritmética y su nombre se utiliza para llamar algoritmo a todo
conjunto de reglas que permiten obtener un resultado determinado a partir de
ciertos datos de partida
Edad Media, surge la leyenda de la cabeza parlante de Alberto Magno, tal cabeza
fue supuestamente destruida por su discípulo Tomás de Aquino.
La zairja árabe consistía en algo similar, una máquina pensante que discurría
mecánicamente combinando las letras del alfabeto arábigo a cada una de las cuales
se asociaba una idea filosófica
Raimundo Lullio “Ars Magna” (1235-1315), intenta superar, en versión cristiana, la
zairja con una máquina basada en círculos concéntricos giratorios en el que coloca
un abecedario de ideas sobre Dios y el universo y que, con esta disposición,
permitían ser combinadas (en razonamientos) de forma mecánica.
Siglos XVII y XVIII Gottfried Wilhelm Leibniz (1646-1716): álgebra universal
En su producción filosófica un joven (apenas 20 años) Leibniz concibe en De
arte combinatoria la idea de diseñar una notación y reglas similares a la
matemática para los pensamientos y revisa el Ars Magna.
En Mathesis universalis da el nombre de Logica Mathjematica sive Mathesis
universalis sive Logistica sive Logica Mathematicorum
El objetivo final es que, como dice literalmente, “cuando surja una controversia
entre dos filósofos no será preciso que gasten en discutir más tiempo del que
gastarían dos calculadores. Pues bastará con tomar asiento, echar mano de
pluma y ábaco y decirse el uno al otro: ¡calculemos!”
4.- Diseño y construcción de un compilador.
5.- Las herramientas Flex y Bison.
Esta herramienta se usa en consonancia con la herramienta flex y sirve para especificar
analizadores sintácticos. De la misma forma que flex tiene como base las expresiones
regulares, la herramienta bison también se basa en otro formalismo para describir lenguajes,
en este caso serán las gramáticas independientes del contexto las que constituirán el núcleo
de las especificaciones que procesará bison.
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-
Interacción con Bison
Uno de los usos principales de Flex es como acompañante del analizador de gramáticas
Bison (o de Yacc). Los analizadores Bison necesitan una función llamda ‘yylex()’ para
devolverles el siguiente token de la entrada. Esa función devuelve el tipo del próximo
token y además puede poner cualquier valor asociado en la variable global yylval. Para
usar Flex con Bison, normalmente se especifica la opción –d de Bison para que genera
el fichero ‘y.tab.h’ que contiene las definiciones de todos los ‘%tokens’ que aparecen el
fuente Bison. Este fichero de cabecera se incluye después en el fuente de Flex. Por
ejemplo, si uno de los tokens es “TOK_NUMBER”, parte del fichero Flex podría ser:
%{
#include "y.tab.h"
%}
%%
[0-9]+ yylval = atoi( yytext ); return TOK_NUMBER;
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.
• Aceptar los cambios y luego reiniciar el sistema operativo.
5. Si deseas instalar un compilador de C como MinGwin, deberás integrar la ruta de acceso al
compilador a las variables de entorno para facilitar la llamada al programa.
Por ejemplo si se instaló MingWin en “C:Mingw” y dentro de la carpeta “bin” se encuentra
“gcc.exe” que es el ejecutable, entonces de deberá agregar (análogo a los pasos anteriores) lo
siguiente:
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. Invocando a flex y bison
8.- 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:
9.- 2 Ejemplos de la creación de un compilador utilizando Flex y Bison.
Creación de un parser con flex y bison en C++
Herramientas flex y bison

Más contenido relacionado

La actualidad más candente

Conceptos Básicos acerca de Procesadores de Lenguajes
Conceptos Básicos acerca de Procesadores de LenguajesConceptos Básicos acerca de Procesadores de Lenguajes
Conceptos Básicos acerca de Procesadores de Lenguajes
Grace Laguna
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
Andres Pozo
 
Usando flex en Windows
Usando flex en WindowsUsando flex en Windows
Usando flex en Windows
Mariano Rico
 
TALLER FLEX Y BISON
TALLER FLEX Y BISONTALLER FLEX Y BISON
TALLER FLEX Y BISON
Anthony Benalcazar
 
Trabajo compiladores ivan bolaños
Trabajo compiladores ivan bolañosTrabajo compiladores ivan bolaños
Trabajo compiladores ivan bolaños
Iván Bolaños
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
Carlos Rivadeneira
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
Wilman Kdnita
 
Trabajo flex byson
Trabajo flex bysonTrabajo flex byson
Trabajo flex byson
Jhon Alexito
 
Taller
TallerTaller
Taller compiladores conceptos
Taller compiladores conceptosTaller compiladores conceptos
Taller compiladores conceptos
juniortroya
 
Taller de actividades de compiladores, Flex y Bison
Taller de actividades de compiladores, Flex y BisonTaller de actividades de compiladores, Flex y Bison
Taller de actividades de compiladores, Flex y Bison
Alex Toapanta
 
Flex ybison
Flex ybisonFlex ybison
Flex ybison
Carlos Brusil
 
COMPILADORES
COMPILADORESCOMPILADORES
COMPILADORES
marcos ruales
 
Flex bison
Flex bisonFlex bison
Flex bison
LuisMolina269
 
Investigacion Flex Y Bison
Investigacion Flex Y BisonInvestigacion Flex Y Bison
Investigacion Flex Y Bison
Alexander Campues
 
Compiladores
CompiladoresCompiladores
Compiladores
Urban Lovers InC
 
Flex y Bison
Flex y BisonFlex y Bison
Flex y Bison
Bryant Arellano
 
Arreglos Turbo C
Arreglos Turbo CArreglos Turbo C
Arreglos Turbo C
tacubomx
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
AndresDvila
 
Flexybison
FlexybisonFlexybison
Flexybison
Santiago Andrade
 

La actualidad más candente (20)

Conceptos Básicos acerca de Procesadores de Lenguajes
Conceptos Básicos acerca de Procesadores de LenguajesConceptos Básicos acerca de Procesadores de Lenguajes
Conceptos Básicos acerca de Procesadores de Lenguajes
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Usando flex en Windows
Usando flex en WindowsUsando flex en Windows
Usando flex en Windows
 
TALLER FLEX Y BISON
TALLER FLEX Y BISONTALLER FLEX Y BISON
TALLER FLEX Y BISON
 
Trabajo compiladores ivan bolaños
Trabajo compiladores ivan bolañosTrabajo compiladores ivan bolaños
Trabajo compiladores ivan bolaños
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Trabajo flex byson
Trabajo flex bysonTrabajo flex byson
Trabajo flex byson
 
Taller
TallerTaller
Taller
 
Taller compiladores conceptos
Taller compiladores conceptosTaller compiladores conceptos
Taller compiladores conceptos
 
Taller de actividades de compiladores, Flex y Bison
Taller de actividades de compiladores, Flex y BisonTaller de actividades de compiladores, Flex y Bison
Taller de actividades de compiladores, Flex y Bison
 
Flex ybison
Flex ybisonFlex ybison
Flex ybison
 
COMPILADORES
COMPILADORESCOMPILADORES
COMPILADORES
 
Flex bison
Flex bisonFlex bison
Flex bison
 
Investigacion Flex Y Bison
Investigacion Flex Y BisonInvestigacion Flex Y Bison
Investigacion Flex Y Bison
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Flex y Bison
Flex y BisonFlex y Bison
Flex y Bison
 
Arreglos Turbo C
Arreglos Turbo CArreglos Turbo C
Arreglos Turbo C
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Flexybison
FlexybisonFlexybison
Flexybison
 

Similar a Herramientas flex y bison

Flex bison
Flex bisonFlex bison
Flex bison
Jose Ibadango
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
Zulay Limaico
 
Taller 21 de junio
Taller 21 de junioTaller 21 de junio
Taller 21 de junio
Alex Ortiz
 
Taller flex y bison
Taller flex y bisonTaller flex y bison
Taller flex y bison
danilopuente
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
Mario Granja Alvear
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
Luis Viteri
 
Flex y-bison
Flex y-bisonFlex y-bison
Flex y-bison
JOSSELINEMARIBEL
 
FLEX Y BISON
FLEX Y BISONFLEX Y BISON
FLEX Y BISON
Anthony Benalcazar
 
Pontificia universidad católica del ecuador flex y bison
Pontificia universidad católica del ecuador flex y bisonPontificia universidad católica del ecuador flex y bison
Pontificia universidad católica del ecuador flex y bison
Gabriel Solano
 
Taller de flex y bison
Taller de flex y bisonTaller de flex y bison
Taller de flex y bison
Fabricio Galárraga
 
FLEX Y BISON
FLEX Y BISONFLEX Y BISON
FLEX Y BISON
MAURICIOANDRES39
 
Flex y Bison
Flex y BisonFlex y Bison
Flex y Bison
Esteban Pillajo
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
Alvaro Cedeño
 
Fyb
FybFyb
Flex y bison héctor espinosa
Flex y bison   héctor espinosaFlex y bison   héctor espinosa
Flex y bison héctor espinosa
Hector Espinosa
 
Flex y Byson
Flex y BysonFlex y Byson
Taller de Compiladores flx y bsn
Taller de Compiladores flx y bsnTaller de Compiladores flx y bsn
Taller de Compiladores flx y bsn
DanielRosero23
 
Compiladores
CompiladoresCompiladores
Compiladores
Carlos Brusil
 
Bison y flex
Bison y flexBison y flex
Bison y flex
Christian Morales
 

Similar a Herramientas flex y bison (19)

Flex bison
Flex bisonFlex bison
Flex bison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Taller 21 de junio
Taller 21 de junioTaller 21 de junio
Taller 21 de junio
 
Taller flex y bison
Taller flex y bisonTaller flex y bison
Taller flex y bison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Flex y-bison
Flex y-bisonFlex y-bison
Flex y-bison
 
FLEX Y BISON
FLEX Y BISONFLEX Y BISON
FLEX Y BISON
 
Pontificia universidad católica del ecuador flex y bison
Pontificia universidad católica del ecuador flex y bisonPontificia universidad católica del ecuador flex y bison
Pontificia universidad católica del ecuador flex y bison
 
Taller de flex y bison
Taller de flex y bisonTaller de flex y bison
Taller de flex y bison
 
FLEX Y BISON
FLEX Y BISONFLEX Y BISON
FLEX Y BISON
 
Flex y Bison
Flex y BisonFlex y Bison
Flex y Bison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Fyb
FybFyb
Fyb
 
Flex y bison héctor espinosa
Flex y bison   héctor espinosaFlex y bison   héctor espinosa
Flex y bison héctor espinosa
 
Flex y Byson
Flex y BysonFlex y Byson
Flex y Byson
 
Taller de Compiladores flx y bsn
Taller de Compiladores flx y bsnTaller de Compiladores flx y bsn
Taller de Compiladores flx y bsn
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Bison y flex
Bison y flexBison y flex
Bison y flex
 

Más de alexisdario

Mapa 2
Mapa 2Mapa 2
Mapa 2
alexisdario
 
Mapa1
Mapa1Mapa1
Presentacion cobit po6 po7
Presentacion cobit po6 po7Presentacion cobit po6 po7
Presentacion cobit po6 po7
alexisdario
 
Analizis presupuestario
Analizis presupuestarioAnalizis presupuestario
Analizis presupuestario
alexisdario
 
Proyeccion presupuestaria
Proyeccion presupuestariaProyeccion presupuestaria
Proyeccion presupuestaria
alexisdario
 
modelo de Colaboracion
modelo de Colaboracionmodelo de Colaboracion
modelo de Colaboracion
alexisdario
 
Taller
TallerTaller
Taller
alexisdario
 
Compiladores ejercicios en python
Compiladores ejercicios en pythonCompiladores ejercicios en python
Compiladores ejercicios en python
alexisdario
 
Comp1z
Comp1zComp1z
Comp1z
alexisdario
 
Analizis lexico
Analizis lexicoAnalizis lexico
Analizis lexico
alexisdario
 
Analizador sintactico
Analizador sintacticoAnalizador sintactico
Analizador sintactico
alexisdario
 
Compiladores
CompiladoresCompiladores
Compiladores
alexisdario
 
Manual compilacion de java en dos
Manual compilacion de java en dosManual compilacion de java en dos
Manual compilacion de java en dos
alexisdario
 
Manual compilacion de java en dos
Manual compilacion de java en dosManual compilacion de java en dos
Manual compilacion de java en dos
alexisdario
 
Manual vb decompiler
Manual vb decompilerManual vb decompiler
Manual vb decompiler
alexisdario
 
Clasificacion de los lenguajes de programacion
Clasificacion de los lenguajes de programacionClasificacion de los lenguajes de programacion
Clasificacion de los lenguajes de programacion
alexisdario
 

Más de alexisdario (16)

Mapa 2
Mapa 2Mapa 2
Mapa 2
 
Mapa1
Mapa1Mapa1
Mapa1
 
Presentacion cobit po6 po7
Presentacion cobit po6 po7Presentacion cobit po6 po7
Presentacion cobit po6 po7
 
Analizis presupuestario
Analizis presupuestarioAnalizis presupuestario
Analizis presupuestario
 
Proyeccion presupuestaria
Proyeccion presupuestariaProyeccion presupuestaria
Proyeccion presupuestaria
 
modelo de Colaboracion
modelo de Colaboracionmodelo de Colaboracion
modelo de Colaboracion
 
Taller
TallerTaller
Taller
 
Compiladores ejercicios en python
Compiladores ejercicios en pythonCompiladores ejercicios en python
Compiladores ejercicios en python
 
Comp1z
Comp1zComp1z
Comp1z
 
Analizis lexico
Analizis lexicoAnalizis lexico
Analizis lexico
 
Analizador sintactico
Analizador sintacticoAnalizador sintactico
Analizador sintactico
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Manual compilacion de java en dos
Manual compilacion de java en dosManual compilacion de java en dos
Manual compilacion de java en dos
 
Manual compilacion de java en dos
Manual compilacion de java en dosManual compilacion de java en dos
Manual compilacion de java en dos
 
Manual vb decompiler
Manual vb decompilerManual vb decompiler
Manual vb decompiler
 
Clasificacion de los lenguajes de programacion
Clasificacion de los lenguajes de programacionClasificacion de los lenguajes de programacion
Clasificacion de los lenguajes de programacion
 

Herramientas flex y bison

  • 1. PONTIFICIA UNIVERSIDAD CATÓLICA DEL ECUADOR SEDE IBARRA Nombre: Alexis Vilañez Fecha: 28/05/13 Materia: Compiladores TALLER DE COPILADORES 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. Todas estas herramientas funcionan bajo Windows, aunque se puede utilizar, si se desea, cualquier otra herramienta. Herramientas para la construcción de Procesadores de Lenguajes 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.- Aplicación de los lenguajes: Los lenguajes de programación hoy en día tienen una infinidad de aplicaciones, basicamente cualquier objeto electrónico tiene cierto grado de programación. Algunos de los más comunes son C++ y JAVA, tambien existe HTML, HTTP, XML, XAML y C#, este ultimo actualmente es el
  • 2. más utilizado en todos los dispositivos y redes basados en MICROSOFT (Xbox 350, Windows Mobile, Windows Phone, Windows Cloud, Zune, etc.). Ya que los lenguajes de programación son informaticamente un puente entre el Hardware y el Software estos permiten que las computadoras puedan establecer conexion con un celular, una camara o una consola portatil 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 tambien niveles de programación mucho mas 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 algoritmicas 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 El alumno recordará que la sistematización de la construcción de Procesadores de Lenguaje ha sido posible gracias a los siguientes hechos históricos (mencionamos los más relevantes) que relacionan la evolución de materias muy dispares: Matemáticas (formalización de la lógica) Lingüística Teoría de máquinas (electrónica digital) Abu Ja’far Mohammed ibn Musa al-Jowârizmî, matemático persa, publicó hacia el año 825 un tratado de aritmética y su nombre se utiliza para llamar algoritmo a todo conjunto de reglas que permiten obtener un resultado determinado a partir de ciertos datos de partida Edad Media, surge la leyenda de la cabeza parlante de Alberto Magno, tal cabeza fue supuestamente destruida por su discípulo Tomás de Aquino. La zairja árabe consistía en algo similar, una máquina pensante que discurría mecánicamente combinando las letras del alfabeto arábigo a cada una de las cuales se asociaba una idea filosófica Raimundo Lullio “Ars Magna” (1235-1315), intenta superar, en versión cristiana, la zairja con una máquina basada en círculos concéntricos giratorios en el que coloca un abecedario de ideas sobre Dios y el universo y que, con esta disposición, permitían ser combinadas (en razonamientos) de forma mecánica. Siglos XVII y XVIII Gottfried Wilhelm Leibniz (1646-1716): álgebra universal En su producción filosófica un joven (apenas 20 años) Leibniz concibe en De arte combinatoria la idea de diseñar una notación y reglas similares a la matemática para los pensamientos y revisa el Ars Magna. En Mathesis universalis da el nombre de Logica Mathjematica sive Mathesis universalis sive Logistica sive Logica Mathematicorum El objetivo final es que, como dice literalmente, “cuando surja una controversia entre dos filósofos no será preciso que gasten en discutir más tiempo del que gastarían dos calculadores. Pues bastará con tomar asiento, echar mano de pluma y ábaco y decirse el uno al otro: ¡calculemos!”
  • 3. 4.- Diseño y construcción de un compilador.
  • 4. 5.- Las herramientas Flex y Bison. Esta herramienta se usa en consonancia con la herramienta flex y sirve para especificar analizadores sintácticos. De la misma forma que flex tiene como base las expresiones regulares, la herramienta bison también se basa en otro formalismo para describir lenguajes, en este caso serán las gramáticas independientes del contexto las que constituirán el núcleo de las especificaciones que procesará bison. 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
  • 5. acción: código C con las acciones a ejecutar cuando se encuentre concordancia del patrón con el texto de entrada- Interacción con Bison Uno de los usos principales de Flex es como acompañante del analizador de gramáticas Bison (o de Yacc). Los analizadores Bison necesitan una función llamda ‘yylex()’ para devolverles el siguiente token de la entrada. Esa función devuelve el tipo del próximo token y además puede poner cualquier valor asociado en la variable global yylval. Para usar Flex con Bison, normalmente se especifica la opción –d de Bison para que genera el fichero ‘y.tab.h’ que contiene las definiciones de todos los ‘%tokens’ que aparecen el fuente Bison. Este fichero de cabecera se incluye después en el fuente de Flex. Por ejemplo, si uno de los tokens es “TOK_NUMBER”, parte del fichero Flex podría ser: %{ #include "y.tab.h" %} %% [0-9]+ yylval = atoi( yytext ); return TOK_NUMBER; 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
  • 6. 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
  • 7. flex/bison. Si existe otro valor, separarlos con comas. • Aceptar los cambios y luego reiniciar el sistema operativo. 5. Si deseas instalar un compilador de C como MinGwin, deberás integrar la ruta de acceso al compilador a las variables de entorno para facilitar la llamada al programa. Por ejemplo si se instaló MingWin en “C:Mingw” y dentro de la carpeta “bin” se encuentra “gcc.exe” que es el ejecutable, entonces de deberá agregar (análogo a los pasos anteriores) lo siguiente: 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. Invocando a flex y bison 8.- 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:
  • 8.
  • 9. 9.- 2 Ejemplos de la creación de un compilador utilizando Flex y Bison. Creación de un parser con flex y bison en C++