Sie sind auf Seite 1von 6

Implementacin del analizador

lxico

1 Prcticas EDI - Juan Ramn Prez


Codificar el AFD en Java
No vamos a utilizar ningn generador de analizadores
lxicos.
Vamos a codificar (a mano) el AFD.
Crearemos una nueva clase Lexico.
Los cdigos de los tokens se correspondern con
constantes.
Utilizacin de constantes: permiten fcil mantenimiento y
se autocomentan.

2 Prcticas EDI - Juan Ramn Prez


Clase Lexico

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

3 Prcticas EDI - Juan Ramn Prez


Implementacin autmata en Java
estadoActual= ESTADO_INICIAL;
do
{ Contiene estado
actual del autmata
caracterActual= buffer.siguienteCaracter();
switch (estadoActual)
{ Obtenemos carcter
case 1: transicionEstado1(); del buffer
break;
case 2: transicionEstado2();
[] Realizamos transicin
correspondiente en
}
funcin del estado actual
}
while (!esFinal(estadoActual));
Todo esto lo repetimos
hasta llegar a un
estado final
4 Prcticas EDI - Juan Ramn Prez
Implementacin de
transicionEstado1()
[]
lexema += caracterActual; Concatenamos la cadena
con el ltimo carcter
ledo
switch(caracterActual)
{ Carcter ledo en mtodo
case '"': estadoActual = 5; principal desde el buffer
break;
case '=': estadoActual = 11; Si llegan unas comillas, el
Autmata pasa al estado q5
token= new Token(TOKEN_IGUAL,
lexema);
break;
[] Si llega =", el Autmata
pasa al estado q11 que es
} un estado final

5 Prcticas EDI - Juan Ramn Prez


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 Prcticas EDI - Juan Ramn Prez

Das könnte Ihnen auch gefallen