Trabajo flex byson

11
INTRODUCCION A FLEX Y BISON ACTIVIDAD SOBRE FLEX Y BISON Herramientas para la construcción de procesadores de lenguaje. 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. Suelen usarse herramientas de desarrollo de software convencionales ( control de traza, puntos de ruptura, depuradores, etc..). Sin embargo se pueden añadir a estas herramientas otras más especializadas que se han denominado con diferentes nombres : compilador de compiladores, generadores de compiladores, sistemas de escritura de traductores: 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) y LR(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 nodo sintá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áquina objeto. Analizadores de flujo: Suministran la información necesaria para realizar las optimizaciones de código.

Transcript of Trabajo flex byson

Page 1: Trabajo flex byson

INTRODUCCION A FLEX Y BISON

ACTIVIDAD SOBRE FLEX Y BISON

Herramientas para la construcción de procesadores de lenguaje.

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.

Suelen usarse herramientas de desarrollo de software convencionales ( control de traza, puntos de ruptura,

depuradores, etc..). Sin embargo se pueden añadir a estas herramientas otras más especializadas que se han

denominado con diferentes nombres : compilador de compiladores, generadores de compiladores, sistemas de

escritura de traductores:

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) y LR(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 nodo sintá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áquina objeto.

Analizadores de flujo: Suministran la información necesaria para realizar las optimizaciones de código.

Page 2: Trabajo flex byson

Aplicación de los lenguajes

Las técnicas empleadas en la construcción de traductores, compiladores e intérpretes pueden aplicarse en la construcción de otras herramientas:

Editores sensibles al contexto : Avisan al programador de posibles errores sintácticos cuando está escribiendo

un programa fuente. Actualmente es muy común editores con sintaxis resaltada con colores,

Conversores de formato: Utilizan las técnicas 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: Toman como entrada un código fuente y obtienen a la salida el mismo mostrado de manera que se pueda seguir 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. Un caso particular son los generadores de pantallas.

Verificación estática de programas: Leen el código fuente y lo analizan para descubrir errores potenciales sin ejecutar dicho programa.

Formateadores de texto: reciben como entrada un texto con indicaciones de cómo se desea la salida y generan

dicho texto formateado en un fichero, o para una determinada impresora. Pueden estar especializados para fórmulas matemáticas, químicas, música, etc.

Intérpretes de comandos de un sistema operativo: reciben órdenes del sistema operativo, las analizan y las

ejecutan ( Ej.: COMMAND.COM de MS-DOS).

Construcción de entornos operativos: Caso particular del anterior en el cual las órdenes suelen recibirse de forma gráfica ( Ej. WINDOWS).

Intérpretes para consultar base de datos: reciben las consultas, las analizan y las ejecutan (EJ.: SQL).

Compiladores de silicio: Utilizan las mismas técnicas de construcción de compiladores e intérpretes pero implantadas en hardware.

Procesamiento de lenguajes naturales: Aplican las técnicas de construcción de traductores a los lenguajes

naturales, permitiendo el análisis comprensión y traducción. Reconocimiento del habla: Se realiza un análisis de los sonidos para construir palabras

Reseña Histórica

Page 3: Trabajo flex byson
Page 4: Trabajo flex byson

Diseño y construcción de un compilador.

Page 5: Trabajo flex byson

Las herramientas Flex y Bison.

Estos nos ofrecen una gran cantidad de herramientas utilizando variables, operadores y librerías propias, como se detallan algunas en la siguiente descripción.

Page 6: Trabajo flex byson
Page 7: Trabajo flex byson

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, interpretes y analizadores de linea de comando.

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. 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 llamda ‘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 –d de Bison para que genera el fichero ‘y.tab.h’ que contiene las definiciones de todos los ‘%tokens’ que aparecen el fuente Bison.

Page 8: Trabajo flex byson

Como se instala Flex y Bison

Primero se descarga el archivo .rar . Creamos una carpeta en C que se llame DJGPP y descomprimimos los archivos contenidos en DJGPP ahí. Luego debemos crear una carpeta en la unidad C:\que se llame PRUEBAS. En esta carpeta cargaremos todos nuestros proyectos de Flex y Bison.

El siguiente paso es configurar las rutas de Flex y Bison, esto lo hacemos entrando al Cmd

Colocándonos en la carpeta de pruebas con los comandos

Cd\ Cd pruebas

Y escribimos estos comandos cd PRUEBAS set djgpp=c:\djgpp\djgpp.env set path=c:\djgpp\bin

Page 9: Trabajo flex byson

Con esto ya tendremos configurados Flex y Bison para que el Cmd los reconozca como comandos validos (cabe destacar que esta acción se tiene que repetir cada vez que se abre una nueva instancia del Cmd). Esto es la parte de configuración, ahora lo que se tiene que hacer es cargar los archivos léxicos y sintácticos creados en el bloc de notas. Por lo que se ejecutan los comandos Flex "nombre_de_archivo.l"

Y Bison -dy "nombre_de_archivo.y"

Se crean los archivos lexyy.c, y.tab.c, y.tab.h

Page 10: Trabajo flex byson

Como se compila con Flex y Bison

Para compilar se realizan los siguientes pasos: Escogemos una aplicación de consola y que sea un proyecto en c Agregamos los archivos creados por el Flex y bison Y compilamos Se crea el ejecutable con el nombre del proyecto en este caso "pruebita.exe"

Page 11: Trabajo flex byson

Y ejecutamos nuestro programa

2 Ejemplos de la creación de un compilador utilizando Flex y Bison.

IDENTIFICADOR

CALCULADORA