Implementacin del analizador lxico 1 Prcticas EDI Juan

  • Slides: 6
Download presentation
Implementación del analizador léxico 1 Prácticas EDI - © Juan Ramón Pérez

Implementación del analizador léxico 1 Prácticas EDI - © Juan Ramón Pérez

Codificar el AFD en Java No vamos a utilizar ningún generador de analizadores léxicos.

Codificar el AFD en Java No vamos a utilizar ningún generador de analizadores léxicos. Vamos a codificar (a mano) el AFD. Crearemos una nueva clase Lexico. Los códigos de los tokens se corresponderán constantes. 2 Utilización de constantes: permiten fácil mantenimiento y se autocomentan. Prácticas EDI - © Juan Ramón Pérez

Clase Lexico Buffer estado. Actual: entero caracter. Actual: caracter […] create(URL) siguiente. Token(): Token

Clase Lexico Buffer estado. Actual: entero caracter. Actual: caracter […] create(URL) siguiente. Token(): Token 3 Token codigo: entero lexema: String create(codigo: entero, lexema: String) set. . . () get. . . () Prácticas EDI - © Juan Ramón Pérez

Implementación autómata en Java estado. Actual= ESTADO_INICIAL; do Contiene estado { actual del autómata

Implementación autómata en Java estado. Actual= ESTADO_INICIAL; do Contiene estado { actual del autómata caracter. Actual= buffer. siguiente. Caracter(); switch (estado. Actual) { Obtenemos carácter case 1: transicion. Estado 1(); del buffer break; case 2: transicion. Estado 2(); Realizamos transición […] correspondiente en } función del estado actual } while (!es. Final(estado. Actual)); Todo esto lo repetimos hasta llegar a un estado final 4 Prácticas EDI - © Juan Ramón Pérez

Implementación de transicion. Estado 1() […] lexema += caracter. Actual; Concatenamos la cadena con

Implementación de transicion. Estado 1() […] lexema += caracter. Actual; Concatenamos la cadena con el último carácter leído switch(caracter. Actual) { Carácter leído en método principal desde el buffer case '"': estado. Actual = 5; break; Si llegan unas comillas, el case '=': estado. Actual = 11; Autómata pasa al estado q 5 token= new Token(TOKEN_IGUAL, lexema); break; Si llega “=", el Autómata […] pasa al estado q 11 que es } un estado final 5 Prácticas EDI - © Juan Ramón Pérez

Analizar excepciones al funcionamiento normal ¿Qué pasa cuando llega un fin de buffer a

Analizar excepciones al funcionamiento normal ¿Qué pasa cuando llega un fin de buffer a mitad de lectura de un token? ¿Qué pasa al ir a leer otro token llega un fin buffer? 6 Prácticas EDI - © Juan Ramón Pérez