SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
ESCUELA DE INGENIERÍA EN SISTEMAS
TALLER DE COMPILADORES
ANTHONY BENALCÁZAR
Utilizando la herramienta de búsqueda de la Web, Investigar los siguientes temas:
Herramientas para la construcción de procesadores de lenguaje.
• Reseña Histórica Flex y Bison
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.
Tanto flex como Bison, son dos herramientas útiles para crear programas que
reaccionen a una entrada de datos con una estructura y un lenguaje predeterminado,
como, por ejemplo, podemos crear compiladores, intérpretes y analizadores de línea de
comando.
Fuente: https://es.scribd.com/document/351929483/Flex-y-Bison
• Diseño y construcción de un compilador
Actualmente, existen varias herramientas que forman parte del mundo de los
compiladores.
En el proceso de construcción de compiladores se integran muchos conceptos, unos conocidos
y otros no tanto:
-Algoritmos de búsqueda
-Árboles, Hashing
-Programación modular
-Lenguaje Assembly
Herramientas de análisis:
-Analizador léxico
-Analizador semántico
-Analizador sintáctico
Las herramientas Flex y Bison.
Flex es una herramienta que permite generar analizadores léxicos. Mientras que Bison
es un generador de analizadores sintácticos, ambos son herramientas y mecanismos
bastante estructurados para generar analizadores útiles y necesarios para procesos de
compilación.
• Que es flex
Flex es 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.
Fuente:
http://webdiis.unizar.es/asignaturas/LGA/material_2004_2005/Intro_Flex_Bison.pdf
• Como se instala Flex y Bison
1. Descargar el software para proceder con la instalación.
2. Instalar el software en la ruta elegida
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 deseamos que flex y bison se integren al conjunto de variables del entorno (esto
va a permitir llamar a flex/bison desde cualquier ubicación en la línea de comandos)
debemos hacer lo siguiente:
5. Instalar un compilador de C como Dev C++
6. Una vez creada la variable global del sistema se puede acceder a flex y bison desde
donde sea sin necesidad de redireccionar a alguna ruta en específico.
• Patrones en flex
`x' empareja el caracter `x'
`.' cualquier caracter (byte) excepto una
línea nueva
`[xyz]' una "clase de caracteres"; en este caso, el
patrón empareja una `x', una `y', o una `z'
`[abj-oZ]' una "clase de caracteres" con un rango;
empareja una `a', una `b', cualquier letra
desde la `j' hasta la `o', o una `Z'
`[^A-Z]' una "clase de caracteres negada", es
decir, cualquier caracter menos los que
aparecen en la clase. En este caso,
cualquier caracter EXCEPTO una letra
mayúscula.
`[^A-Zn]' cualquier caracter EXCEPTO una letra
mayúscula o una línea nueva
`r*' cero o más r's, donde r es cualquier
expresión regular
`r+' una o más r's
`r?' cero o una r (es decir, "una r opcional")
`r{2,5}' donde sea de dos a cinco r's
`r{2,}' dos o más r's
`r{4}' exactamente 4 r's
Fuente: http://es.tldp.org/Manuales-LuCAS/FLEX/flex-es-2.5.html#SEC5
• Emparejamiento de la entrada
Cuando el escáner generado está funcionando, este analiza su entrada buscando
cadenas que concuerden con cualquiera de sus patrones. Si encuentra más de un
emparejamiento, toma el que empareje el texto más largo. Si encuentra dos o más
emparejamientos de la misma longitud, se escoge la regla listada en primer lugar en el
fichero de entrada de Flex. Una vez que se determina el emparejamiento, el texto
correspondiente al emparejamiento (denominado el token) está disponible en el
puntero de carácter global yytext, y su longitud en la variable global entera yyleng.
Entonces la acción correspondiente al patrón emparejado se ejecuta y luego la entrada
restante se analiza para otro emparejamiento. Si no se encuentra un emparejamiento,
entonces se ejecuta la regla por defecto: el siguiente carácter en la entrada se considera
reconocido y se copia a la salida estándar.
Fuente:
http://webdiis.unizar.es/asignaturas/LGA/material_2003_2004/Intro_Flex_Bison.pdf
• Condiciones de arranque
Flex dispone de un mecanismo para activar reglas condicionalmente. Cualquier regla
cuyo patrón se prefije con "<sc>" únicamente estará activa cuando el analizador se
encuentre en la condición de arranque llamada "sc".
Las condiciones de arranque se declaran en la (primera) sección de definiciones de la
entrada usando líneas sin sangrar comenzando con %s seguida por una lista de nombres.
Una condición de arranque se activa utilizando la acción BEGIN. Hasta que se ejecute la
próxima acción BEGIN, las reglas con la condición de arranque dada estarán activas y las
reglas con otras condiciones de arranque estarán inactivas. Las reglas sin condiciones de
arranque también estarán activas.
Fuente:
http://webdiis.unizar.es/asignaturas/LGA/material_2003_2004/Intro_Flex_Bison.pdf
• Variables disponibles para el usuario
A continuación se describen algunos de los diferentes valores disponibles al usuario en
las acciones de las reglas:
- char *yytext apunta al texto del token actual (última palabra reconocida en algún
patrón). Por ejemplo printf(“%s”, yytext) lo escribiría por pantalla.
- int yyleng contiene la longitud del token actual.
• Compilación y ejecución en flex de un programa.
Al ejecutar el comando Flex nombre_fichero_fuente se creará un fichero en C llamado
“lex.yy.c”. Si se compila este fichero con la instrucción “gcc lex.yy.c –ll –o
nombre_ejecutable” (-ll indica enlazar con la biblioteca de lex) se obtendrá como
resultado un fichero ejecutable llamado nombre_ejecutable). El archivo ejecutable se
lanza por defecto como a.out.
El archivo a.out se puede ejecutar directamente una vez que se haya terminado de
compilar. El programa de flex está a la espera de ingresos de cadenas de texto para
analizar, pero si se requiere de textos más complejos se pueden crear ficheros de texto
de entrada.
Introducción a Bison
Bison es un generador de analizadores sintácticos de propósito general que convierte
una descripción para una gramática independiente del contexto (en realidad de una
subclase de éstas, las LALR) en un programa en C que analiza esa gramática. Es
compatible al 100% con Yacc, 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.
• Símbolos terminales y no terminales
Los símbolos terminales de la gramática se denominan en Bison tokens y deben
declararse en la sección de definiciones. Por convención se suelen escribir los tokens en
mayúsculas y los símbolos no terminales en minúsculas. Los nombres de los símbolos
pueden contener letras, dígitos (no al principio), subrayados y puntos. Los puntos tienen
sentido únicamente en no-terminales.
• Sintaxis de las reglas gramaticales (producciones)
Una regla gramatical de Bison tiene la siguiente forma general:
resultado: componentes...
;
donde resultado es el símbolo no terminal que describe esta regla y componentes son
los diversos símbolos terminales y no terminales que están reunidos por esta regla. Por
ejemplo:
exp: exp ‘+’ exp
;
Se pueden escribir por separado varias reglas para el mismo resultado o pueden unirse
con el caracter de barra vertical ‘|’ así:
resultado: componentes-regla1...
| componentes-regla2...
...
;
• Declaraciones en Bison
Las declaraciones de Bison contiene declaraciones que definen símbolos terminales y
no terminales, especifica la precedencia, etc. En algunas gramáticas simples puede que
no necesite ninguna de las declaraciones.
Fuente: http://es.tldp.org/Manuales-LuCAS/BISON/bison-es-1.27.html#SEC42
• Precedencia de operadores
Bison permite especificar estas opciones con las declaraciones de precedencia de
operadores %left y %right. Cada una de tales declaraciones contiene una lista de tokens,
que son los operadores cuya precedencia y asociatividad se está declarando.
Ladeclaración %left hace que todos esos operadores sean asociativos por la izquierda y
la declaración %right los hace asociativos por la derecha. Una tercera alternativa es
%nonassoc, que declara que es un error de sintaxis encontrar el mismo operador dos
veces "seguidas".
Fuente:
http://webdiis.unizar.es/asignaturas/LGA/material_2003_2004/Intro_Flex_Bison.pdf
La precedencia de operadores se usa cuando existe ambigüedad en operadores dentro
de una expresión, por ejemplo:
1-2*3
El programa debe ser capaz de analizar todas las posibles reglas de los operadores, y su
respectiva jerarquía para saber cual operador ejecutarlo o analizarlo primero.
• Funcionamiento del analizador
El fuente de Bison se convierte en una función en C llamada yyparse. Aquí se describe
las convenciones de interfaz de yyparse y las otras funciones que éste necesita usar. Hay
que tener en cuenta que el analizador utiliza muchos identificadores en C comenzando
con ‘yy’ e ‘YY’ para propósito interno. Si utiliza tales identificadores (a parte de aquellos
descritos en el manual) en una acción o en código C adicional en el archivo de la
gramática, es probable que se encuentre con problemas.

