SlideShare una empresa de Scribd logo
1 de 8
Descargar para leer sin conexión
EDISON CAICEDO
Herramientas para la construcción de procesadores de lenguaje.
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 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
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 distante
HISTORIA
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.
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:
Unidad de entrada, para introducir datos e instrucciones.
Memoria, donde se almacenaban datos y resultados intermedios.
Unidad de control, para regular la secuencia de ejecución de las operaciones.
Unidad Aritmético-Lógica, que efectúa las operaciones.
Unidad de salida, encargada de comunicar al exterior los resultados.
Diseño y construcción de un compilador
Las herramientas Flex y Bison
Son las herramientas desarrolladas en el proyecto GNU (Free Software Foundation) equivalentes a
lex y yacc en el sistema operativo UNIX®. Están asociadas al lenguaje C, aunque flex puede
también generar su salida en el lenguaje C++. Las referencias que creo oficiales (al menos en
cuanto a documentación) son las siguientes (aunque también podrás conseguir estos documentos
a través de los enlaces que aparecen posteriormente):
Vern Paxson [1995] Flex, version
Charles Donnelly, Richard Stallman [1999] Bison. The YACC-compatible Parser Generator. (Asigno
la autoría a Donnelly y Stallman porque así lo ponía en la versión 1.28, aunque no aparece
mención alguna en la última, 1.35. Por cierto, este Stallman es el mítico Stallman, por supuesto,
para que veas cuáles son sus intereses particulares. Su sitio es espectacular.)
Si usas GNU/Linux, es casi seguro que ya tengas instalados estos programas; si no los tienes,
búscalos en tu distribución, porque están seguro. Para usarlos, solo tienes que leer la
documentación, y listo.
Que es Flex y Bison
¿Qué es 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 el la sintaxis usada para describir gramáticas.
GNU bison tiene compatibilidad con Yacc, todas las gramáticas bien escritas para Yacc, funcionan
en Bison sin necesidad de ser modificadas. Cualquier persona que esté familiarizada con Yacc
podría utilizar Bison sin problemas.
Bison fue escrito en un principio por Robert Corbett; Richard Stallman lo hizo compatible con Yacc
y Wilfred Hansen de la Carnegie Mellon University añadió soporte para literales multicaracter y
otras características.
Flex:
El Flex define las reglas de reconocimiento de símbolos (Tokens) a partir de expresiones regulares.
Cuando un Token es reconocido por uno de estos patrones de agrupamiento se le define una
acción, por lo general esta acción es devolver el Tipo y el valor (lexema).
El Flex cuando se utiliza combinado con el Bison, utiliza las definiciones de los Tokens realizadas en
el Bison para la comunicación entre ellos,
Los ficheros del Flex para C++ utilizan por convenio la extensión ‘.ll’. La sintaxis de un fichero en
flex es la siguiente:
... definiciones ...
%%
... reglas...
%%
... subrutinas ...
Como se instala Flex y Bison
Flex y Bison
Flex y Bison

Más contenido relacionado

La actualidad más candente

Historia de los compiladores
Historia de los compiladoresHistoria de los compiladores
Historia de los compiladoresAlex Toapanta
 
HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++
HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++
HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++DarioManzano
 
Linea del tiempo al
Linea del tiempo alLinea del tiempo al
Linea del tiempo alAelrShaid
 
Linea del tiempo de los lenguajes de programación
Linea del tiempo de los lenguajes de programaciónLinea del tiempo de los lenguajes de programación
Linea del tiempo de los lenguajes de programaciónEspitiaGiancarlo
 
Línea de-tiempo-del-lenguaje-de-programación
Línea de-tiempo-del-lenguaje-de-programaciónLínea de-tiempo-del-lenguaje-de-programación
Línea de-tiempo-del-lenguaje-de-programaciónArmandoC42
 
Línea del tiempo de la historia de los
Línea del tiempo de la historia de losLínea del tiempo de la historia de los
Línea del tiempo de la historia de losDiego Arturo
 
Linea del tiempo
Linea del tiempoLinea del tiempo
Linea del tiempoharryojeda
 

La actualidad más candente (15)

Mapa conceptual de c++
Mapa conceptual de c++Mapa conceptual de c++
Mapa conceptual de c++
 
Historia de los compiladores
Historia de los compiladoresHistoria de los compiladores
Historia de los compiladores
 
HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++
HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++
HISTORIA DEL LENGUAJE DE PROGRAMACIÓN C++
 
Exposicion de c.
Exposicion de c.Exposicion de c.
Exposicion de c.
 
actividad 4
actividad 4actividad 4
actividad 4
 
Línea de tiempo teoria c++
Línea de tiempo teoria c++Línea de tiempo teoria c++
Línea de tiempo teoria c++
 
Linea del tiempo al
Linea del tiempo alLinea del tiempo al
Linea del tiempo al
 
Linea del tiempo de los lenguajes de programación
Linea del tiempo de los lenguajes de programaciónLinea del tiempo de los lenguajes de programación
Linea del tiempo de los lenguajes de programación
 
