Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ANALIZADOR LEXICO
DEFINICIONES PREVIAS
1. TOKEN
Un token o tambin llamado componente lxico es una cadena de caracteres que tiene un
significado coherente en cierto lenguaje de programacin. Ejemplos de tokens podran ser palabras
clave (if, else, while, int, ...), identificadores, nmeros, signos, o un operador de varios caracteres,
(por ejemplo, :=).
Son los elementos ms bsicos sobre los cuales se desarrolla toda traduccin de un programa,
surgen en la primera fase, llamada anlisis lxico, sin embargo se siguen utilizando en las siguientes
fases (anlisis sintctico y anlisis semntico) antes de perderse en la fase de sntesis.
Cada token es una secuencia de caracteres que representa una unidad de informacin en el
programa fuente.
2. LEXEMA
Representan cadenas de caracteres en el programa fuente que se pueden tratar juntos como una
unidad lxica. Un lexema es una secuencia de caracteres en el programa fuente con la que
concuerda el patrn para un componente lxico.
3. PATRON
Regla que describe el conjunto de lexemas que pueden representar a un determinado componente
lxico en los programas fuente. En otras palabras, es la descripcin del componente lxico mediante
una regla.
4. ANALIZADOR LEXICO
Un analizador lxico y/o analizador lexicogrfico (en ingls scanner) es la primera fase de
un compilador consistente en un programa que recibe como entrada el cdigo fuente de otro
programa (secuencia de caracteres) y produce una salida compuesta de tokens (componentes
lxicos) o smbolos. Estos tokens sirven para una posterior etapa del proceso de traduccin, siendo
la entrada para el analizador sintctico (en ingls parser).
a) LEE CARACTERES.
El analizador lexico se encarga de leer la secuencia de caracteres del programa fuente,
carcter a carcter, y elaborar como salida la secuencia de componentes lxicos que utiliza el
analizador sintctico. El analizador sintctico emite la ordenal analizador lxico para que
agrupe los caracteres y forme unidades con significado propio llamados componentes lxicos
(tokens).
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. 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.
Lexema
Patron
Identificador
Operador
+, -, *, /
Caracteres +, -, * , /
Asignacion
:=, =
While
while
Por ejemplo en el lenguaje C al ingresar las siguientes expresiones produce los siguientes
Tokens:
Numero
Variable
Operadores relacionales
Operadores de asignacin
Operadores
Operadores aditivos
Operadores unarios
Parntesis de apertura
Parntesis de cierre
Corchete de inicio
Corchete de cierre
Punto y coma
EXPRESION REGULAR
[0-9]+
[a-zA-Z], [a-zA-Z0-9]
<, >, >=, <=
=, +=, -=, *= , /= , %=
/,%, *
- , ++ , -&& , !
(
)
[
]
;
TOKEN
numero
variable
oprel
asign
opmul
opuna
oplog
lpar
rpar
lcor
rcor
puntco
c) FILTRA COMENTARIOS.
Los comentarios que se colocan en el programa fuente en cualquier lenguaje de
programacion tales como:
Operator: Operador
Identifiers: Identificadores
Numbers: Numeros
El analizador lexico no sabe que es fro, ente caso produce un error, puesto que la keywords
es for.
Los errores lxicos se deben a descuidos del programador. En general, la recuperacin de
errores lexicos es sencilla y siempre se traduce en la generacin de un error de sintaxis que
sera detectado mas tarde por el analizador sintactico cuando el analizador lexico devuelve un
componente lexico que el analizador sintactico no espera en esa posicion.