Más contenido relacionado

La actualidad más candente

Archivos de Cabecera.
Archivos de Cabecera.Archivos de Cabecera.
Archivos de Cabecera.
Luis Stifler
 
8 herramientas de procesos de string
8  herramientas de procesos de string8  herramientas de procesos de string
8 herramientas de procesos de string
yimfer1
 
8 herramientas de procesos de string
8  herramientas de procesos de string8  herramientas de procesos de string
8 herramientas de procesos de string
cyberleon95
 
Manejo de archivosss
Manejo de archivosssManejo de archivosss
Manejo de archivosss
taniarodri
 
Herramientas flex y bison
Herramientas flex y bisonHerramientas flex y bison
Herramientas flex y bison
alexisdario
 
Compiladores flex bison
Compiladores flex bisonCompiladores flex bison
Compiladores flex bison
Pancho Yepez
 
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
 

La actualidad más candente (18)

Investigacion Flex Y Bison
Investigacion Flex Y BisonInvestigacion Flex Y Bison
Investigacion Flex Y Bison
 
Flex bison
Flex bisonFlex bison
Flex bison
 
Ficheros de cabecera
Ficheros de cabecera Ficheros de cabecera
Ficheros de cabecera
 
Flex y Bison
Flex y BisonFlex y Bison
Flex y Bison
 