Línea de-tiempo-del-lenguaje-de-programación
Línea de-tiempo-del-lenguaje-de-programaciónLínea de-tiempo-del-lenguaje-de-programación
Línea de-tiempo-del-lenguaje-de-programación
 
Programacion 1 feli
Programacion 1 feliProgramacion 1 feli
Programacion 1 feli
 
Línea del tiempo de la historia de los
Línea del tiempo de la historia de losLínea del tiempo de la historia de los
Línea del tiempo de la historia de los
 
Linea del tiempo
Linea del tiempoLinea del tiempo
Linea del tiempo
 
Linea programacion
Linea programacionLinea programacion
Linea programacion
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 

Similar a Flex y Bison (20)

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
 
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
 
COMPILADORES
COMPILADORESCOMPILADORES
COMPILADORES
 
INFORMATICA TRABAJO.docx
INFORMATICA TRABAJO.docxINFORMATICA TRABAJO.docx
INFORMATICA TRABAJO.docx
 
Flex y bison héctor espinosa
Flex y bison   héctor espinosaFlex y bison   héctor espinosa
Flex y bison héctor espinosa
 
684551811-Computacion-2-Unidad-1.pdf
684551811-Computacion-2-Unidad-1.pdf684551811-Computacion-2-Unidad-1.pdf
684551811-Computacion-2-Unidad-1.pdf
 
Resolución de problemas de algoritmo.
Resolución de problemas de algoritmo.Resolución de problemas de algoritmo.
Resolución de problemas de algoritmo.
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Software1
Software1Software1
Software1
 
Software1
Software1Software1
Software1
 
historia de la programacion.docx
historia de la programacion.docxhistoria de la programacion.docx
historia de la programacion.docx
 
EVOLUCIOIN DE LA PROGRAMAMCION.docx
EVOLUCIOIN DE LA PROGRAMAMCION.docxEVOLUCIOIN DE LA PROGRAMAMCION.docx
EVOLUCIOIN DE LA PROGRAMAMCION.docx
 
Bison y flex
Bison y flexBison y flex
Bison y flex
 
Flex bison
Flex bisonFlex bison
Flex bison
 
Colegio bilingüe maría auxiliadora
Colegio bilingüe maría auxiliadoraColegio bilingüe maría auxiliadora
Colegio bilingüe maría auxiliadora
 

Último

CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 

Último (16)

CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 

Flex y Bison

  • 1. EDISON CAICEDO Herramientas para la construcción de procesadores de lenguaje. 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 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 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
  • 2. 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 distante HISTORIA 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. 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: Unidad de entrada, para introducir datos e instrucciones. Memoria, donde se almacenaban datos y resultados intermedios. Unidad de control, para regular la secuencia de ejecución de las operaciones. Unidad Aritmético-Lógica, que efectúa las operaciones. Unidad de salida, encargada de comunicar al exterior los resultados.
  • 3. Diseño y construcción de un compilador
  • 4. Las herramientas Flex y Bison Son las herramientas desarrolladas en el proyecto GNU (Free Software Foundation) equivalentes a lex y yacc en el sistema operativo UNIX®. Están asociadas al lenguaje C, aunque flex puede también generar su salida en el lenguaje C++. Las referencias que creo oficiales (al menos en cuanto a documentación) son las siguientes (aunque también podrás conseguir estos documentos a través de los enlaces que aparecen posteriormente): Vern Paxson [1995] Flex, version Charles Donnelly, Richard Stallman [1999] Bison. The YACC-compatible Parser Generator. (Asigno la autoría a Donnelly y Stallman porque así lo ponía en la versión 1.28, aunque no aparece mención alguna en la última, 1.35. Por cierto, este Stallman es el mítico Stallman, por supuesto, para que veas cuáles son sus intereses particulares. Su sitio es espectacular.) Si usas GNU/Linux, es casi seguro que ya tengas instalados estos programas; si no los tienes, búscalos en tu distribución, porque están seguro. Para usarlos, solo tienes que leer la documentación, y listo. Que es Flex y Bison ¿Qué es 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 el la sintaxis usada para describir gramáticas.
  • 5. GNU bison tiene compatibilidad con Yacc, todas las gramáticas bien escritas para Yacc, funcionan en Bison sin necesidad de ser modificadas. Cualquier persona que esté familiarizada con Yacc podría utilizar Bison sin problemas. Bison fue escrito en un principio por Robert Corbett; Richard Stallman lo hizo compatible con Yacc y Wilfred Hansen de la Carnegie Mellon University añadió soporte para literales multicaracter y otras características. Flex: El Flex define las reglas de reconocimiento de símbolos (Tokens) a partir de expresiones regulares. Cuando un Token es reconocido por uno de estos patrones de agrupamiento se le define una acción, por lo general esta acción es devolver el Tipo y el valor (lexema). El Flex cuando se utiliza combinado con el Bison, utiliza las definiciones de los Tokens realizadas en el Bison para la comunicación entre ellos, Los ficheros del Flex para C++ utilizan por convenio la extensión ‘.ll’. La sintaxis de un fichero en flex es la siguiente: ... definiciones ... %% ... reglas... %% ... subrutinas ...
  • 6. Como se instala Flex y Bison