SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
PONTIFICIA UNIVERSIDAD CATOLICA DEL ECUADOR
SEDE IBARRA
ALBERTO JACOME
HERRAMIENTAS PARA LA CONSTRUCCION DE PROCESADORES DE LENGUAJE
La construcción de un procesador de lenguaje es una tarea compleja, y suelen usarse herramientas
de desarrollo de software convencionales (control de la traza, puntos de ruptura, depuradores o
debuggers, etc...). Sin embargo en el caso concreto de los procesadores de lenguaje se pueden
añadir a estas herramientas otras más especializadas, que se han denominado con distintos
nombres: compilador de compiladores (compiler-compilers), generadores de compiladores
(compilers-generators), o sistemas de escritura de traductores (translator-writing systems). A
continuación se muestra una lista de herramientas de este último tipo:
• Generadores de analizadores léxicos (scanner generators): Construyen automáticamente el
código fuente para el análisis léxico a partir de una especificación de los tokens del lenguaje. Esta
especificación está basada en el uso de expresiones regulares, mientras que la organización del
operativos, así por ejemplo para el sistema operativo MS-
ha desarrollado GALEX [MART93].
• Generadores de analizadores sintácticos (parser generators): Construyen el código fuente del
analizador a partir de la especificación de la gramática del lenguaje fuente. Las gramáticas deben
incorporada con el sistema operativo UNIX. Existen versiones comerciales para otros sistemas
operativos, así por ejemplo para el sistema operativo MS-DOS, se puede encontrar PCYACC
(Abraxas Software Inc.) o como software de dominio público BISON. En la Universidad de Oviedo
se ha desarrollado YACCOV [CABA91]. También se están desarrollando nuevas herramientas: JACK
[JACKi], ANTLR [ANTLi], JavaCC, VisualParse++, LL(1) Tools, Yacc++, JavaCUP, etc.
• Analizadores de gramáticas: Dada una gramática especificada formalmente, verifican si es de un
determinado tipo o no. Normalmente se utilizan para verificar las gramáticas LL(k) y LR(k). En la
Universidad de Oviedo se ha desarrollado un analizador de gramáticas LL(1).
• Máquinas de traducción dirigida por sintáxis (syntax-directed translation engines): Producen un
conjunto de rutinas que recorren el árbol sintáctico y generan código intermedio. Se basan en
asociar una o más traducciones a cada nodo del árbol sintáctico.
• Generadores automáticos de código (automatic code generators): Estas herramientas trabajan
con un conjunto de reglas que permiten la tradución del código en lenguaje intermedio al lenguaje
objeto. Las reglas suelen ser reemplazar instrucciones de código intermedio por patrones que
contienen las instrucciones equivalentes de la máquina objeto [MAUR90, LEWI90].
• Analizadores de flujo (data-flow engines): Estas herramientas suministran la información
necesaria para realizar la optimización de código. La reunión de todas estas herramientas
constituyen los denominados compilador de compiladores, que a partir de unas especificaciones
del lenguaje fuente a compilar y del lenguaje objeto, se genera automáticamente el código fuente
del traductor.
APLICACIONES DE LOS PROCESADORES DE LENGUAJE
Las técnicas empleadas en la construcción de traductores, compiladores e intérpretes pueden
aplicarse en la construcción de otras herramientas algunas de las cuales se presentan a
continuación:
• Editoressensibles al contexto: Los editores permiten crear y modificar programas fuente, sin
embargo los editores sensibles al contexto avisan al programador de posibles errores sintácticos
cuando está escribiendo un programa fuente en un determinado lenguaje de programación.
Actualmente la mayor parte de los compiladores incluyen un entorno de programación con un
editor con sintaxis resaltada por colores.
• Conversores de formatos: Utilizan la tecnología de los traductores para convertir una descripción
de ficheros en otra.
• Preprocesadores: Toman como entrada un conjunto de instrucciones y generan código en un
lenguaje de alto o medio nivel.
• Formateadores de código fuente: Tienen como entrada un código fuente, y obtienen como
salida el mismo código fuente mostrado de forma que se puede seguir perfectamente la
estructura del programa.
• Generadores de código: Permiten desarrollar aplicaciones a partir de unas especificaciones muy
compactas, que pueden ser tratadas como un lenguaje de aplicación [LEWI90].
• Generadores de pantallas: Son un caso particular de los generadores de código.
• Verificación estática de programas: Leen el programa fuente y lo analizan para descubrir errores
potenciales, sin ejecutar dicho programa. Ejemplo lint (incorporado de forma estándar por UNIX) y
PC-
• Formateadores de texto: Reciben como entrada un texto con indicaciones de como se desea la
salida y generan dicho texto formateado en un fichero, o para una determinada impresora.
Pueden estar especializados en fórmulas matemáticas, químicas, escritura de música, etc...
Ejemplos TROFF, EQN, etc...
• Intérpretes de comandos de un sistema operativo: Reciben las órdenes del sistema operativo, las
analizan y las ejecutan. Ejemplo COMMAND.COM de MS-DOS.
• Construcción de entornos operativos: Es un caso particular del anterior en el cual las órdenes
suelen recibirse en forma gráfica. Ejemplos WINDOWS, GEM, Macintosh, etc...
• Intérpretes para consultar bases de datos: Reciben las consultas de la base de datos, las analizan
y las ejecutan. Ejemplos SQL, DBASE, etc...
• Compiladores de silicio (silicon compilers): Utilizan las mismas técnicas de construcción de
traductores, compiladores e intérpretes pero implementadas en hardware [BROD92].
• Procesamiento de lenguajes naturales: Aplican las técnicas de construcción de traductores a los
lenguajes naturales (Inglés, Castellano, etc...) permitiendo el análisis, comprensión y traducción.
• Reconocimiento del habla: Se realiza un análisis de los sonidos para construir las palabras.
• Desarrollo de pequeños lenguajes: Suelen ser pequeños lenguajes específicos para el problema
que resuelve la aplicación informática dentro de la cual se desarrollan [FRAN91]
RESEÑA HISTORICA
Los primeros algoritmos conocidos fueron desarrollados en Mesopotamia (región de Irak) entre los
años 3000 y 1500 a.C., cerca de la ciudad de Babilonia. Estos algoritmos eran secuencias de
instrucciones, no tenían estructuras de control alternativas (escribían el algoritmo de diversas
formas) ni repetitivas (escribian las instrucciones tantas veces como fuera necesario). Un estudio
sobre estos algoritmos puede consultarse en el artículo Ancient babylonian algorithms [KNUT72].
El matemático griego Euclides en el siglo IV a.C. construyó un algoritmo para el cálculo del máximo
común divisor de dos números naturales. Este algoritmo ya incluía estructuras de control
iterativas. Charles Babbage construyo entre los años 1820 y 1850 dos máquinas de computar,
ninguna de las cuales fue terminada. De las dos, la máquina analítica fue la que más se parecía a
los ordenadores digitales modernos. Los programas estaban escritos en lenguaje máquina y
utilizaban ciertas tarjetas de operación y de variables (no había memoria). Junto a Babbage trabajó
Ada Augusta, condesa de Lovelace, hija del poeta Lord Byron, que es reconocida por algunos como
la primera programadora (en su honor se llamó Ada al lenguaje desarrollado bajo los auspicios del
Ministerio de Defensa de los Estados Unidos).
Las herramientas Flex y Bison.
Son generadores de analizadores sintácticos
Introducción a Flex
Flex es un una herramienta que permite generar analizadores léxicos. A partir de un conjunto de
expresiones regulares, Flex busca concordancias en un fichero de entrada y ejecuta acciones
asociadas a estas expresiones. 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.
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. Todas la gramáticas escritas apropiadamente para
Yacc deberían funcionar con Bison sin ningún cambio.
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 ...
Como se instala Flex y Bison
Flexybison
Flexybison

