Estrategia de prompts, primeras ideas para su construcción
Taller Flex Bison
1. Nombre: Belén Vásquez
Fecha: 28/04/2019
COMPILADORES
Utilizando la herramienta de búsqueda de la Web, Investigar los siguientes temas:
• HERRAMIENTAS PARA LA CONSTRUCCIÓN DE PROCESADORES DE
LENGUAJE.
• Generadores de analizadores léxicos: basada en el uso de expresiones regulares,
generan automáticamente el código fuente para el análisis léxico a partir de una
especificación de los tokens. El generador es un autómata finito. La más usada es lex,
incorporada en el sistema operativo UNÍX. Existen versiones para PC.
• Generadores de analizadores sintácticos: Construyen el código fuente del analizador
sintáctico a partir de la especificación de la gramática del lenguaje fuente. La más
usada yacc incluida en UNÍX. Tambien existen versiones para PC.
• 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) yLR(k).
• Máquinas de traducción dirigida por sintaxis: Producen un conjunto de rutinas que
recorren el árbol sintáctico y generan código intermedio. Asocian una o más
traducciones a cada nodosintáctico.
• Generadores automáticos de código: Trabajan con un conjunto de reglas que
permiten la traducción del código en lenguaje intermedio al lenguaje objeto. Las
reglas suelen remplazar instrucciones de código intermedio por patrones que
contienen las instrucciones equivalentes de la máquinaobjeto.
• Analizadores de flujo: Suministran la información necesaria para realizar las
optimizaciones de código.
Estas son algunas de las herramientas disponibles que pueden utilizarse para la construcción de los Procesadores de
Lenguajes. Todas estas herramientas funcionan bajo Windows, aunque se puede utilizar, si se desea, cualquier otra
herramienta.
2. • RESEÑA HISTÓRICA
Las primeras aplicaciones del procesamiento del lenguaje natural surgieron entre 1940 y 1960,
teniendo como interés fundamental la traducción automática de textos entre diferentes
idiomas. Los experimentos en este ámbito se basaban fundamentalmente en la sustitución
automática palabra por palabra, por lo que se obtenían traducciones muy rudimentarias, que
no proporcionaban unos resultados claros. Surgió por tanto la necesidad de resolver
ambigüedades sintácticas y semánticas, así como la importancia de considerar la información
contextual. Los problemas más relevantes en este tiempo fueron la carencia de un orden de la
estructura oracional en algunas lenguas, y la dificultad para obtener una representación tanto
sintáctica como semántica, pero una vez que se empezaron a tener en cuenta se dio paso a
una concepción más realista del lenguaje en la que era necesario contemplar las
transformaciones que se producen en la estructura de la frase durante el proceso de
traducción. Los últimos años se caracterizan por la incorporación de técnicas estadísticas y el
desarrollo de formalismos adecuados para el tratamiento de la información léxica. Se ha
introducido nuevas técnicas de representación del conocimiento muy cercanas a la
inteligencia artificial, y las técnicas de procesamiento utilizadas por investigadores
procedentes del área de la lingüística e informática son cada vez más próximas.
• DISEÑO Y CONSTRUCCIÓN DE UN COMPILADOR.
• LAS HERRAMIENTAS FLEX Y BISON.
Flex y Bison es una herramienta que permite generar analizadores léxicos. A partir de un conjunto
3. de expresiones regulares, Flex busca concordancias en un fichero de entrada y ejecuta acciones
asociadas a estas expresiones.
• QUE ES FLEX Y BISON
Flex y Bison, un generador de analizadores léxicos el primero y un generador de analizadores
gramaticales el segundo, son dos herramientas útiles para crear programas que reaccionen a
una entrada de datos con una estructura y un lenguaje predeterminado, como por ejemplo,
podemos crear compiladores, intérpretes y analizadores de línea de comando.
Flex es una herramienta que permite generar analizadores léxicos. A partir de un conjunto
de expresiones regulares, Flex busca concordancias en un fichero de entrada y ejecuta
acciones asociadas a estas expresiones. Uno de los usos principales de Flex es como
acompañante del analizador de gramáticas Bison (o de Yacc).
Los analizadores Bison necesitan una función llamada ‘yylex()’ para devolverles el
siguiente token de la entrada. Esa función devuelve el tipo del próximo token y además
puede poner cualquier valor asociado en la variable global yylval. Para usar Flex con Bison,
normalmente se especifica la opción de Bison para que genera el fichero ‘y.tab.h’ que
contiene las definiciones de todos los ‘%tokens’ que aparecen el fuente Bison.