Tema3
-
Upload
jackiehee27 -
Category
Documents
-
view
48 -
download
2
Transcript of Tema3
Departamento de Ciencias de la Computación
Analizador léx ico
�Análisis léxico
Departamento de Ciencias de la Computación
Analizador léx ico
� El analizador léxico es un autómata finito determinista que reconoce el lenguaje generado por las expresiones regulares correspondientes a las unidades sintácticas del lenguaje.
Autómata finito no
deterministaAutómata
finito determinista
Minimizar el número de
estados
Implementación
Expresiónregular
Departamento de Ciencias de la Computación
Analizador léx ico
Autómata finito no
deterministaAutómata
finito determinista
Minimizar el número de
estados
Implementación
Expresiónregular
Departamento de Ciencias de la Computación
Expresiones regulares
� Una expresión regular es una forma abreviada de representar cadenas de caracteres que se ajusten a un patrón.
� L(r) � lenguaje generado por la expresión regular r
� Expresiones regulares básicas� ΦΦ, L(, L(ΦΦ) = { } ) = { }
� λ, L(λ) = { λ }
� a ∈ �, L(a) = { a }
Departamento de Ciencias de la Computación
Expres iones regulares comple jas
� Se construyen expresiones regulares complejas a partir de las básicas.
� Operaciones� Concatenación� L(r.s) = L(r).L(s)
� Unión� L(r|s) = L(r) ∪∪ L(s)
� Cierre� L(r*) = L(r)*
L*= �
i=0
�
Li
Departamento de Ciencias de la Computación
Analizador léx ico
Autómata finito no
deterministaAutómata
finito determinista
Minimizar el número de
estados
Implementación
Expresiónregular
Departamento de Ciencias de la Computación
Reconocedor
� Reconocedor� Un reconocedor de un lenguaje es un
programa que toma una cadena y responde si es, o no, una frase del lenguaje.
� Autómata Finito� Un autómata finito o diagrama de
transiciones generalizado es un reconocedor construido con expresiones regulares
Departamento de Ciencias de la Computación
Autómata Finito No Determinista (AFND)
� AFND: ( , Q, �, Q, � δδ, q, q00, F), F)
� ��: alfabeto, conjunto finito de símbolos de entrada
� Q: conjunto finito de estados
� δδ: función de transición
� δδ(e,s) � q; e ∈ Q, s ∈�� ∪∪ { λ }, q ⊂ Q
� qq00 ∈ Q Q: estado inicial
� F ⊆ Q: conjunto de estados finales
un subconjunto de estados
Departamento de Ciencias de la Computación
Diagrama de transic iones
� Un Autómata Finito se puede representar mediante un diagrama de transiciones que es un grafo dirigido construido:� cada nodo está etiquetado con un elemento
de Q
� si δδ(p,a) = q se dibuja un arco con la etiqueta a del nodo p al nodo q
� el estado inicial se marca con una flecha� los estado finales se marcan con doble círculo
Departamento de Ciencias de la Computación
Diagrama de trans ic iones : ej emplo
� Diagrama de transiciones� Grafo dirigido etiquetado o grafo de
transiciones
δδ(q0,a) = {q
1}
δδ(q0,b) = {q
2}
δδ(q0,c) = {q
0}
δδ(q1
�,a) =
δδ(q1,b) = {q
2}
δδ(q1,c) = {q
3}
q0
q1
q2
q3*a b b
c
b
c�� = { a, b, c }Q = { q
0, q
1, q
2, q
3 }
q0 = q
0
F = {q3}
δδ(q2
�,a) =
δδ(q2,b) = {q
3}
δδ(q2
�,c) =
Departamento de Ciencias de la Computación
Diagrama de trans ic iones : ej emplo
� Tabla de transiciones
�� = { a, b, c }Q = { q
0, q
1, q
2, q
3 }
q0 = q
0
F = { q3 }
a b c
�
� �
� � �
�q0
{q1} {q
2}{q
0}
q1
{q2}{q
3}
q2
{q3}
*q3
δδ(q0,a) = {q
1}
δδ(q0,b) = {q
2}
δδ(q0,c) = {q
0}
δδ(q1
�,a) =
δδ(q1,b) = {q
1}
δδ(q1,c) = {q
3}
δδ(q2
�,a) =
δδ(q2,b) = {q
3}
δδ(q2
�,c) =
Departamento de Ciencias de la Computación
Función de transic ión extendida
� Se puede extender la función de transición de forma que tome como argumentos un estado q y una cadena de símbolos w, y devuelva un conjunto de estados.
� δδ(q,λ) = {q}
� sea w=xa, δδ(q,x) = {p1, p
2, ..., p
k} y
� entonces δδ(q,w) = {r1, r
2, ..., r
k}
^
�i=1
k
� p i , a �={r1, r2, ... , rm}δδ̂
^
^
Departamento de Ciencias de la Computación
Función de transic ión extendida: e jemplo
� δδ(q0,λ) = {q
0}
� δδ(q0,0) = δδ(q
0,0) = {q
0,q
1}
� δδ(q0,00) = δδ(q
0,0) ∪∪ δδ(q
1,0) = {q
0,q
1} ∪∪ � = {q
0,q
1}
� δδ(q0,001) =
� δδ(q0,0010) =
� δδ(q0,00101) =
q0
q1
q2
0 1
0,1
^
^
^
^
^
^
Departamento de Ciencias de la Computación
Expres ión regular – AFND
� Expresiones regulares básicas
p q
p q
p q
e = ΦΦ
e = λ
e = a
λ
a
Departamento de Ciencias de la Computación
Expres ión regular – AFND
� Expresiones regulares
p qe = r | s
λ
p1
q1r
r p2
q2s s
p1
p2
q1
q2
r
s
λ
λ
λ
λ
e = r s p1
q1
r p2
q2
s
Departamento de Ciencias de la Computación
Expres ión regular – AFND
� Expresiones regulares
λ
p1
q1r
r
e = r* p p1
r q1 q
λλ
λ
Departamento de Ciencias de la Computación
Expres ión regular – AFND: e jemplo
� Recordamos la gramática
�T = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
�N = {D, N}
S = NP = {
N � D N | DD � 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
}
Departamento de Ciencias de la Computación
Expres ión regular – AFND: e jemplo
� N � D N | D� aplicando la regla se obtiene la expresión
regular D.D*
q1
q2D
d
λ
D* q3
q4
d q5
q6
λλ
λ
q1
q2D.D*
d
λ
q3
q4
d q5
q6
λλ
λ
λ
Departamento de Ciencias de la Computación
Analizador léx ico
Minimizar el número de
estados
Implementación
Expresiónregular
Autómata finito no
deterministaAutómata
finito determinista
Departamento de Ciencias de la Computación
Autómata Finito Determinista (AFD)
� AFD: ( , Q, �, Q, � δδ, q, q00, F), F)
� ��: alfabeto, conjunto finito de símbolos de entrada
� Q: conjunto finito de estados
� δδ: función de transición
� δδ(e,s) � qi; e ∈ Q, s ∈ �� ∪∪ { λ }, q
i ∈ Q
� qq00 ∈ Q Q: estado inicial
� F ⊆ Q: conjunto de estados finales un estado
Departamento de Ciencias de la Computación
AFND vs AFD
� La diferencia entre AFD y AFND está en la función de transición δδ.� AFD� δδ(e,s) � q; e ∈ Q, s ∈�� ∪∪ { λ }, q ⊂ Q
� δδ toma como argumentos un estado y un símbolo de entrada y devuelve un estado.
� AFND
� δδ(e,s) � {qi}; e ∈ Q, s ∈ �� ∪∪ { λ }, q
i ∈ Q
� δδ toma como argumentos un estado y un símbolo de entrada y devuelve un conjunto de cero, uno o más estados.
Departamento de Ciencias de la Computación
Tabla de trans ic iones : e j emplo
0 1�q
0q
1q
0
q1
q1
q2
*q2
q2
q2
δδ(q0,0) = q
1
δδ(q0,1) = q
0 δδ(q1,0) = q
1
δδ(q1,1) = q
2
� AFD que acepta cadenas que contienen la subcadena 01
q0
q1
q2
0 1
1 0 0,1
δδ(q2,0) = q
2
δδ(q2,1) = q
2
Departamento de Ciencias de la Computación
Tabla de trans ic iones : e j emplo
q0
q1
q2
0 1
0,1
0 1
�
� �
�q0
{q0,q
1} {q
0}
q1
{q2}
*q2
δδ(q0,0) = {q
0,q
1}
δδ(q0,1) = {q
0}
δδ(q1,0) = �
δδ(q1,1) = {q
2}
� AFND que acepta únicamente cadenas de ceros y unos que terminan en 01
AFND
Departamento de Ciencias de la Computación
Función de transic ión extendida
� Se puede extender la función de transición de forma que tome como argumentos un estado q y una cadena de símbolos w, y devuelva un estado p.
� δδ(q,λ) = q
� sea w=xa, δδ(q,w) = δδ(δδ(q,x),a)
^
^ ^
Departamento de Ciencias de la Computación
Función de transic ión extendida: e jemplo
� δδ(q0,λ) = q
0
� δδ(q0,1) = δδ(δδ(q
0,λ),1) = δδ(q
0,1) = q
1
� δδ(q0,11) = δδ(δδ(q
0,1),1) = δδ(q
1,1) = q
0
� δδ(q0,110) =
� δδ(q0,1101) =
� δδ(q0,11010) =
� δδ(q0,110101) =
^
^
^
^
^
^
q0
q1
q3
0
1
q2
1
1
1
0 0 0
^
^
^
Departamento de Ciencias de la Computación
Analizador léx ico
Minimizar el número de
estados
Implementación
Expresiónregular
Autómata finito
deterministaequivalente
Autómata finito no
determinista
Departamento de Ciencias de la Computación
Analizador léx ico
Autómata finito
deterministaequivalente
Autómata finito no
determinista - λ
Autómata finito no
determinista
AFD( , Q�, Q�
DD, , δδ
DD, q, q
D0D0, F, F
DD))
AFND( , Q�, Q�
NN, , δδ
NN, q, q
N0N0, F, F
NN))
Departamento de Ciencias de la Computación
Analizador léx ico
Autómata finito
deterministaequivalente
Autómata finito no
determinista - λ
AFD( , Q�, Q�
DD, , δδ
DD, q, q
D0D0, F, F
DD))
AFND( , Q�, Q�
NN, , δδ
NN, q, q
N0N0, F, F
NN))
Departamento de Ciencias de la Computación
AFND-λ a AFD
� Dado un autómata finito no determinista, siempre es posible construir un autómata finito determinista equivalente.
� Procedimiento� Correspondencia de estados� Correspondencia del estado inicial� Cálculo de las transiciones� Correspondencia del estado final
Departamento de Ciencias de la Computación
AFND-λ a AFD: procedimiento
� Procedimiento� Correspondencia de estadosCorrespondencia de estados� Los únicos estados Q
D accesibles en AFD son
subconjuntos de QN cerrados respecto de λ.
q1
q2D.D*
dλ
q3
q4
d q5
q6
λλ
λ
λ
Departamento de Ciencias de la Computación
AFND-λ a AFD: procedimiento
� Procedimiento� Correspondencia de estadosCorrespondencia de estados� Cierre λ de un estado
q4 = {q
4}
q5 = {q
4,q
5,q
6}
q6 = {q
6}
_
_
_
q1 = CLAUS
λ(q
1) = {q
1}
q2 = {q
2,q
3,q
4,q
6}
q3 = {q
3,q
4,q
6}
_
_
_
q1
q2D.D*
dλ
q3
q4
d q5
q6
λλ
λ
λ
QD
Departamento de Ciencias de la Computación
AFND-λ a AFD: procedimiento
� Procedimiento� Correspondencia del estado inicialCorrespondencia del estado inicial� El estado inicial del AFD es el resultado de
calcular el cierre λ del estado inicial del AFND
� El cierre λ, CLAUSλ de un estado es el conjunto
de estados alcanzables mediante cero o más transiciones
q1
q2D.D*
dλ
q3
q4
d q5
q6
λλ
λ
λ
Departamento de Ciencias de la Computación
AFND-λ a AFD: procedimiento
� Procedimiento� Correspondencia del estado inicialCorrespondencia del estado inicial
� Cierre λ del estado qN0
q1 = CLAUS
λ(q
1) = {q
1}
_
q1
q2D.D*
dλ
q3
q4
d q5
q6
λλ
λ
λ
qD0
= {q1}
Departamento de Ciencias de la Computación
AFND-λ a AFD: procedimiento
� Procedimiento� Cálculo de las transicionesCálculo de las transiciones� En AFD habrá una transición de tipo� Para calcular está transición habrá que calcular
Pa = {q ∈ AFND | para algún p ∈ P � }
� Q es el cierre λ de Pa
P Qa
p qa
q1
q2D.D*
dλ
q3
q4
d q5
q6
λλ
λ
λ
Departamento de Ciencias de la Computación
AFND-λ a AFD: procedimiento
� Procedimiento� Cálculo de las transicionesCálculo de las transiciones
� δδDD(s,d) donde s ∈Q
D
� s = {p1, ..., p
k}
� obtener
� δδDD(s,d) =
q1
q2D.D*
dλ
q3
q4
d q5
q6
λλ
λ
λ
�i=0
k�N�pi,a�={r1,...,rm}
�j=1
mCLAUS �r j�λ
Departamento de Ciencias de la Computación
AFND-λ a AFD: procedimiento
� Procedimiento� Cálculo de las transicionesCálculo de las transiciones� Transicionesδδ
NN(q
1,d) = {q
2}
δN(q
1,λ) = �
δδNN(q
2,d) = �
δN(q
2,λ) = {q
3}
δδNN(q
3,d) = �
δN(q
3,λ) = {q
4,q
6}
δδNN(q
4,d) = {q
5}
δN(q
4,λ) = �
δδNN(q
5,d) = �
δN(q
5,λ) = {q
4,q
6}
q1
q2D.D*
dλ
q3
q4
d q5
q6
λλ
λ
λ
δδNN(q
6,d) = �
δN(q
6,λ) = �
Departamento de Ciencias de la Computación
AFND-λ a AFD: procedimiento
� Procedimiento� Cálculo de las transicionesCálculo de las transiciones
δδNN(q
1,d) = {q
2}
δδDD(q
1,d) = q
2 = {q
2,q
3,q
4,q
6}
δδDD(q
2,q
3,q
4,q
6,d) = δδ
DD(q
4,d)
_δδ
NN(q
4,d) = {q
5}
δδDD(q
4,d) = q
5 = {q
4,q
5,q
6}
δδDD(q
4,q
5,q
6,d) = δδ
DD(q
4,d)
_
q1
q2D.D*
dλ
q3
q4
d q5
q6
λλ
λ
λ
Departamento de Ciencias de la Computación
AFND-λ a AFD: procedimiento
� Procedimiento� Correspondencia del estado finalCorrespondencia del estado final� En el AFD un estado será final si contiene algún
estado final del AFND
q1
q2D.D*
dλ
q3
q4
d q5
q6
λλ
λ
λ
{q1}D.D* d {q
2,q
3,q
4,q
6} d {q
4,q
5,q
6}
d
Departamento de Ciencias de la Computación
Analizador léx ico
Autómata finito
deterministaequivalente
Autómata finito no
determinista
AFD( , Q�, Q�
DD, , δδ
DD, q, q
D0D0, F, F
DD))
AFND( , Q�, Q�
NN, , δδ
NN, q, q
N0N0, F, F
NN))
Departamento de Ciencias de la Computación
AFND a AFD: ejemplo
q0
q1
q2
0 1
0,1
0 1
�
� �
�{q0} {q
0,q
1} {q
0}
{q1} {q
2}
*{q2}
� Tabla de transiciones
Departamento de Ciencias de la Computación
AFND a AFD: ejemplo
q0
q1
q2
0 1
0,1
0 1� � �
�
� �
�
�{q0} {q
0,q
1} {q
0}
{q1} {q
2}
*{q2}
{q0,q
1} {q
0,q
1} {q
0,q
2}
*{q0,q
2} {q
0,q
1} {q
0}
*{q1,q
2} {q
2}
*{q0,q
1,q
2} {q
0,q
1} {q
0,q
2}
� Tabla de transiciones completa
Únicos estados alcanzables partiendo del estado inicial
Departamento de Ciencias de la Computación
AFND a AFD: ejemplo
{q0} {q
0,q
1} {q
0,q
2}0 1
1 0
0
1
� AFD resultante
Departamento de Ciencias de la Computación
Ejercic ios
Ejercicios
Departamento de Ciencias de la Computación
AFND-λ a AFD: e jerc icio
� Ejercicio� Autómata finito no determinista que acepta
un número decimal con signo opcional y punto decimal.
q0
q2
q5
. d
d
λ,+,−
d
q1
q4
q3
d .
λ
Departamento de Ciencias de la Computación
AFND-λ a AFD: e jerc icio
� Ejercicio
p q rb b
a a
λ
c
a
λ
c
Departamento de Ciencias de la Computación
AFND a AFD: e jerc icio
� Ejercicio
p r s0 0
0,1 a
q
0,1
0,1
Departamento de Ciencias de la Computación
Analizador léx ico
Implementación
Expresiónregular
Autómata finito no
determinista Minimizar el número de
estados
Autómata finito
determinista
Departamento de Ciencias de la Computación
Autómata Finito Mínimo
� Para cualquier autómata finito, existe un autómata finito mínimo equivalente.
� Identificar estados equivalentes� estados equivalentes (no distinguibles)� los estados p y q son equivalentes si para toda
cadena w, δδ(p,w) es un estado final sii δδ(q,w) es un estado final.� define una relación de equivalencia en el
conjunto de estados del autómata.
^ ^
Departamento de Ciencias de la Computación
Autómata Finito Mínimo
� Identificar estados equivalentes� cálculo de los pares de estados distinguibles
mediante el algoritmo por llenado de tabla� si p es un estado final y q no lo es {p,q} es
distinguible� si para dos estados p y q se cumple que� � δδ(p,a) = r y � δδ(q,a) = s, y r y s son
distinguibles,� entonces p y q son distinguibles.
Departamento de Ciencias de la Computación
Autómata Finito Mínimo
� Identificar estados equivalentes
{q1}D.D* d {q
2,q
3,q
4,q
6} d {q
4,q
5,q
6}
d
s t
� r y s son distinguibles por la regla primera
� r y t son distinguibles por la regla primera
� s y t no son distinguibless y t no son distinguibles
� δδ(s,d) = t
� δδ(t,d) = t
r
Departamento de Ciencias de la Computación
Autómata Finito Mínimo
� Autómata finito mínimo� Construcción� cada clase de equivalencia es un estado del
AFM� el estado inicial del AFM es el estado que
contiene el estado inicial del original� el conjunto de estados finales del AFM es el
conjunto de estados que contienen los estados finales del original
� sea γγ la función de transición del AFM, si S y T son estados equivalentes del original y a es un símbolo de entrada γγ(S,a)=T, si se cumple que para todo estado q de S, δδ(q,a) pertenece a T
Departamento de Ciencias de la Computación
Autómata Finito Mínimo
� Autómata finito mínimo
{q1}D.D* d {q
2,q
3,q
4,q
6} d {q
4,q
5,q
6}
d
s t
� clase de equivalencia {r} y {s,t}
� estado inicial será el de la clase {r}
� estado final será el de la clase {s,t}estado final será el de la clase {s,t}
� transicionestransiciones
� r r � s s �� {r} {r} � {s,t} {s,t}
� s s � t t �� {s,t} {s,t} � {s,t} {s,t}
� t t � t t �� {s,t} {s,t} � {s,t} {s,t}
r
rd
s
d
Departamento de Ciencias de la Computación
Autómata Finito Mínimo: Ejercicio
� Autómata finito determinista
{q0,q
1} {q
1,q
4} .
d
d
+,−
d
{q1}
{q2}
d
{q3,q
5}
{q2,q
3,q
5}
.
d
d
.
Departamento de Ciencias de la Computación
Autómata Finito Mínimo: Ejercicio
� Autómata finito determinista
{q0} {q
1} {q
2} {q
3}
{q4} {q
5} {q
6} {q
7}
0
1
0
0
0
0
0
0
0
1 1
1
1
1 1
1
Departamento de Ciencias de la Computación
Analizador léx ico
Implementación
Expresiónregular
Autómata finito no
determinista
Autómata finito
deterministaMinimizar el número de
estados
Departamento de Ciencias de la Computación
Diagrama de transic iones
� Autómata Finito Determinista (AFD)� Dice si una cadena de caracteres pertenece al
lenguaje.� ningún estado tiene una transición λ� para cada estado sólo una transición puede salir
etiquetada con un símbolo
Departamento de Ciencias de la Computación
Diagrama de transic iones
� Diagrama de transiciones (DT)� Lee caracteres hasta que se complete la
cadena de entrada� informa de la cadena recogida mediante un
token
� deja la entrada preparada para la interpretación del siguiente cadena
� No tiene estados de absorción (cadenas incorrectas)
� No tiene estados de error (sin transición � error)
Departamento de Ciencias de la Computación
Diagrama de transic iones
� Un diagrama de transiciones especifica correctamente el funcionamiento de un analizador léxico� Ejemplo de reconocedor de números enteros
sin signo mediante la expresión regular [0-9]
E0
E1 E2
dotro *
Máquina de estados
Autómata Finito Determinista Diagrama de
transicionesd � [0-9] d
Departamento de Ciencias de la Computación
Diagrama de transic iones
� E2: estado de aceptación.� Está marcado con un asterisco� se llega a él leyendo un carácter más de los
necesarios para reconocer la cadena de entrada asociada a un token
� hay que devolver ese carácter a la entrada.
� El analizador informará del error si � se produce una transición no autorizada o � la cadena de entrada finaliza en un estado
que no es el de aceptación
Departamento de Ciencias de la Computación
Analizador léx ico
� Tareas� Lee los caracteres del programa
fuente �Construye/devuelve unos pares:� símbolos intermedios (tokenstokens)� lexemaslexemas
�Rechaza texto con caracteres ilegales o combinaciones ilegales.
Departamento de Ciencias de la Computación
Analizador léxico
� Funcionamiento del analizador léxico
Analizador léxico
Analizador sintáctico
Programa fuente
Tabla de símbolos
token
siguiente
Analizador léxico funciona como subrutina del analizador sintáctico
Departamento de Ciencias de la Computación
Ejemplo
� Ej: �15*7-6�� representación como token, lexema
Token Lexemaentero 15por *entero 7resta -entero 6
Los componentes léxicos se especifican mediante expresiones regulares
LexemaLexema: Unidad básica del léxico, portadora de significado propio.
Departamento de Ciencias de la Computación
Analizador léxico: Operaciones
� Abrir, leer y cerrar el programa fuente.� Ignora los comentarios, separadores,
tabuladores, retornos de carro, etc.� Sitúa el error en el programa fuente:� número de línea y columna
procesada.� Preproceso macros, definiciones,
constantes y órdenes de inclusión de otros ficheros
Departamento de Ciencias de la Computación
Errores léxicos
� Errores que típicamente detecta el analizador léxico:� Utilizar caracteres que no pertenecen al
alfabeto del lenguaje (�ñ�, �ª�)
� Cadena (conjunto de caracteres) que no coinciden con ninguno de los patrones de los tokens posibles (�:=� sí, pero �:� no)
Departamento de Ciencias de la Computación
Detección de errores y recuperación
� Posibles acciones del analizador léxico para detectar errores, recuperarse y seguir trabajando� Ignorar los caracteres no válidos hasta
formar un token según los patrones dados.� Borrar los caracteres extraños.� Insertar un carácter que pudiera faltar.� Reemplazar un carácter presuntamente
incorrecto por uno correcto� Conmutar las posiciones de dos caracteres
adyacentes
Departamento de Ciencias de la Computación
Ejemplo de análisis léxico
� Cadena de caracteres: x := y /0.25� x es un identificador
� := es un operando
� y es un identificador
� / es un símbolo
� 0.25 es un número entero
� El Analizador léxico debe intentar leer el token más largo posible
¿Qué posiciones deberá alcanzar para decidir los tokens reconocidos?
Departamento de Ciencias de la Computación
Ejemplo de análisis léxico
x := y /0.25
separador
identif.número
operador identif. símbolo
Departamento de Ciencias de la Computación
Especificación de un analizador léx ico
� Patrón:
� expresión regular que define el conjunto de cadenas que cada uno de los tokens representa.
� Tokens:� elementos léxicos del lenguaje y los símbolos de
la gramática.
� Lexema:� secuencia de caracteres del código fuente que
concuerda con el patrón de un token.
� Atributos:� información adicional sobre el lexema (tabla de
símbolos)
Departamento de Ciencias de la Computación
Ejemplo
� Ejemplo de componente léxico (token), lexema y patrón
Lexema Componenteléxico (token)
Patrón
Precio Identificador Secuencia de letras
128Constante numérica Secuencia de
dígitos= Carácter �=� Asignación
Departamento de Ciencias de la Computación
Identif icador de palabras reservadas
� Reservadas para usos específicos.� Diferenciarlas de los identificadores� Resolución implícita: considerar que todas
son identificadores y buscarlas en una tabla.
� Resolución explícita: se indican todas las expresiones regulares de todas las palabras reservadas y se integran los diagrama de transiciones resultantes de sus especificaciones léxicas en la máquina reconocedora
Departamento de Ciencias de la Computación
Resolución implícita
� Primero inicializar la tabla de símbolos con todas las palabras reservadas.
� Cuando encuentre un identificador se va a mirar la tabla de símbolos.� Si lo encuentra en la zona reservada para
ellas es una palabra reservada,
� y si no, será un identificador.
Departamento de Ciencias de la Computación
Resolución implíc ita
1. Zona de palabras reservadas
for Palabra reservada
while Palabra reservada
..... .....
dato1 Identificador2. Zona de
identificadores
Departamento de Ciencias de la Computación
Resolución expl ícita
� Los patrones de especificación léxica del lenguaje tendrán su correspondencia en el diagrama de transiciones global a partir del cual se implementará el analizador léxico.
� Las palabras reservadas pueden ser prefijos de identificadores.� Ej.: �do� -palabra reservada- y �dos�
-identificador-.
Departamento de Ciencias de la Computación
Ejemplo: Diagrama de transic iones
� Construir un diagrama de transiciones para el reconocimiento de:� identificadores� números enteros sin signo� palabras reservadas �do� y �done�
Departamento de Ciencias de la Computación
Ejemplo: Diagrama de transic iones
Diagrama de transiciones
d = dígitol = letraf = alfanuméricootro alfanumérico(número) = ir al estado número
0
1
l
f
otro *2
3
d
otro *4
d
5 6 8 9
10 *
*7(1) (2) (1) (1) (2) (1)
'd''o' 'n' 'e'
f otro otro otro
otro
f f f
IDENTIFICADOR
ENTERO
DONE
DO
Departamento de Ciencias de la Computación
Ejemplo: Diagrama de transic iones
� Diagrama de transiciones� Todos los estados de aceptación están
marcados con asterisco, por lo que siempre habrá que devolver el último carácter a la entrada.
� Todos los tokens� son unos prefijos de otros (do � done �
identificador), o bien� son cadenas no específicas (entero e
identificador)
Departamento de Ciencias de la Computación
Ejercic io: Diagrama de transic iones
� Construir diagrama de transiciones para el reconocimiento de� números enteros con signo negativo o sin
signo ((-|λ).d)� operadores suma (�+�)� operadores doble incremento (�+++�)
Departamento de Ciencias de la Computación
Ejercic io: Diagrama de transic iones
� Diagrama de transiciones
0
8
-
6
d
otro *7
d
1 3 5
**4
++ +
otro otro
ENTERO
2INCR
SUMA
d
*2 SUMA
Departamento de Ciencias de la Computación
Ejercic io: Diagrama de transic iones
� Diagrama de transiciones� Estado de aceptación 2INCR� no lleva asterisco por ser cadena
específica y no ser prefijo de ninguna otra.
� Estados de aceptación suma� son prefijos del 2INCR
� Estados de aceptación suma con dos asteriscos
Departamento de Ciencias de la Computación
Implementación de analizadores léxicos
� Generador automático (LEX):� expresiones regulares de los patrones� tokens del lenguaje� acciones a tomar� comodidad desarrollo, peco eficiente
� Lenguaje de alto nivel.� Más eficiente, pero a mano.
� Lenguaje ensamblador.� Máxima eficiencia, pero complicado
desarrollar y mantener.
Departamento de Ciencias de la Computación
Implementación a mano de un analizador
léx ico
� Implementando el diagrama de transiciones mediante la construcción de su tabla de transiciones.� filas: estados del diagrama de transiciones� columnas: posibles entradas
� Implementando directamente, utilizando estructuras de selección múltiple (switch en C, case en Pascal) para leer caracteres hasta completar el token.
Departamento de Ciencias de la Computación
Ejemplo
� Ejemplo de tabla de transiciones para números enteros
0
1 2[0-9]
[0-9]
otro *
Estado 0-9 otro token Retroceso
0 1 Error - -
1 1 2 - -
2 - - Num_entero 1
Departamento de Ciencias de la Computación
Ejemplo
� Tabla de transiciones números enteros con signo y los operadores suma y doble incremento
Estado + - d Token Retroceso
0 1 8 6 - -
1 3 2 2 - -
2 - - - SUMA 1
3 5 4 4 - -
4 - - - SUMA 2
5 - - - 2INCR 0
6 7 7 6 - -
7 - - - ENTERO 1
8 Error Error 6 - -
Departamento de Ciencias de la Computación
Prior idad de los tokens
� Dar prioridad al token con el lexema más largo.� Ej.: �>=� y �>� se queda con el
primero.
� Si el mismo lexema se puede asociar a dos tokens, estos patrones estarán definidos en un orden.� Ej.: LEX elige el que aparezca primero
Departamento de Ciencias de la Computación
Ejemplo de pr ioridad de tokens
� En LEX aparecen expresiones regulares:� while � palabra reservada while
� l (l | d)* � identificador
� Si en la entrada aparece �while�� LEX elige la palabra reservada por
estar primero.� Si aparecieran en orden inverso, LEX
devolvería el token identificador
Departamento de Ciencias de la Computación
Ejercicio
númerovariableoperadores relacionalesoperadores de asignaciónoperadores multiplicativosoperadores aditivosoperadores unariosoperadores lógicosbarras, paréntesis, corchetes, coma, punto y coma, ....
� Definir las expresiones regulares del lenguaje C de forma que el analizador léxico envíe los siguientes tokens.
Departamento de Ciencias de la Computación
Ejercic io
númerovariableoperadores relacionalesoperadores de asignaciónoperadores multiplicativosoperadores aditivosoperadores unariosoperadores lógicosbarras, paréntesis, corchetes, coma, punto y coma, ....
[0-9]+[a-zA-Z_][a-zA-Z0-9_]*!= | == | >= | > | <= | <= | += | -= | *= | /= | %=* | / | %+ | -- | ++ | --&& | || | !�|��(��)��[��]��;�
numerovariableoprelasignopmulopaddopunaoplogbarralparrparlcorrcorpuntco
Expresión regular token
Departamento de Ciencias de la Computación
Ejercicio
while palabra reservada (en minúsculas)when palabra reservada (en minúsculas)ident cualquier secuencia de letras
(mayúsculas o minúsculas) y dígitos, que empiece por una letra, y que no coincida con ninguna de las palabras reservadas
opsum el símbolo '+'opmul el símbolo '*'opinc el símbolo '++'
� Diseñar un diagrama de transiciones determinista para reconocer los siguientes léxicos