1 Compiladores / Guía IV / Ciclo 02 - 2016 Centro de Investigación y Transferencia de Tecnología Analizador Léxico - Lex Facultad: Ingeniería Escuela: Computación Asignatura: Compiladores Contenido En la presente práctica se estudia la utilidad de otra herramienta para generar tablas de símbolos, las cuales están compuestas por cada token perteneciente a un lenguaje de programación. Cabe mencionar que profundizamos en este estudio debido a la complejidad del analizador sintáctico que se estudiará en una posterior práctica. Objetivos Específicos Construir analizadores léxicos haciendo uso de la herramienta FLEX. Material y Equipo Guía de laboratorio N° 4. Máquina Virtual Linux, distribución Bodhi. LXTerminal y Flex. Introducción Teórica Introducción La herramienta conocida como Lex, o Flex en una implementación más reciente, que nos permite generar un analizador léxico mediante la especificación de expresiones regulares para describir patrones de los tokens. La notación de entrada para la herramienta Lex se conoce como el lenguaje Lex. La herramienta en sí es el compilador Lex. El compilador Lex transforma los patrones de entrada en un diagrama de transición y genera el código del analizador lexicográfico. Visión General Las reglas de reconocimiento son de la forma: p1 {acción1} p2 {acción2} ... ... pn {acción} Donde p1 es una expresión regular y acción1 es un fragmento de programa que describe cuál ha de ser la acción del analizador léxico cuando se encuentra con un lexema que encaja con p1. En Lex, las acciones se escriben en C. Un programa en Lex tiene la siguiente forma: declaraciones %% reglas %% código de usuario 2 Compiladores / Guía IV / Ciclo 02 - 2016 Donde las declaraciones y las subrutinas de usuario a menudo se omiten. El segundo %% es opcional, pero el primero es obligatorio para marcar el comienzo de las reglas. El programa mínimo absoluto en Lex es, entonces, %% (no hay definiciones, no hay reglas) que se traduce en un programa que copia la entrada a la salida sin cambios. Patrones Funciones y Variables Predefinidas por LEX 3 Compiladores / Guía IV / Ciclo 02 - 2016 Procedimiento Instalando entorno Linux Bodhi. 1. Abra el VirtualBox, en el menú archivo seleccione la opción “importar servicio virtualizado” y buscar el archivo “Bodhi.ova”, el cual se encuentra ubicado en la unidad D (en la máquina en que se ha elaborado la guía, Bodhi.ova estaba en otra ubicación). Así podremos cargar la máquina virtual. 2. Si en algún momento se le solicita una clave, se puede utilizar la súper clave 123456. Una vez iniciado utilizaremos las herramientas de (1) LXTerminal (ubicada en el menú Aplicaciones->accesorios, la cual utilizaremos para compilar y (2) File Manager que utilizaremos para el manejo de los archivos para la práctica. Cuando iniciemos las dos herramientas debemos recordar: el File Manager mostrará la carpeta home/bodhi que es la carpeta principal de los archivos; y en la LXTerminal al abrirla se estará trabajando en esta dirección por lo que cuando naveguemos por las carpetas en la terminal debemos considerar eso. Ejemplo 1. 1. Comenzaremos por crear la carpeta para el primer ejemplo. Desde la ventana de File Manager Clic derecho Create New Folder. 4 Compiladores / Guía IV / Ciclo 02 - 2016 Verificando la creación del Folder: 2. Dentro de esta carpeta, se crean dos archivos: El primero será el que contendrá el texto a analizar [.txt]. El segundo archivo será nuestro analizador léxico. Creando el archivo con el texto a analizar: 3. Dentro de la carpeta “ejemplo1” creamos un archivo en blanco, el cual tendrá como nombre “hola.txt”. 4. Abrimos el archivo con doble clic y digitamos el texto siguiente: En informática, un programa Hola mundo es el que imprime el texto «¡Hola Mundo!» en un dispositivo de visualización, en la mayoría de los casos una pantalla de monitor. El Hola mundo se caracteriza por su sencillez, especialmente cuando se ejecuta en una interfaz de línea de comandos. El programa Hola mundo también puede ser útil como prueba de configuración para asegurar que el compilador, el entorno de desarrollo y el entorno de ejecución estén instalados correctamente y funcionando. En los sistemas basados en microcontroladores empleados para el aprendizaje, se suele considerar "Hola mundo" al programa que permite poner en modo intermitente un led. El programa consiste en mandar alternativamente un nivel alto y uno bajo por uno de los puertos del sistema, dando a cada uno de dichos niveles un valor de retardo. 5. Una vez agregado el texto guardamos los cambios y cerramos la ventana de edición. 5 Compiladores / Guía IV / Ciclo 02 - 2016 Creando el código fuente para el analizador léxico: 6. De igual forma como creamos el archivo de texto plano creamos uno con el nombre de hola.lex la extensión nos indicará que es nuestro analizador. 7. Una vez agregado, guardar el código fuente. Pasos para compilar y analizar Para compilar el analizador léxico no es muy diferente como se ha hecho hasta el momento para compilar los códigos fuentes haciendo uso de línea de comando. En este caso la terminal LXTerminal. 1. Buscar la carpeta en la que se encuentra el archivo a compilar, haciendo uso del comando cd. Recordemos que estamos en la raíz de la carpeta cuando inicia la terminal. Para ingresar a la carpeta se hace lo siguiente: 2. Una vez en la carpeta, procedemos a compilar, así: 6 Compiladores / Guía IV / Ciclo 02 - 2016 Como se puede observar, se puede leer el fichero de texto. Ejemplo 2. Analizador léxico que identifica palabras o números dentro de una sentencia, haciendo uso de expresiones regulares básicas. Crearemos una carpeta llamada Ejemplo2 y ahí tendremos los siguientes archivos. NOTA: Los archivos .out y .c son los que se generan a la hora de la compilación. 7 Compiladores / Guía IV / Ciclo 02 - 2016 Ahora, se muestra otra forma de poder compilar y analizar nuestro programa: Ejercicios propuestos: Escribir un fuente Flex que lea un fichero de texto, realice las siguientes acciones y presente los resultados por pantalla. 1. Contar el número de secuencias de caracteres escritas completamente en mayúsculas. 2. Contar el número de secuencias de caracteres escritas completamente en minúsculas. Investigación Complementaria 1. 2. 3. 4. 5. Contar el número de secuencias de caracteres que mezclen mayúsculas y minúsculas. Contar el número de números enteros. Contar el número de números reales. Calcular la suma de todos los números enteros encontrados. Calcular la suma de todos los números reales encontrados. Bibliografía Manuel Alfonseca Moreno, Marina de la Cruz Echeandía, Alfonso Ortega de la Puente, Estrella Pulido Cañabate, Compiladores: Teoría y Práctica, Pearson Educación, S.A., Madrid, 2006
© Copyright 2024