Está en la página 1de 17

ANLISIS LXICO

Ing. Ronald Rentera Ayquipa


ANALIZADOR LXICO (AL)
El Analizador lxico (scanner), lee la secuencia de
caracteres del programa fuente, caracter a
caracter, y los agrupa para formar unidades con
significado propio, los componentes lxicos
(tokens en ingls).
El analizador lxico representa una interfaz entre
el programa fuente y el analizador sintctico o
parser.
ANALIZADOR
LXICO
Secuencia de
caracteres
Programa fuente
Componentes
lxicos
Tokens
Funciones del Analizador Lxico
Funcin principal:
El analizador lxico opera bajo peticin del analizador sintctico
devolviendo un componente lxico conforme el analizador
sintctico lo va necesitando para avanzar en la gramtica. Los
componentes lxicos son los smbolos terminales de la
gramtica.
El AL Suele implementarse como una subrutina del analizador
sintctico. Cuando recibe la orden obtn el siguiente
componente lxico, el analizador lxico lee los caracteres de
entrada hasta identificar el siguiente componente lxico, el cual
devuelve al sintctico segn el formato convenido.
ANALIZADOR
LXICO
Programa fuente
ANALIZADOR
SINTCTICO
Obtn el siguiente
componente lxico
Componente
lxico
rbol de
anlisis
sintctico
Funciones del Analizador Lxico
Otras funciones secundarias:
Eliminar: comentarios, espacios en blanco, tabuladores,
retorno de carro, etc, y en general, todo aquello que
carezca de significado segn la sintaxis del lenguaje.
Reconocer los identificadores de usuario, nmeros,
palabras reservadas del lenguaje, etc., y tratarlos
correctamente con respecto a la tabla de smbolos (solo
en los casos en que este analizador deba tratar con dicha
estructura).
Llevar la cuenta del nmero de lnea por la que va
leyendo, por si se produce algn error, dar informacin
acerca de dnde se ha producido.
Avisar de errores lxicos. Por ejemplo, si el carcter @
no pertenece al lenguaje, se debe emitir un error.
Tambin puede hacer funciones de preprocesador.
Patrn
Representa la regla para que una secuencia de
caracteres sea considerada dentro de cierto
componente lxico.
Regla que describe cmo se forma un token.
Cmo se especifican los tokens (patrones)?
Mediante expresiones regulares
Ejemplo: El patrn para un identificador de Pascal
es:
Una letra seguida por letras, dgitos o subguiones (_)
Token
Es la categora lxica asociada a un patrn. Cada
token se convierte en un nmero o cdigo
identificador nico. En algunos casos, cada
nmero tiene asociada informacin adicional
necesaria para las fases posteriores de la etapa
de anlisis.
Token
Los componentes lxicos o tokens ms importantes
son:
Palabras reservadas: if, while, do, . . .
Identificadores: asociados a variables, nombres de
funciones, tipos definidos por el usuario, etiquetas,... Por
ejemplo: posicion, velocidad, tiempo, . . .
Operadores: = * + - / == > < & ! = . . .
Smbolos especiales: ; ( ) [ ] { } ...
Constantes numricas: literales que representan valores
enteros, en coma flotante, etc, 982, 0xF678, -83.2E+2,...
Constantes de caracteres: literales que representan
cadenas concretas de caracteres, \hola mundo",...
Lexema
Instancia particular de un token: Secuencia de
caracteres en el programa fuente que se
corresponden con un patrn. Ejemplos:
Este_es_1_ejemplo es el lexema que satisface el patrn de
un identificador
8", 23" y 50" son algunos lexemas que encajan con el
patrn (0'|1'|2'| ... |9')
+
, de nmeros enteros.
Un componente lxico puede tener uno o infinitos
lexemas. Por ejemplo: palabras reservadas tienen un
nico lexema. Los nmeros y los identificadores
tienen infinitos lexemas. En el patrn WHILE slo
encaja el lexema WHILE.
Ejemplos token, lexema y patrn
Componente
lxico (Token)
Lexema Patrn
identificador indice, a, temp, pi, cuenta, d2 Letra seguida de letras o dgitos
num_entero 1456, 4, 1, 2 Dgito seguido de ms dgitos
If if Letra i seguida de letra f
do do Letra d seguida de letra o
op_div / Caracter /
op_asig = Caracter =
num_real 4.78, 3.141592, 0.65 Uno o ms dgitos seguido de un punto
seguido de uno o ms dgitos
(0 ... 9)
+
. (0 ... 9)
+
Ejemplos de Anlisis Lxico
posicion := inicial + velocidad * 60
Componentes lxicos:
1. El identificador posicion
2. El smbolo de asignacin :=
3. El identificador inicial
4. El signo de suma: +
5. El identificador velocidad
6. El signo de multiplicacin:*
7. El nmero 60
Componentes lxicos o tokens
T_While
T_ParentesisIzquierdo
T_Identificador y
T_Menos
T_Identificador z
T_ParentesisDerecho
T_LlaveApertura
T_Int
T_Identificador x
T_Asignacion
T_Identificador a
T_Mas
T_Identificador b
T_PuntoyComa
T_Identificador y
T_MasAsignacion
T_Identificador x
T_PuntoyComa
T_LlaveCierre
while (y < z) {
int x = a + b;
y += x;
}
Implementacin de un AL
Para crear un AL hay que:
Especificar todos los tokens del lenguaje
Puede haber varios tokens que correspondan a
una misma expresin regular
En este caso el algoritmo asociado a la expresin
regular deber diferenciar a partir del lexema el
token.
Implementacin de un AL
Mtodos para la construccin de un Analizador
Lxico:
Implementacin manual del AL
Generador automtico de AL
Implementacin manual de AL
Este mecanismo consiste en construir los patrones
necesarios para cada categora lxica (tokens),
construir sus autmatas finitos individuales,
fusionarlos por opcionalidad y, finalmente,
implementar los autmatas resultantes. Aunque la
construccin de analizadores mediante este mtodo
es sistemtica y no propensa a errores, cualquier
actualizacin de los patrones reconocedores implica
la modificacin del cdigo que los implementa, por lo
que el mantenimiento se hace muy costoso.
Implementacin manual de AL
Las ER se convierten a AFD
Un AL se implementa con un AFD + acciones
semnticas.
Un AFD se representa:
Diagrama transiciones
Matriz de estados
Las acciones semnticas ejecutan una serie de
acciones.
Generador automtico de AL
En este caso, se utiliza un programa especial que
tiene como entrada pares de la forma (expresin
regular, accin). El metacompilador genera todos
los autmatas finitos, los convierte a autmata
finito determinista, y lo implementa en C. El
programa C as generado se compila y se genera
un ejecutable que es el anlizador lxico de
nuestro lenguaje. Por supuesto, existen
metacompiladores que generan cdigo Java,
Pascal, etc. en lugar de C.
Generador automtico de AL
Flex (Fast Lexical Analyzer Generator) es un
generador automtico de analizadores lxicos en
lenguaje C. Es software de GNU.
Entrada: un fichero texto con la especificacin de los
componentes lxicos, las expresiones regulares que los
definen.
Salida: un programa en C que implementa dicho analizador,
preparado para ser compilado y utilizado.
Existen muchas herramientas para la generacin
automtica de AL. Las ms conocidas:
Lex
Flex
Jflex
PClex
Coco

También podría gustarte