Está en la página 1de 6

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.
 Vamos a codificar (a mano) el AFD.
 Crearemos una nueva clase Lexico.
 Los códigos de los tokens se corresponderán con
constantes.
 Utilización de constantes: permiten fácil mantenimiento y se
autocomentan.

2 Prácticas EDI - © Juan Ramón Pérez


Clase Lexico

Lexico
Token
Buffer
estadoActual: entero codigo: entero
caracterActual: caracter lexema: String
[…] create(codigo:entero,
lexema: String)
set...()
create(fichero) get...()
siguienteToken(): Token

3 Prácticas EDI - © Juan Ramón Pérez


Implementación autómata en Java
estadoActual= ESTADO_INICIAL;
do
{ Contiene estado
actual del autómata
caracterActual= buffer.siguienteCaracter();
switch (estadoActual)
{ Obtenemos carácter
case 1: transicionEstado1(); del buffer
break;
case 2: transicionEstado2();
[…] Realizamos transición
} correspondiente en
función del estado actual
}
while (!esFinal(estadoActual));
Todo esto lo
repetimos hasta llegar
a un estado final
4 Prácticas EDI - © Juan Ramón Pérez
Implementación de
transicionEstado1()
[…]
lexema += caracterActual; Concatenamos la cadena
con el último carácter
leído
switch(caracterActual)
{ Carácter leído en método
case '"': estadoActual = 5; principal desde el buffer
break;
case '=': estadoActual = 11; Si llegan unas comillas, el
Autómata pasa al estado q5
token= new Token(TOKEN_IGUAL,
lexema);
break;
[…] Si llega “=", el Autómata
pasa al estado q11 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 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

También podría gustarte