Archivos de Cabecera.
Archivos de Cabecera.Archivos de Cabecera.
Archivos de Cabecera.
 
Tutorial Flex y Bison
Tutorial Flex y BisonTutorial Flex y Bison
Tutorial Flex y Bison
 
8 herramientas de procesos de string
8  herramientas de procesos de string8  herramientas de procesos de string
8 herramientas de procesos de string
 
8 herramientas de procesos de string
8  herramientas de procesos de string8  herramientas de procesos de string
8 herramientas de procesos de string
 
Manejo de archivosss
Manejo de archivosssManejo de archivosss
Manejo de archivosss
 
Compiladores - Flex y Bison
Compiladores - Flex y BisonCompiladores - Flex y Bison
Compiladores - Flex y Bison
 
Archivos en c clase unsam
Archivos en c clase unsamArchivos en c clase unsam
Archivos en c clase unsam
 
11 suplemments
11 suplemments11 suplemments
11 suplemments
 
Herramientas flex y bison
Herramientas flex y bisonHerramientas flex y bison
Herramientas flex y bison
 
Compiladores flex bison
Compiladores flex bisonCompiladores flex bison
Compiladores flex bison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Flex y bison
Flex y  bisonFlex y  bison
Flex y bison
 
Tema 10 www.fresymetal.com
Tema 10 www.fresymetal.comTema 10 www.fresymetal.com
Tema 10 www.fresymetal.com
 
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
 

Similar a FLEX Y BISON (20)

Taller 21 de junio
Taller 21 de junioTaller 21 de junio
Taller 21 de junio
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
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
 