Weitere ähnliche Inhalte

Was ist angesagt?

Compilador Funcionamiento
Compilador FuncionamientoCompilador Funcionamiento
Compilador FuncionamientoKriz Kozlov
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libreDanielita Lopez
 
C:\fakepath\compilador
C:\fakepath\compiladorC:\fakepath\compilador
C:\fakepath\compiladorDLACGP
 
Los compiladores erika y carolina
Los compiladores erika y carolinaLos compiladores erika y carolina
Los compiladores erika y carolinaErika Flores
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iRossana Sosa
 
C:\fakepath\compiladores
C:\fakepath\compiladoresC:\fakepath\compiladores
C:\fakepath\compiladorespaulina8
 
Cap2
Cap2Cap2
Cap2CJAO
 
Compiladores diapositivas
Compiladores diapositivasCompiladores diapositivas
Compiladores diapositivasjonathangrief
 
Cap2 compiladores
Cap2 compiladoresCap2 compiladores
Cap2 compiladoresCJAO
 
Tarea de compiladores carmen vargas_metacompiladordescompilador
Tarea de compiladores carmen vargas_metacompiladordescompiladorTarea de compiladores carmen vargas_metacompiladordescompilador
Tarea de compiladores carmen vargas_metacompiladordescompiladorMARCO POLO SILVA SEGOVIA
 
