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
Edison caicedo
Edison caicedo

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
 

Destaque

No inventes al otro, descúbrelo
No inventes al otro, descúbreloNo inventes al otro, descúbrelo
No inventes al otro, descúbreloDiamond Building
 
Universidades juan david bello garay
Universidades juan david bello garayUniversidades juan david bello garay
Universidades juan david bello garayxxjuanchito
 
Torneio sobre rodas 3x3 resumo
Torneio sobre rodas 3x3   resumoTorneio sobre rodas 3x3   resumo
Torneio sobre rodas 3x3 resumoTiago Silva
 
Opn2002 e Samsung Galaxy Tab
Opn2002 e Samsung Galaxy TabOpn2002 e Samsung Galaxy Tab
Opn2002 e Samsung Galaxy TabScanSource Brasil
 
Publicação aviso dr
Publicação aviso drPublicação aviso dr
Publicação aviso drTesoureiro
 
Presentación power point colores otoñales de gisela sánchez moreno
Presentación power point colores otoñales de gisela sánchez morenoPresentación power point colores otoñales de gisela sánchez moreno
Presentación power point colores otoñales de gisela sánchez morenoGiselaSM
 
Danny mota eje3_actividad3
Danny mota eje3_actividad3Danny mota eje3_actividad3
Danny mota eje3_actividad3medyco
 
Triptico alvega e concavada digital
Triptico alvega e concavada digitalTriptico alvega e concavada digital
Triptico alvega e concavada digitalGuilherme Pires
 
Escuela normal superior
Escuela normal superiorEscuela normal superior
Escuela normal superiorluralolo1506
 
Programas y asociaciones profesionales
Programas y asociaciones profesionalesProgramas y asociaciones profesionales
Programas y asociaciones profesionalesJohana Rojas
 
Do these Bible verses really say that God can heal the sick?
Do these Bible verses really say that God can heal the sick?Do these Bible verses really say that God can heal the sick?
Do these Bible verses really say that God can heal the sick?8hearingpta
 
Classificação futebol juvenil 2015
Classificação futebol juvenil 2015Classificação futebol juvenil 2015
Classificação futebol juvenil 2015Bruno Ferreira
 
De Kracht van het Verhaal LinkedIn sam
De Kracht van het Verhaal LinkedIn samDe Kracht van het Verhaal LinkedIn sam
De Kracht van het Verhaal LinkedIn samBert Hendriks MBA
 

Destaque (20)

No inventes al otro, descúbrelo
No inventes al otro, descúbreloNo inventes al otro, descúbrelo
No inventes al otro, descúbrelo
 
Universidades juan david bello garay
Universidades juan david bello garayUniversidades juan david bello garay
Universidades juan david bello garay
 
El halcón y la rama
El halcón y la ramaEl halcón y la rama
El halcón y la rama
 
Torneio sobre rodas 3x3 resumo
Torneio sobre rodas 3x3   resumoTorneio sobre rodas 3x3   resumo
Torneio sobre rodas 3x3 resumo
 
Opn2002 e Samsung Galaxy Tab
Opn2002 e Samsung Galaxy TabOpn2002 e Samsung Galaxy Tab
Opn2002 e Samsung Galaxy Tab
 
Tefa
TefaTefa
Tefa
 
J hilburn advantage
J hilburn advantageJ hilburn advantage
J hilburn advantage
 
Publicação aviso dr
Publicação aviso drPublicação aviso dr
Publicação aviso dr
 
Presentación power point colores otoñales de gisela sánchez moreno
Presentación power point colores otoñales de gisela sánchez morenoPresentación power point colores otoñales de gisela sánchez moreno
Presentación power point colores otoñales de gisela sánchez moreno
 
Produção da unidades de saúde de Iracemápolis/SP mês de agosto de 2014
Produção da unidades de saúde de Iracemápolis/SP mês de agosto de 2014Produção da unidades de saúde de Iracemápolis/SP mês de agosto de 2014
Produção da unidades de saúde de Iracemápolis/SP mês de agosto de 2014
 
Danny mota eje3_actividad3
Danny mota eje3_actividad3Danny mota eje3_actividad3
Danny mota eje3_actividad3
 
Triptico alvega e concavada digital
Triptico alvega e concavada digitalTriptico alvega e concavada digital
Triptico alvega e concavada digital
 
Escuela normal superior
Escuela normal superiorEscuela normal superior
Escuela normal superior
 
Pln
PlnPln
Pln
 
Programas y asociaciones profesionales
Programas y asociaciones profesionalesProgramas y asociaciones profesionales
Programas y asociaciones profesionales
 
Pe a 140_semeradm_1
Pe a 140_semeradm_1Pe a 140_semeradm_1
Pe a 140_semeradm_1
 
Do these Bible verses really say that God can heal the sick?
Do these Bible verses really say that God can heal the sick?Do these Bible verses really say that God can heal the sick?
Do these Bible verses really say that God can heal the sick?
 
Classificação futebol juvenil 2015
Classificação futebol juvenil 2015Classificação futebol juvenil 2015
Classificação futebol juvenil 2015
 
Tecnologia 2, 2
Tecnologia 2, 2Tecnologia 2, 2
Tecnologia 2, 2
 
De Kracht van het Verhaal LinkedIn sam
De Kracht van het Verhaal LinkedIn samDe Kracht van het Verhaal LinkedIn sam
De Kracht van het Verhaal LinkedIn sam
 

Semelhante a Edison caicedo (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
 

Edison caicedo

  • 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