Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lexico
Lexico
Anlisis lxico
La tarea del anlisis lxico es reconocer smbolos dentro de la cadena de caracteres que es el programa fuente. Una vez reconocido un smbolo vlido es transformado a una representacin ms manejable por el parser. Esta tarea es realizada por el analizador lxico. Lexema o token: smbolo vlido reconocido por el analizador lxico.
Caracteres
Programa fuente
Analizador lxico
tokens
Analizador sintctico
Teora Lenguajes
2
Anlisis lxico
Funciones bsicas de un lxico:
Reconocer identificadores y palabras reservadas Reconocer constantes numricas y alfanumricas Reconocer los comentarios Eliminar los blancos
Generalmente los smbolos reconocidos por un lxico son elementos de un lenguaje regular, es decir generados por una gramtica regular.
Teora Lenguajes
3
Anlisis lxico
Sea G(T, N. P, S) una gramtica regular
T = {a, b, c} N = { S, B, C} P = {S Sa Bb , B Cc , Ca } S={S} Se puede generar la siguiente frase: acba
Teora Lenguajes
4
Anlisis lxico
Derivaciones usadas:
S Sa Bba Ccba acba
Para reconocer la frase hay que recorrerla de izquierda a derecha y si se llega al smbolo terminal inicial se dice que es una frase vlida (fue reconocida).
Teora Lenguajes
5
Anlisis lxico
C S a c b a B B C a c b a a c b a a c b a C C B S S
Teora Lenguajes
*
6
Autmata Finito Determinista: Reconoce cadenas de un alfabeto para lo cual posee un conjunto finito de estados internos entre los cuales existe un estado inicial (s0) y uno o varios estados finales.
Cadena de entrada Estado
a s0
c s1
b s2
Teora Lenguajes
7
Teora Lenguajes
8
Teora Lenguajes
9
Diagramas de transicin
Tambin se usan diagramas con informacin aadida para representar autmatas finitos deterministas. Estos diagramas son grafos dirigidos conocidos con el nombre de diagramas de transicin. Los nodos del grafo se denominan estados. Las aristas estn etiquetadas con caracteres del alfabeto y se denominan transiciones. Existe un estado inicial o estado de partida. Algunos estados se denominan estados de aceptacin o estados finales.
Teora Lenguajes
10
Diagramas de transicin
s0 a s1 a
Este diagrama muestra que es posible la transicin del estado s0 al estado s1 si se recibe el carcter a Tambin se usan Tablas de transicin para representar autmatas. Consiste en un arreglo bidimensional cuyas columnas se asocian a los caracteres de entrada y las filas a los estados del autmata, el contenido del arreglo indica el estado al cual se realiza la transicin.
Teora Lenguajes
11
Diagramas de transicin
Entrada
a
E s t a d o s
s1
s2
Teora Lenguajes
12
Autmata y diagrama
A seguir se muestra el diagrama de estados correspondiente a la gramtica regular usada en el ejemplo anterior.
a c b a
I
c, b
C
a, b
B
c, a c, b
Teora Lenguajes
14
ESTADO I S B C
a C S E E
ENTRADA b E B S E
c E C E B
Teora Lenguajes
15
Expresiones Regulares
Se puede simplificar la especificacin de un lenguaje regular introduciendo una abreviatura conocida como expresin regular.
Operacin Nombre Unin LM LM LM Concatenacin * L Cerradura de Kleene Cero o ms concatenaciones + L Cerradura positiva Una o ms concatenaciones Definicin L M = { s s L s M } L M = { st s L y t M } Li L
I=1 I=0 i
Teora Lenguajes
16
Expresiones Regulares
Ejemplos:
a* b* denota frases del tipo
aaabbbbbbb aaaaa bbbb
Expresiones Regulares
(ab)* (a b)* (a b) * (aa *) b a+ b Para la gramtica del lenguaje G (diapositiva 4) la expresin regular correspondiente sera:
acba*
Autmata no determinista
a a b
Q1
b
Q2
Teora Lenguajes
20
Autmata no determinista
Si M es un AFN el lenguaje aceptado por M se define como: L(M) = {w | w es una cadena aceptada por M} Para determinar si w L(M) debemos recorrer el diagrama de transicin correspondiente y encontrar un camino que termine en un estado de aceptacin luego de haber consumido toda la cadena. En la bsqueda se elige el camino de forma no determinista.
Teora Lenguajes
21
Autmata no determinista
Para decir que w L(M) se debe agotar todas las posibles formas de recorrer el diagrama para esa cadena. En algunos casos se recorrern caminos con una eleccin no correcta del estado siguiente, lo que desencadenar en un estado no vlido. En esta situacin ser necesario retroceder y retomar la bsqueda del camino eligiendo otro estado. En trminos de programacin esto no es eficiente por tanto trataremos de usar AFD o transformar los AFN en AFD.
Teora Lenguajes
22
Anlisis Lxico
Lee una cadena de entrada y genera una secuencia de componentes lxicos. Debe eliminar los caracteres en blanco y comentarios Cada componente lxico est bien definido y tiene un significado propio. Se debe distinguir entre componente lxico y la cadena que lo representa. Para cada cadena (palabra) el lxico debe determinar de que componente lxico (token) se trata. Generalmente los tokens se devuelven codificados.
Teora Lenguajes
23
Anlisis Lxico
Token
PL Var PL Case Num String SE Id
Ejemplo
Var Case 4.25, 9 'Ttulo' > Cont, temp, I
Descripcin
Palabra reservada Var Palabra reservada Case Constante numrica Constante literal Smbolo especial Identificadores
El lxico debe eliminar todos los adornos del programa fuente (comentarios, blancos). Separa cadenas y las relaciona con tokens. Se puede usar diagramas de transicin para reconocer las cadenas vlidas.
Teora Lenguajes
24
Aspectos de Implantacin
El lxico entrega al sintctico un token codificado. Generalmente el token consta de dos partes
Cdigo Atributo asociado
Cdigo: indica si el tipo de token (identificador, palabra reservada, constante, etc). Atributos. Contiene cdigos o cadenas que complementan la informacin del cdigo. Su contenido depende del tipo de token.
Teora Lenguajes
25
Aspectos de Implantacin
Token
Palabra reservada Identificador Smbolo especial Constante numrica Constante alfanumrica
Cdigo
1 2 3 4 5
Atributo
Cdigo de la palabra reservada Cadena del identificador Cdigo del smbolo especial Cadena de la constante Cadena de la constante
La tabla mostrada es un ejemplo de codificacin de tokens en donde cada palabra reservada/smbolo especial tiene el mismo cdigo y en el atributo asociado se especifica de que palabra/smbolo se trata. Otra forma de codificar es asignar a cada palabra/smbolo un cdigo diferente en cuyo caso no se necesitar del atributo.
Teora Lenguajes
26
Aspectos de Implantacin
El lxico se puede implantar con diagramas/tablas de transicin. Se deben entonces definir las gramticas regulares para cada tipo de componente lxico y construir los diagramas/tablas de transicin. Estos diagramas de estado se pueden unir en un nico diagrama que reconozca todos los componentes lxicos, incluyendo comentarios. Es importante disear los componentes lxicos de manera tal que facilite su implantacin y evitar reglas tan flexibles que pueden complicar la realizacin del lxico (por ejemplo Fortran IV).
Teora Lenguajes
27
Aspectos de Implantacin
Tratamiento de comentarios: en algunos lenguajes los comentarios pueden ser anidados, por ejemplo:
{este es el primer comentario {este es el segundo comentario {y este es el ltimo comentario} } }
Reconocimiento de componentes formados por dos caracteres como := >= == etc. Tratamiento de cadenas que abren/cierran con un carcter especial.
Teora Lenguajes
28
Teora Lenguajes
29
Casos Especiales
Se abre una cadena (), se encuentra el fin del archivo y no hay cierra cadena. Comentarios que inician pero no terminan Comentarios anidados
Teora Lenguajes
30