Especialidad
EspecialidadEspecialidad
Especialidadbecew
 

Was ist angesagt? (16)

Compilador Funcionamiento
Compilador FuncionamientoCompilador Funcionamiento
Compilador Funcionamiento
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libre
 
C:\fakepath\compilador
C:\fakepath\compiladorC:\fakepath\compilador
C:\fakepath\compilador
 
Flex ybison
Flex ybisonFlex ybison
Flex ybison
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Los compiladores erika y carolina
Los compiladores erika y carolinaLos compiladores erika y carolina
Los compiladores erika y carolina
 
Grupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes iGrupo 1 proceso de lenguajes i
Grupo 1 proceso de lenguajes i
 
C:\fakepath\compiladores
C:\fakepath\compiladoresC:\fakepath\compiladores
C:\fakepath\compiladores
 
Cap2
Cap2Cap2
Cap2
 
Compiladores diapositivas
Compiladores diapositivasCompiladores diapositivas
Compiladores diapositivas
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Cap2 compiladores
Cap2 compiladoresCap2 compiladores
Cap2 compiladores
 
Tarea de compiladores carmen vargas_metacompiladordescompilador
Tarea de compiladores carmen vargas_metacompiladordescompiladorTarea de compiladores carmen vargas_metacompiladordescompilador
Tarea de compiladores carmen vargas_metacompiladordescompilador
 
Tema 1 introducción compilador
Tema 1 introducción compiladorTema 1 introducción compilador
Tema 1 introducción compilador
 
Compilador
CompiladorCompilador
Compilador
 
Especialidad
EspecialidadEspecialidad
Especialidad
 

Andere mochten auch

Dieu Tri Thap Khop
Dieu Tri Thap KhopDieu Tri Thap Khop
Dieu Tri Thap Khopsaundra572
 
FHQ Social Media
FHQ Social MediaFHQ Social Media
FHQ Social MediaSam Beggins
 
Managing Effective Teams Seminar
Managing Effective Teams SeminarManaging Effective Teams Seminar
Managing Effective Teams SeminarJerry Cotino
 
Thoai Hoa Khop Xuong
Thoai Hoa Khop XuongThoai Hoa Khop Xuong
Thoai Hoa Khop Xuongjune498
 
Peek-Howe Website Design
Peek-Howe Website DesignPeek-Howe Website Design
Peek-Howe Website Designnataliegillis
 
Animatii lectura in cdi
Animatii lectura in cdiAnimatii lectura in cdi
Animatii lectura in cdibogancamelia
 
