Vous êtes sur la page 1sur 6

ANALIZADOR LEXICO: CARACTERISTICAS

ANALIZADOR LEXICO
DEFINICIONES PREVIAS
1. TOKEN
Un token o

tambin

caracteres que

tiene

llamado componente
un

significado

lxico es

coherente

en

una cadena

de

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
1

lxicos)

smbolos.

ANALIZADOR LEXICO: CARACTERISTICAS


Estos tokens sirven para una posterior etapa del proceso de traduccin, siendo
la entrada para el analizador sintctico (en ingls parser).
5. CARACTERISTICAS DEL ANALIZADOR LEXICO
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.
b) PRODUCE COMPONENTES LXICOS (TOKENS).
Los componentes lexicos (tokens) son los elementos de las categorias
lexicas. Por ejemplo, en C, i es un componente lexico de la categoria
identificador, 232 es un componente lexico de la categoria entero, etc.
En general, no basta con saber la categora a la que pertenece un
componente, en muchos casos es necesaria cierta informacin adicional.
Por ejemplo, ser necesario conocer el valor de un entero o el nombre del
identificador. Utilizamos los atributos de los componentes para guardar
esta informacin.
Observemos el siguiente cuadro:

ANALIZADOR LEXICO: CARACTERISTICAS

Categora

Lexema

Patron

Lxica
Entero,

real,

12,

34.3,

Secuencia de uno o ms dgitos

etc

231212

Letra seguida opcionalmente de letras y/o dgitos

Identificador

I, a, rea, a1,

Caracteres +, -, * , /

Operador

suma

Carcter : seguido de = o solo carcter =

Asignacion

+, -, *, /

La palabra While

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

)
[
]
;

rpar
lcor
rcor
puntco

opmul
opuna
oplog
lpar

c) FILTRA COMENTARIOS.
Los comentarios que se colocan en el programa fuente en cualquier
lenguaje de programacion tales como:
// comentario de una sola linea de codigo
/* ... */ comentario de un bloque entero de sentencias
3

ANALIZADOR LEXICO: CARACTERISTICAS


Todos estos comentarios son eliminados por el analizador lexico.
Por ejemplo en el siguiente segmento de programa desarrollado en c++:

float circulo(float radio) // funcion que calcula el area de un circulo


{
/* funcion que toma valores reales
Para calcular el area...
Fecha: 17/06/2014
*/
float pi=3.1416; // valor de pi
area=pi*radio*radio;
return area;
}
d) FILTRA SEPARADORES MLTIPLES (ESPACIOS, TABULADORES Y
SALTOS DE LNEA).
En los denominados lenguajes de formato libre (C, Pascal, Lisp, etc.) los
espacios en blanco, tabuladores y saltos de lnea solo sirven para separar
componentes lxicos. En ese caso, el analizador lxico se limita a
suprimirlos. En otros lenguajes, como Python, no se pueden eliminar
totalmente.
Se usan las siguientes especificaciones:

Operator: Operador

Whitespace: Espacio en blanco, tabulaciones y saltos de lnea

Keywords: Palabra clave

Identifiers: Identificadores

Numbers: Numeros

Por ejemplo si tenemos la siguiente sentencia en C:


if (i==j)
4

ANALIZADOR LEXICO: CARACTERISTICAS


z=0;
else
z=1;
El analizador lxico lo leer de la siguiente manera:

\t if (i==j) \n \t \t z=0; \n \t else \n\t\t


z=1;

e) GENERA

ERRORES

EN

CASO

DE

QUE

LA

ENTRADA

NO

CORRESPONDA A NINGUNA CATEGORA LXICA.


Hay pocos errores que el analizador lxico puede detectar ya que tiene una
visin muy restringida de un programa fuente. Los errores puede ser:

Smbolos extraos: se utilizan caracteres que no pertenecen al alfabeto


del lenguaje.

Omisin de caracteres: por ejemplo, se escribe el identificador CONTA


en el cuerpo del programa, cuando dicha variable ha sido declarada
como CONT.

Permutacin de caracteres: ejemplo: CMAPO por CAMPO.

Nmero de caracteres invlido de los identificadores

Ejemplos de errores en el analizador lexico:

ANALIZADOR LEXICO: CARACTERISTICAS


fro(int a=1:a<=10;a++)
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.
Los metodos de recuperacion de errores lexicos se basan bien en saltarse
caracteres en la entrada hasta que un patron se ha podido reconocer; o
bien usar otros metodos mas sofisticados que incluyen la insercion,
borrado, sustitucion de un caracter en la entrada o intercambio de dos
caracteres consecutivos.

Vous aimerez peut-être aussi