Taller flex y bison
Taller flex y bisonTaller flex y bison
Taller flex y bison
 
Taller compiladores conceptos
Taller compiladores conceptosTaller compiladores conceptos
Taller compiladores conceptos
 
Flex ybison
Flex ybisonFlex ybison
Flex ybison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Flex bison
Flex bisonFlex bison
Flex bison
 
Flex y Byson
Flex y BysonFlex y Byson
Flex y Byson
 
Taller
TallerTaller
Taller
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Taller de Compiladores flx y bsn
Taller de Compiladores flx y bsnTaller de Compiladores flx y bsn
Taller de Compiladores flx y bsn
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Flex y-bison
Flex y-bisonFlex y-bison
Flex y-bison
 
COMPILADORES
COMPILADORESCOMPILADORES
COMPILADORES
 
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
 
Análisis léxico
Análisis léxicoAnálisis léxico
Análisis léxico
 
Fyb
FybFyb
Fyb
 

Más de Anthony Benalcazar

Más de Anthony Benalcazar (20)

Vensim conejos y zorros
Vensim conejos y zorrosVensim conejos y zorros
Vensim conejos y zorros
 
Analisis zorros y conejos vensim
Analisis zorros y conejos vensimAnalisis zorros y conejos vensim
Analisis zorros y conejos vensim
 
MODELOS DE SIMULACIÓN EN VENSIM
MODELOS DE SIMULACIÓN EN VENSIMMODELOS DE SIMULACIÓN EN VENSIM
MODELOS DE SIMULACIÓN EN VENSIM
 
Elementos para garantizar el éxito de la simulación
Elementos para garantizar el éxito de la simulaciónElementos para garantizar el éxito de la simulación
Elementos para garantizar el éxito de la simulación
 
Taller ventajas y desventajas simulacion
Taller ventajas y desventajas simulacionTaller ventajas y desventajas simulacion
Taller ventajas y desventajas simulacion
 
SISTEMA DE GESTIÓN DE SEGUROS HOSPITAL SAN VICENTE DE PAÚL
SISTEMA DE GESTIÓN DE SEGUROS HOSPITAL SAN VICENTE DE PAÚLSISTEMA DE GESTIÓN DE SEGUROS HOSPITAL SAN VICENTE DE PAÚL
SISTEMA DE GESTIÓN DE SEGUROS HOSPITAL SAN VICENTE DE PAÚL
 
Servidor de streaming
Servidor de streamingServidor de streaming
Servidor de streaming
 
Taller análisis sintáctico
Taller análisis sintácticoTaller análisis sintáctico
Taller análisis sintáctico
 
Taller de compiladores
Taller de compiladoresTaller de compiladores
Taller de compiladores
 
Instalacion fortran
Instalacion fortranInstalacion fortran
Instalacion fortran
 
Compilando un programa manualmente
Compilando un programa manualmenteCompilando un programa manualmente
Compilando un programa manualmente
 
Emulador de ensamblador emu8086
Emulador de ensamblador emu8086Emulador de ensamblador emu8086
Emulador de ensamblador emu8086
 
Instalacion decompiladores
Instalacion decompiladoresInstalacion decompiladores
Instalacion decompiladores
 
Organizadores graficos sobre clasificacion de lenguajes
Organizadores graficos sobre clasificacion de lenguajesOrganizadores graficos sobre clasificacion de lenguajes
Organizadores graficos sobre clasificacion de lenguajes
 
La evolucion de los lenguajes de programacion
La evolucion de los lenguajes de programacionLa evolucion de los lenguajes de programacion
La evolucion de los lenguajes de programacion
 
TALLER MEDIOS DE TRANSMISIÓN
TALLER MEDIOS DE TRANSMISIÓNTALLER MEDIOS DE TRANSMISIÓN
TALLER MEDIOS DE TRANSMISIÓN
 
Teoría de la comunicación y la información de Shannon-Hartley-NYQUIST
Teoría de la comunicación y la información de Shannon-Hartley-NYQUISTTeoría de la comunicación y la información de Shannon-Hartley-NYQUIST
Teoría de la comunicación y la información de Shannon-Hartley-NYQUIST
 
