Академический Документы
Профессиональный Документы
Культура Документы
Lexema
if
velocidad
Patrn
if
L ( L | D )*
Token
IF
IDENTIFICADOR
Atributo
Apuntador a la tabla de
smbolos
25
<=
D+
< =
NUMERO
OPRELACIONAL
Valor 25
Constante que indica
mayor o igual
<
<
OPRELACIONAL
OPSUMARESTA
OPSUMARESTA
OPMULDIV
un token
es el propio
2
Unidad 5: Anlisis Lxico|||SIC
sensibles
al
contexto
(o
de
tipo
1)
permitiran
identificar
embargo, la
3
Unidad 5: Anlisis Lxico|||SIC
4
Unidad 5: Anlisis Lxico|||SIC
funciones
incorporadas
(las
palabras
reservadas
habitualmente
son
al
ndice
que
identifica
dicho
identificador
reconocido
6
Unidad 5: Anlisis Lxico|||SIC
7
Unidad 5: Anlisis Lxico|||SIC
En este caso puede suceder que una declaracin de una variable sea procesada
por el generador de cdigo antes de que se acabe de explorar el texto fuente. Esto
puede ser de gran ayuda, puesto que toda variable detectada despus de su
declaracin permite que sean colocados sus atributos en la TS por el generador
de cdigo.
En este compilador de una pasada la TS slo est conectada al anlisis sintctico
y a travs suyo al resto de los mdulos. Una excepcin de lo anterior ocurre
cuando el analizador sintctico requiere cierta informacin del analizador lxico
durante el proceso de compilacin. Por ejemplo, en algunos lenguajes de
programacin es conveniente reconocer por medio de una tabla en el analizador
lxico el tipo de un identificador particular. Con esta informacin el analizador
sintctico recibe un token con un significado adicional, tan como identificador real
o identificador entero, que es mejor que pasar identificador.
Esta estrategia tiene dos ventajas:
Contenidos de la TS
Una TS se puede definir como una estructura de datos organizada en funcin de
los identificadores que aparecen en el programa fuente. Aunque su nombre parece
indicar una estructuracin en una tabla no es necesariamente sta la nica
estructura de datos utilizada, tambin se emplean rboles, pilas, etc.
Lo que la estructura debe permitir es establecer un homomorfismo entre los
mbitos de utilizacin de los smbolos en el programa fuente y el modo en que
8
Unidad 5: Anlisis Lxico|||SIC
Una forma de organizacin simple es imaginar la TS como una tabla con una serie
de filas, cada fila contiene una lista de atributos que estn asociados a un
identificador, tal como se muestra en la Figura 2.
Las clases de atributos que aparecen en una TS dependen de la naturaleza del
lenguaje de programacin para el cual est escrito el compilador. Por ejemplo, un
lenguaje de programacin puede no tener tipos, entonces el atributo tipo no
necesita aparecer en la tabla. La organizacin de la TS variar segn las
limitaciones de memoria y tiempo de acceso donde se implemente el compilador.
La lista siguiente de atributos no es necesaria para todos los compiladores, sin
embargo cada uno de ellos se puede utilizar en la implementacin de un
compilador particular.
Nombre de identificador.
9
Valor del descriptor del fichero y tipo de los elementos del fichero en el caso
10
Unidad 5: Anlisis Lxico|||SIC
ERRORES LXICOS
Los errores lxicos se detectan cuando el analizador lxico intenta reconocer
componentes lxicos y la cadena de caracteres de la entrada no encaja con
ningn patrn. Son situaciones en las que usa un carcter invalido (@, $,",>,...),
que no pertenece al vocabulario del lenguaje de programacin, al escribir mal un
identificador, palabra reservada u operador.
Errores lxicos tpicos son:
1) Nombre ilegales de identificadores: un nombre contiene caracteres
invlidos.
2) Nmeros incorrectos: un nmero contiene caracteres invlidos o no est
formado correctamente, por ejemplo 3,14 en vez de 3.14 o 0.3.14.
3) Errores de ortografia en palabras reservadas: caracteres omitidos,
adicionales o cambiados de sitio, por ejemplo la palabra hwile en vez de
while.
4) Fin de archivo: se detecta un fin de archivo a la mitad de un componente
lxico.
patrn
11
12
Unidad 5: Anlisis Lxico|||SIC
13
Unidad 5: Anlisis Lxico|||SIC
Esquema genera
Un programa fuente de Lex tiene el siguiente aspecto:
<seccin de definiciones>
%%
<seccin de reglas>
%%
<seccin de rutinas>
14
Unidad 5: Anlisis Lxico|||SIC
[A-Za-z]
patrn.
Realizar la accin indicada para los lexemas que se ajustan a un patrn.
16
Unidad 5: Anlisis Lxico|||SIC
JFlex (cont.)
Las directivas "%%" distinguen las secciones del archivo y van al principio de la
lnea. El resto de la lnea contenida en "%%" pueden desecharse y no deben
usarse para alojar declaraciones adicionales o cdigo.
La seccin del cdigo del usuario es copiada directamente en el archivo
resultante. Esta rea de la especificacin provee espacio para la implementacin
de clases o tipos retornados.
La seccin de directivas JFlex es donde se dan las definiciones de los macros y se
declaran nombres de estado.
La tercera seccin contiene las reglas del analizador lxico, cada una consiste en
tres partes: una lista de estados optativa, una expresin regular y una accin. El
formato es el siguiente:[<states>] <expression> { <action> }
REFEENCIAS
17
Unidad 5: Anlisis Lxico|||SIC