Documente Academic
Documente Profesional
Documente Cultură
ANLISIS LXICO
El analizador lxico o scanner (en lengua inglesa) lee los caracteres del programa fuente para
agruparlos en palabras o lexemas y luego clasificarlos en componentes lxicos
denominados tokens que sern posteriormente utilizados por el analizador sintctico como
entradas.
componente lxico
programa Analizador Analizador
Lxico obtn siguiente
fuente Sintctico
componente lxico
Tabla de
smbolos
1. DEFINICIONES BSICAS
1) TOKEN:
Categoras sintcticas ms simples del lenguaje fuente que permiten clasificar las palabras
que conforman el lxico del programa fuente.
2) PATRN:
Regla que especifica la secuencia de caracteres que puede representar a un determinado
componente lxico.
3) LEXEMA:
Cadena de caracteres que concuerda con un patrn que describe un componente lxico.
4) ATRIBUTOS:
Informacin adicional sobre los tokens, que es usada por los analizadores sintctico y
semntico. El nmero de atributos depende de cada token. En la prctica, los tokens tienen
un nico atributo: un registro que contiene toda la informacin propia de cada caso (lexema,
tipo de dato, valor, etc).
Ejemplo:
Ejemplos:
Obtener los pares token-lexema que devolvera un analizador de lxico ante las
expresiones:
Expresin:
654 b * 30/5.07
(TKN_ENTERO, 654)
(TKN_OPRES, -)
(TKN_ID, b)
(TKN_OPMUL, *)
(TKN_ENTERO, 30)
(TKN_OPDIV, /)
(TKN_REAL, 5.07)
Expresin:
printf(Resultado: %d\n, 25);
(TKN_PRINTF, printf)
(TKN_PARI, ()
(TKN_STR, Resultado: %d\n)
(TKN_NUM, 25)
(TKN_COMA, ,)
(TKN_PARD, ))
(TKN_PYC, ;)
[0-9] [0-9]
[0-9] [0-9] otro
0 1 0 1 2 *Entero
AFD DT
Entradas
estado + - D token Retroceso
0 1 8 6 - -
1 3 2 2 - -
2 - - - SUMA 1
3 5 4 4 - -
4 - - - SUMA 2
5 - - - 2INCR 0
6 7 7 6 - -
7 - - - ENTERO 1
8 error error - - -
8 = 9
<letra> $
Inicio 0 1 2 return id_palreser(yytext)
DT
Otra opcin consiste en inicializar la tabla de smbolos con todas las palabras
reservadas (por orden alfabtico para
Universidad facilitar
Nacional de la posterior bsqueda y acceso).
Trujillo
Cuando encuentre un identificador se busca en la tabla de smbolos.
SI lo encuentra en la zona reservada para ellas ENTONCES es una palabra
reservada. SI NO, ser un identificador, que, como tal, ser aadido a la tabla de
smbolos.
Ejemplo:
Si en la especificacin lxica aparecen (entre otras) las expresiones regulares
while Palabra reservada
while letra(letra|digito)* Identificador
Si en la entrada aparece el lexema while, este puede ser generado por ambas expresiones
regulares, pero como est primero la de la palabra reservada, el analizador lxico debe
devolver dicho token, no el de identificador. Si estas especificaciones aparecieran en el orden
inverso:
letra(letra|digito)* Identificador
while Palabra reservada while
Entonces, el analizador lxico debera devolver siempre el token identificador y no devolver
nunca la palabra reservada while (lo cual no suele ser prctico).
EJERCICIOS
</b> CIERRA_NEGRITA
<i> CURSIVA
</i> CIERRA_CURSIVA
<a> REFERENCIA
</a> CIERRA_REFERENCIA
ftp:// FTP
http:// HTTP
telnet:// TELNET
gopher:// GOPHER
letra+ IDENTIFICADOR
Construir el autmata finito que permita reconocer los tokens antes indicados.
5. Identificar los lexemas y los tokens que el analizador de lxico reconocera en el siguiente
programa de lenguaje Pascal.