Codigos lineales y de bloque
Codigos lineales y de bloqueCodigos lineales y de bloque
Codigos lineales y de bloque
 
Actividades Entropía de la información
Actividades Entropía de la información Actividades Entropía de la información
Actividades Entropía de la información
 
ACTIVIDADES ENTROPÍA DE LA INFORMACIÓN
ACTIVIDADES ENTROPÍA DE LA INFORMACIÓNACTIVIDADES ENTROPÍA DE LA INFORMACIÓN
ACTIVIDADES ENTROPÍA DE LA INFORMACIÓN
 

Último

NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
BRAYANJOSEPTSANJINEZ
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
vladimirpaucarmontes
 
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
Ricardo705519
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
gustavoiashalom
 
PRESENTACION NOM-009-STPS-TRABAJOS EN ALTURAS
PRESENTACION NOM-009-STPS-TRABAJOS EN ALTURASPRESENTACION NOM-009-STPS-TRABAJOS EN ALTURAS
PRESENTACION NOM-009-STPS-TRABAJOS EN ALTURAS
ejcelisgiron
 
sigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptx
sigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptxsigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptx
sigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptx
sutti0808
 

Último (20)

UNIDAD II 2.pdf ingenieria civil lima upn
UNIDAD  II 2.pdf ingenieria civil lima upnUNIDAD  II 2.pdf ingenieria civil lima upn
UNIDAD II 2.pdf ingenieria civil lima upn
 
Maquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdfMaquinaria Agricola utilizada en la produccion de Piña.pdf
Maquinaria Agricola utilizada en la produccion de Piña.pdf
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdfSesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
 
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
TIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdfTIPOS DE SOPORTES - CLASIFICACION IG.pdf
TIPOS DE SOPORTES - CLASIFICACION IG.pdf
 
libro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacioneslibro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operaciones
 
programacion orientada a objetos poo.pptx
programacion orientada a objetos poo.pptxprogramacion orientada a objetos poo.pptx
programacion orientada a objetos poo.pptx
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSIONCALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
CALCULO SISTEMA DE PUESTA A TIERRA PARA BAJA TENSION Y MEDIA TENSION
 
PRESENTACION NOM-009-STPS-TRABAJOS EN ALTURAS
PRESENTACION NOM-009-STPS-TRABAJOS EN ALTURASPRESENTACION NOM-009-STPS-TRABAJOS EN ALTURAS
PRESENTACION NOM-009-STPS-TRABAJOS EN ALTURAS
 
clasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias localesclasificasion de vias arteriales , vias locales
clasificasion de vias arteriales , vias locales
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOSMANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
MANTENIBILIDAD Y CONFIABILIDAD DE LOS SISTEMAS MECANICOS
 
sigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptx
sigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptxsigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptx
sigof.sisfoh.gob.pe_consulta_hogares_ULE_busqueda_print.php (1).pptx
 
Herramientas de la productividad - Revit
Herramientas de la productividad - RevitHerramientas de la productividad - Revit
Herramientas de la productividad - Revit
 