Ligament and Joint Regeneration and Neuvo-generation of the Knee
Ligament and Joint Regeneration and Neuvo-generation of the Knee Ligament and Joint Regeneration and Neuvo-generation of the Knee
Ligament and Joint Regeneration and Neuvo-generation of the Knee Dr. Alimorad Farshchian
 
50 Lispenard by Michel Abboud
50 Lispenard by Michel Abboud50 Lispenard by Michel Abboud
50 Lispenard by Michel AbboudMichel Abboud
 
Pinterest spam followers
Pinterest spam followersPinterest spam followers
Pinterest spam followersmartin521
 
Working near our loads
Working near our loadsWorking near our loads
Working near our loadsTerry Penney
 
Obtenga Finest Terrenos Ofertas en Londres desde Expertos en Propiedad Recono...
Obtenga Finest Terrenos Ofertas en Londres desde Expertos en Propiedad Recono...Obtenga Finest Terrenos Ofertas en Londres desde Expertos en Propiedad Recono...
Obtenga Finest Terrenos Ofertas en Londres desde Expertos en Propiedad Recono...watsonryan
 
Access Energetics Keys ( nicht Bars !)
Access Energetics Keys  ( nicht Bars !)Access Energetics Keys  ( nicht Bars !)
Access Energetics Keys ( nicht Bars !)Armin Kiy
 
Fantastic Recommendations For Getting The Best Insurance For Your Requirements
Fantastic Recommendations For Getting The Best Insurance For Your RequirementsFantastic Recommendations For Getting The Best Insurance For Your Requirements
Fantastic Recommendations For Getting The Best Insurance For Your Requirementsfancypyramid8507
 

Andere mochten auch (20)

ejercicio 4
ejercicio 4ejercicio 4
ejercicio 4
 
Dieu Tri Thap Khop
Dieu Tri Thap KhopDieu Tri Thap Khop
Dieu Tri Thap Khop
 
Computacion basica ro
Computacion basica roComputacion basica ro
Computacion basica ro
 
resume 2014
resume 2014resume 2014
resume 2014
 
FHQ Social Media
FHQ Social MediaFHQ Social Media
FHQ Social Media
 
Managing Effective Teams Seminar
Managing Effective Teams SeminarManaging Effective Teams Seminar
Managing Effective Teams Seminar
 
Thoai Hoa Khop Xuong
Thoai Hoa Khop XuongThoai Hoa Khop Xuong
Thoai Hoa Khop Xuong
 
Angle2011
Angle2011Angle2011
Angle2011
 
Peek-Howe Website Design
Peek-Howe Website DesignPeek-Howe Website Design
Peek-Howe Website Design
 
Animatii lectura in cdi
Animatii lectura in cdiAnimatii lectura in cdi
Animatii lectura in cdi
 
Ligament and Joint Regeneration and Neuvo-generation of the Knee
Ligament and Joint Regeneration and Neuvo-generation of the Knee Ligament and Joint Regeneration and Neuvo-generation of the Knee
Ligament and Joint Regeneration and Neuvo-generation of the Knee
 
50 Lispenard by Michel Abboud
50 Lispenard by Michel Abboud50 Lispenard by Michel Abboud
50 Lispenard by Michel Abboud
 
Practica 7
Practica 7 Practica 7
Practica 7
 
Pinterest spam followers
Pinterest spam followersPinterest spam followers
Pinterest spam followers
 
Working near our loads
Working near our loadsWorking near our loads
Working near our loads
 
P6-8_CH323_Entrevista
P6-8_CH323_EntrevistaP6-8_CH323_Entrevista
P6-8_CH323_Entrevista
 
Obtenga Finest Terrenos Ofertas en Londres desde Expertos en Propiedad Recono...
Obtenga Finest Terrenos Ofertas en Londres desde Expertos en Propiedad Recono...Obtenga Finest Terrenos Ofertas en Londres desde Expertos en Propiedad Recono...
Obtenga Finest Terrenos Ofertas en Londres desde Expertos en Propiedad Recono...
 
