Zero
TEORÍA DE AUTÓMATAS
Práctica 2: Analizador léxico
1. JLEX: EL ANALIZADOR LÉXICO
1.1 EL ANALIZADOR LÉXICO JLEX
JLex es una utilidad disponible para LINUX que es capaz de generar analizadores léxicos, es decir, construye, de forma rápida y sencilla programas que analicen las cadenas que aparecenen un fichero de texto y realicen diversas acciones en respuesta a ellas. Toma como entrada un fichero de especificación en el que se incluyen ciertas expresiones regulares y genera un analizador léxico en java que, lógicamente podremos compilar y ejecutar. Gráficamente el esquema de funcionamiento para trabajar con JLex es el siguiente:
El analizador léxico construido procesará el fichero detexto que queramos analizar (entrada.txt) buscando en él aquellas cadenas que encajen con las expresiones regulares especificadas en analizador.lex.
1.2 CONSTRUCCIÓN DEL ANALIZADOR LÉXICO PASO A PASO
Veamos cómo se realiza este proceso de construcción de un analizador léxico mediante el uso de JLex. Los pasos son los siguientes: 1. Se edita un fichero de texto que se suele denominar fichero deespecificación (analizador.lex) para JLex, en el que se especifica, entre otras cosas, un conjunto de reglas de la forma expresión regular - acción. Cada e.r. va a denotar un conjunto de cadenas (válidas en el lenguaje que definamos) y la acción será una serie de órdenes (escritas en código java), que serán ejecutadas cuando el analizador léxico que estamos construyendo encuentre, en el texto aanalizar, una cadena de las especificadas con la expresión regular. 2. Se ejecuta JLex dándole como entrada el anterior fichero de especificación. En caso de no encontrar errores JLex genera un programa escrito en java que contiene el analizador léxico que pretendemos construir. java JLex.Main analizador.lex
Genera un fichero llamado analizador.lex.java. Por comodidad, lo renombramos aanalizador.java (mv analizador.lex.java analizador.java) 3. Se compila el fichero anterior para obtener nuestro analizador léxico en código ejecutable. javac analizador.java Obtendremos una clase (Analex.class u otro nombre con extensión .class) que contiene al analizador léxico listo para empezar a trabajar con él.
1.3 UTILIZACIÓN DEL ANALIZADOR LÉXICO CONSEGUIDO
Para usar el analizador léxico,realizaremos los siguientes pasos: 1. Editamos un fichero que contendrá el texto que queremos analizar. En algunos casos en vez de crear un fichero y pasárselo al analizador podemos dar el texto al analizador a través de teclado. 2. El analizador va leyendo el fichero y si encuentra que la cadena leída es denotada por alguna de las expresiones regulares del fichero de especificación entonces ejecuta laacción asociada a esa expresión y sigue leyendo del fichero. Normalmente la salida irá a un fichero de salida, pero también puede ir a la pantalla.
2. FICHERO DE ESPECIFICACIÓN
Un fichero de especificación JLex tiene la siguiente organización Código de usuario %% directivas JLex %% Reglas para las expresiones regulares Los caracteres %% distinguen una sección de otra. Deben estar colocados alprincipio de la línea y el resto de la línea no debe usarse.
2.1 SECCIÓN CÓDIGO DE USUARIO
El código que se escriba aquí, debe ser código java correcto ya que se copia directamente y sin modificaciones al principio del fichero analizador.java. Aquí es el sitio para implementar clases auxiliares que necesite o importar las clases que se utilicen. Si no lo hace aquí, debería editar el ficherojava y modificar código generado por una herramienta (JLex) cosa no siempre sencilla.
2.2 SECCIÓN DIRECTIVAS JLEX
Aunque en esta sección pueden definirse muchas más cosas, nuestro interés se centrará, por ahora, en la definición de macros. Cada macro está en una línea y consiste en una definición de la forma =. El nombre de una macro debe ser un identificador válido. Y la definición, una...
Regístrate para leer el documento completo.