FLEX Y BISON

  • 1. ESCUELA DE INGENIERÍA EN SISTEMAS TALLER DE COMPILADORES ANTHONY BENALCÁZAR Utilizando la herramienta de búsqueda de la Web, Investigar los siguientes temas: Herramientas para la construcción de procesadores de lenguaje. • Reseña Histórica Flex y Bison 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. Tanto flex como Bison, son dos herramientas útiles para crear programas que reaccionen a una entrada de datos con una estructura y un lenguaje predeterminado, como, por ejemplo, podemos crear compiladores, intérpretes y analizadores de línea de comando. Fuente: https://es.scribd.com/document/351929483/Flex-y-Bison • Diseño y construcción de un compilador Actualmente, existen varias herramientas que forman parte del mundo de los compiladores.
  • 2. En el proceso de construcción de compiladores se integran muchos conceptos, unos conocidos y otros no tanto: -Algoritmos de búsqueda -Árboles, Hashing -Programación modular -Lenguaje Assembly Herramientas de análisis: -Analizador léxico -Analizador semántico -Analizador sintáctico Las herramientas Flex y Bison. Flex es una herramienta que permite generar analizadores léxicos. Mientras que Bison es un generador de analizadores sintácticos, ambos son herramientas y mecanismos bastante estructurados para generar analizadores útiles y necesarios para procesos de compilación. • Que es flex Flex es 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. Fuente: http://webdiis.unizar.es/asignaturas/LGA/material_2004_2005/Intro_Flex_Bison.pdf • Como se instala Flex y Bison 1. Descargar el software para proceder con la instalación. 2. Instalar el software en la ruta elegida 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 deseamos que flex y bison se integren al conjunto de variables del entorno (esto va a permitir llamar a flex/bison desde cualquier ubicación en la línea de comandos) debemos hacer lo siguiente:
  • 3. 5. Instalar un compilador de C como Dev C++ 6. Una vez creada la variable global del sistema se puede acceder a flex y bison desde donde sea sin necesidad de redireccionar a alguna ruta en específico. • Patrones en flex `x' empareja el caracter `x' `.' cualquier caracter (byte) excepto una línea nueva `[xyz]' una "clase de caracteres"; en este caso, el patrón empareja una `x', una `y', o una `z' `[abj-oZ]' una "clase de caracteres" con un rango; empareja una `a', una `b', cualquier letra desde la `j' hasta la `o', o una `Z' `[^A-Z]' una "clase de caracteres negada", es decir, cualquier caracter menos los que aparecen en la clase. En este caso, cualquier caracter EXCEPTO una letra mayúscula. `[^A-Zn]' cualquier caracter EXCEPTO una letra mayúscula o una línea nueva `r*' cero o más r's, donde r es cualquier expresión regular `r+' una o más r's `r?' cero o una r (es decir, "una r opcional") `r{2,5}' donde sea de dos a cinco r's `r{2,}' dos o más r's `r{4}' exactamente 4 r's Fuente: http://es.tldp.org/Manuales-LuCAS/FLEX/flex-es-2.5.html#SEC5
  • 4. • Emparejamiento de la entrada Cuando el escáner generado está funcionando, este analiza su entrada buscando cadenas que concuerden con cualquiera de sus patrones. Si encuentra más de un emparejamiento, toma el que empareje el texto más largo. Si encuentra dos o más emparejamientos de la misma longitud, se escoge la regla listada en primer lugar en el fichero de entrada de Flex. Una vez que se determina el emparejamiento, el texto correspondiente al emparejamiento (denominado el token) está disponible en el puntero de carácter global yytext, y su longitud en la variable global entera yyleng. Entonces la acción correspondiente al patrón emparejado se ejecuta y luego la entrada restante se analiza para otro emparejamiento. Si no se encuentra un emparejamiento, entonces se ejecuta la regla por defecto: el siguiente carácter en la entrada se considera reconocido y se copia a la salida estándar. Fuente: http://webdiis.unizar.es/asignaturas/LGA/material_2003_2004/Intro_Flex_Bison.pdf • Condiciones de arranque Flex dispone de un mecanismo para activar reglas condicionalmente. Cualquier regla cuyo patrón se prefije con "<sc>" únicamente estará activa cuando el analizador se encuentre en la condición de arranque llamada "sc". Las condiciones de arranque se declaran en la (primera) sección de definiciones de la entrada usando líneas sin sangrar comenzando con %s seguida por una lista de nombres. Una condición de arranque se activa utilizando la acción BEGIN. Hasta que se ejecute la próxima acción BEGIN, las reglas con la condición de arranque dada estarán activas y las reglas con otras condiciones de arranque estarán inactivas. Las reglas sin condiciones de arranque también estarán activas. Fuente: http://webdiis.unizar.es/asignaturas/LGA/material_2003_2004/Intro_Flex_Bison.pdf • Variables disponibles para el usuario A continuación se describen algunos de los diferentes valores disponibles al usuario en las acciones de las reglas: - char *yytext apunta al texto del token actual (última palabra reconocida en algún patrón). Por ejemplo printf(“%s”, yytext) lo escribiría por pantalla. - int yyleng contiene la longitud del token actual. • Compilación y ejecución en flex de un programa. Al ejecutar el comando Flex nombre_fichero_fuente se creará un fichero en C llamado “lex.yy.c”. Si se compila este fichero con la instrucción “gcc lex.yy.c –ll –o nombre_ejecutable” (-ll indica enlazar con la biblioteca de lex) se obtendrá como resultado un fichero ejecutable llamado nombre_ejecutable). El archivo ejecutable se lanza por defecto como a.out. El archivo a.out se puede ejecutar directamente una vez que se haya terminado de compilar. El programa de flex está a la espera de ingresos de cadenas de texto para
  • 5. analizar, pero si se requiere de textos más complejos se pueden crear ficheros de texto de entrada. Introducción a Bison Bison es un generador de analizadores sintácticos de propósito general que convierte una descripción para una gramática independiente del contexto (en realidad de una subclase de éstas, las LALR) en un programa en C que analiza esa gramática. Es compatible al 100% con Yacc, 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. • Símbolos terminales y no terminales Los símbolos terminales de la gramática se denominan en Bison tokens y deben declararse en la sección de definiciones. Por convención se suelen escribir los tokens en mayúsculas y los símbolos no terminales en minúsculas. Los nombres de los símbolos pueden contener letras, dígitos (no al principio), subrayados y puntos. Los puntos tienen sentido únicamente en no-terminales. • Sintaxis de las reglas gramaticales (producciones) Una regla gramatical de Bison tiene la siguiente forma general: resultado: componentes... ; donde resultado es el símbolo no terminal que describe esta regla y componentes son los diversos símbolos terminales y no terminales que están reunidos por esta regla. Por ejemplo: exp: exp ‘+’ exp ; Se pueden escribir por separado varias reglas para el mismo resultado o pueden unirse con el caracter de barra vertical ‘|’ así: resultado: componentes-regla1... | componentes-regla2... ... ; • Declaraciones en Bison Las declaraciones de Bison contiene declaraciones que definen símbolos terminales y no terminales, especifica la precedencia, etc. En algunas gramáticas simples puede que no necesite ninguna de las declaraciones. Fuente: http://es.tldp.org/Manuales-LuCAS/BISON/bison-es-1.27.html#SEC42
  • 6. • Precedencia de operadores Bison permite especificar estas opciones con las declaraciones de precedencia de operadores %left y %right. Cada una de tales declaraciones contiene una lista de tokens, que son los operadores cuya precedencia y asociatividad se está declarando. Ladeclaración %left hace que todos esos operadores sean asociativos por la izquierda y la declaración %right los hace asociativos por la derecha. Una tercera alternativa es %nonassoc, que declara que es un error de sintaxis encontrar el mismo operador dos veces "seguidas". Fuente: http://webdiis.unizar.es/asignaturas/LGA/material_2003_2004/Intro_Flex_Bison.pdf La precedencia de operadores se usa cuando existe ambigüedad en operadores dentro de una expresión, por ejemplo: 1-2*3 El programa debe ser capaz de analizar todas las posibles reglas de los operadores, y su respectiva jerarquía para saber cual operador ejecutarlo o analizarlo primero. • Funcionamiento del analizador El fuente de Bison se convierte en una función en C llamada yyparse. Aquí se describe las convenciones de interfaz de yyparse y las otras funciones que éste necesita usar. Hay que tener en cuenta que el analizador utiliza muchos identificadores en C comenzando con ‘yy’ e ‘YY’ para propósito interno. Si utiliza tales identificadores (a parte de aquellos descritos en el manual) en una acción o en código C adicional en el archivo de la gramática, es probable que se encuentre con problemas.