Metallica
MetallicaMetallica
Metallica
 
Access Energetics Keys ( nicht Bars !)
Access Energetics Keys  ( nicht Bars !)Access Energetics Keys  ( nicht Bars !)
Access Energetics Keys ( nicht Bars !)
 
Fantastic Recommendations For Getting The Best Insurance For Your Requirements
Fantastic Recommendations For Getting The Best Insurance For Your RequirementsFantastic Recommendations For Getting The Best Insurance For Your Requirements
Fantastic Recommendations For Getting The Best Insurance For Your Requirements
 

Ähnlich wie Flexybison

Tutorial Flex y Bison
Tutorial Flex y BisonTutorial Flex y Bison
Tutorial Flex y BisonShirlid .n
 
Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladoresbachispasaca
 
Flex y bison héctor espinosa
Flex y bison   héctor espinosaFlex y bison   héctor espinosa
Flex y bison héctor espinosaHector Espinosa
 
Especialidad
EspecialidadEspecialidad
EspecialidadDilan19
 
Repuesto de expo de programacion
Repuesto de expo de programacionRepuesto de expo de programacion
Repuesto de expo de programacionelizabethrmlm
 
1.5 GENERADORES DE CODIGO PARA COMPILADORES (COMPILADOR DE COMPILADORES)
1.5  GENERADORES  DE CODIGO  PARA COMPILADORES (COMPILADOR DE COMPILADORES)1.5  GENERADORES  DE CODIGO  PARA COMPILADORES (COMPILADOR DE COMPILADORES)
1.5 GENERADORES DE CODIGO PARA COMPILADORES (COMPILADOR DE COMPILADORES)elizabethrmlm
 
Resolución de problemas de algoritmo.
Resolución de problemas de algoritmo.Resolución de problemas de algoritmo.
Resolución de problemas de algoritmo.francisco dixon
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libreDanielita Lopez
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libreDanielita Lopez
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libreDLACGP
 

Ähnlich wie Flexybison (20)

Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
Tutorial Flex y Bison
Tutorial Flex y BisonTutorial Flex y Bison
Tutorial Flex y Bison
 
Flex bison
Flex bisonFlex bison
Flex bison
 
Materia unidad compiladores
Materia unidad compiladoresMateria unidad compiladores
Materia unidad compiladores
 
Flex y bison héctor espinosa
Flex y bison   héctor espinosaFlex y bison   héctor espinosa
Flex y bison héctor espinosa
 
El estudio de los lenguajes de programacion
El estudio de los lenguajes de programacionEl estudio de los lenguajes de programacion
El estudio de los lenguajes de programacion
 
COMPILADORES
COMPILADORESCOMPILADORES
COMPILADORES
 
Especialidad
EspecialidadEspecialidad
Especialidad
 
Flex y bison
Flex y  bisonFlex y  bison
Flex y bison
 
Repuesto de expo de programacion
Repuesto de expo de programacionRepuesto de expo de programacion
Repuesto de expo de programacion
 
1.5 GENERADORES DE CODIGO PARA COMPILADORES (COMPILADOR DE COMPILADORES)
1.5  GENERADORES  DE CODIGO  PARA COMPILADORES (COMPILADOR DE COMPILADORES)1.5  GENERADORES  DE CODIGO  PARA COMPILADORES (COMPILADOR DE COMPILADORES)
1.5 GENERADORES DE CODIGO PARA COMPILADORES (COMPILADOR DE COMPILADORES)
 
Taller Flex Bison
Taller Flex BisonTaller Flex Bison
Taller Flex Bison
 
Flex y bison
Flex y bisonFlex y bison
Flex y bison
 
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
 
ingenieria de software
ingenieria de softwareingenieria de software
ingenieria de software
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libre
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libre
 
C:\fakepath\el software libre
C:\fakepath\el software libreC:\fakepath\el software libre
C:\fakepath\el software libre
 

Kürzlich hochgeladen

Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
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
 
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
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
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
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
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
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
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
 

