SlideShare uma empresa Scribd logo
1 de 8
Baixar para ler offline
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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Semelhante 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

Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerenciacubillannoly
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 

Último (20)

Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Slideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan GerenciaSlideshare y Scribd - Noli Cubillan Gerencia
Slideshare y Scribd - Noli Cubillan Gerencia
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 

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