Kürzlich hochgeladen (20)

Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
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
 
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
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.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
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
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ú
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
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
 

Flexybison

  • 1. PONTIFICIA UNIVERSIDAD CATOLICA DEL ECUADOR SEDE IBARRA ALBERTO JACOME HERRAMIENTAS PARA LA CONSTRUCCION DE PROCESADORES DE LENGUAJE La construcción de un procesador de lenguaje es una tarea compleja, y suelen usarse herramientas de desarrollo de software convencionales (control de la traza, puntos de ruptura, depuradores o debuggers, etc...). Sin embargo en el caso concreto de los procesadores de lenguaje se pueden añadir a estas herramientas otras más especializadas, que se han denominado con distintos nombres: compilador de compiladores (compiler-compilers), generadores de compiladores (compilers-generators), o sistemas de escritura de traductores (translator-writing systems). A continuación se muestra una lista de herramientas de este último tipo: • Generadores de analizadores léxicos (scanner generators): Construyen automáticamente el código fuente para el análisis léxico a partir de una especificación de los tokens del lenguaje. Esta especificación está basada en el uso de expresiones regulares, mientras que la organización del operativos, así por ejemplo para el sistema operativo MS- ha desarrollado GALEX [MART93]. • Generadores de analizadores sintácticos (parser generators): Construyen el código fuente del analizador a partir de la especificación de la gramática del lenguaje fuente. Las gramáticas deben incorporada con el sistema operativo UNIX. Existen versiones comerciales para otros sistemas operativos, así por ejemplo para el sistema operativo MS-DOS, se puede encontrar PCYACC (Abraxas Software Inc.) o como software de dominio público BISON. En la Universidad de Oviedo se ha desarrollado YACCOV [CABA91]. También se están desarrollando nuevas herramientas: JACK [JACKi], ANTLR [ANTLi], JavaCC, VisualParse++, LL(1) Tools, Yacc++, JavaCUP, etc. • Analizadores de gramáticas: Dada una gramática especificada formalmente, verifican si es de un determinado tipo o no. Normalmente se utilizan para verificar las gramáticas LL(k) y LR(k). En la Universidad de Oviedo se ha desarrollado un analizador de gramáticas LL(1). • Máquinas de traducción dirigida por sintáxis (syntax-directed translation engines): Producen un conjunto de rutinas que recorren el árbol sintáctico y generan código intermedio. Se basan en asociar una o más traducciones a cada nodo del árbol sintáctico. • Generadores automáticos de código (automatic code generators): Estas herramientas trabajan con un conjunto de reglas que permiten la tradución del código en lenguaje intermedio al lenguaje
  • 2. objeto. Las reglas suelen ser reemplazar instrucciones de código intermedio por patrones que contienen las instrucciones equivalentes de la máquina objeto [MAUR90, LEWI90]. • Analizadores de flujo (data-flow engines): Estas herramientas suministran la información necesaria para realizar la optimización de código. La reunión de todas estas herramientas constituyen los denominados compilador de compiladores, que a partir de unas especificaciones del lenguaje fuente a compilar y del lenguaje objeto, se genera automáticamente el código fuente del traductor. APLICACIONES DE LOS PROCESADORES DE LENGUAJE Las técnicas empleadas en la construcción de traductores, compiladores e intérpretes pueden aplicarse en la construcción de otras herramientas algunas de las cuales se presentan a continuación: • Editoressensibles al contexto: Los editores permiten crear y modificar programas fuente, sin embargo los editores sensibles al contexto avisan al programador de posibles errores sintácticos cuando está escribiendo un programa fuente en un determinado lenguaje de programación. Actualmente la mayor parte de los compiladores incluyen un entorno de programación con un editor con sintaxis resaltada por colores. • Conversores de formatos: Utilizan la tecnología de los traductores para convertir una descripción de ficheros en otra. • Preprocesadores: Toman como entrada un conjunto de instrucciones y generan código en un lenguaje de alto o medio nivel. • Formateadores de código fuente: Tienen como entrada un código fuente, y obtienen como salida el mismo código fuente mostrado de forma que se puede seguir perfectamente la estructura del programa. • Generadores de código: Permiten desarrollar aplicaciones a partir de unas especificaciones muy compactas, que pueden ser tratadas como un lenguaje de aplicación [LEWI90]. • Generadores de pantallas: Son un caso particular de los generadores de código. • Verificación estática de programas: Leen el programa fuente y lo analizan para descubrir errores potenciales, sin ejecutar dicho programa. Ejemplo lint (incorporado de forma estándar por UNIX) y PC- • Formateadores de texto: Reciben como entrada un texto con indicaciones de como se desea la salida y generan dicho texto formateado en un fichero, o para una determinada impresora. Pueden estar especializados en fórmulas matemáticas, químicas, escritura de música, etc... Ejemplos TROFF, EQN, etc...
  • 3. • Intérpretes de comandos de un sistema operativo: Reciben las órdenes del sistema operativo, las analizan y las ejecutan. Ejemplo COMMAND.COM de MS-DOS. • Construcción de entornos operativos: Es un caso particular del anterior en el cual las órdenes suelen recibirse en forma gráfica. Ejemplos WINDOWS, GEM, Macintosh, etc... • Intérpretes para consultar bases de datos: Reciben las consultas de la base de datos, las analizan y las ejecutan. Ejemplos SQL, DBASE, etc... • Compiladores de silicio (silicon compilers): Utilizan las mismas técnicas de construcción de traductores, compiladores e intérpretes pero implementadas en hardware [BROD92]. • Procesamiento de lenguajes naturales: Aplican las técnicas de construcción de traductores a los lenguajes naturales (Inglés, Castellano, etc...) permitiendo el análisis, comprensión y traducción. • Reconocimiento del habla: Se realiza un análisis de los sonidos para construir las palabras. • Desarrollo de pequeños lenguajes: Suelen ser pequeños lenguajes específicos para el problema que resuelve la aplicación informática dentro de la cual se desarrollan [FRAN91] RESEÑA HISTORICA Los primeros algoritmos conocidos fueron desarrollados en Mesopotamia (región de Irak) entre los años 3000 y 1500 a.C., cerca de la ciudad de Babilonia. Estos algoritmos eran secuencias de instrucciones, no tenían estructuras de control alternativas (escribían el algoritmo de diversas formas) ni repetitivas (escribian las instrucciones tantas veces como fuera necesario). Un estudio sobre estos algoritmos puede consultarse en el artículo Ancient babylonian algorithms [KNUT72]. El matemático griego Euclides en el siglo IV a.C. construyó un algoritmo para el cálculo del máximo común divisor de dos números naturales. Este algoritmo ya incluía estructuras de control iterativas. Charles Babbage construyo entre los años 1820 y 1850 dos máquinas de computar, ninguna de las cuales fue terminada. De las dos, la máquina analítica fue la que más se parecía a los ordenadores digitales modernos. Los programas estaban escritos en lenguaje máquina y utilizaban ciertas tarjetas de operación y de variables (no había memoria). Junto a Babbage trabajó Ada Augusta, condesa de Lovelace, hija del poeta Lord Byron, que es reconocida por algunos como la primera programadora (en su honor se llamó Ada al lenguaje desarrollado bajo los auspicios del Ministerio de Defensa de los Estados Unidos). Las herramientas Flex y Bison. Son generadores de analizadores sintácticos
  • 4. Introducción a Flex Flex es un una herramienta que permite generar analizadores léxicos. A partir de un conjunto de expresiones regulares, Flex busca concordancias en un fichero de entrada y ejecuta acciones asociadas a estas expresiones. 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. 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. Todas la gramáticas escritas apropiadamente para Yacc deberían funcionar con Bison sin ningún cambio. Diseño y construcción de un compilador
  • 5.
  • 6. 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 ...
  • 7. Como se instala Flex y Bison