Tema3

45
Departamento de Ciencias de la Computación A n a l i z a d o r l é x i c o Departamento de Ciencias de la Computación A n a l i z a d o r l é x i c o

Transcript of Tema3

Page 1: 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

Page 2: Tema3

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 }

Page 3: Tema3

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

Page 4: Tema3

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

Page 5: Tema3

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) =

Page 6: Tema3

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}δδ̂

^

^

Page 7: Tema3

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

Page 8: Tema3

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

λλ

λ

Page 9: Tema3

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

λλ

λ

λ

Page 10: Tema3

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

Page 11: Tema3

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

Page 12: Tema3

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)

^

^ ^

Page 13: Tema3

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

Page 14: Tema3

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))

Page 15: Tema3

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*

q3

q4

d q5

q6

λλ

λ

λ

Page 16: Tema3

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*

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*

q3

q4

d q5

q6

λλ

λ

λ

Page 17: Tema3

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*

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*

q3

q4

d q5

q6

λλ

λ

λ

Page 18: Tema3

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*

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*

q3

q4

d q5

q6

λλ

λ

λ

δδNN(q

6,d) = �

δN(q

6,λ) = �

Page 19: Tema3

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*

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*

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

Page 20: Tema3

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

Page 21: Tema3

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

Page 22: Tema3

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 .

λ

Page 23: Tema3

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

Page 24: Tema3

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.

^ ^

Page 25: Tema3

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

Page 26: Tema3

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

Page 27: Tema3

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

Page 28: Tema3

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

Page 29: Tema3

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

Page 30: Tema3

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.

Page 31: Tema3

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.

Page 32: Tema3

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)

Page 33: Tema3

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?

Page 34: Tema3

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)

Page 35: Tema3

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

Page 36: Tema3

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

Page 37: Tema3

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�

Page 38: Tema3

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)

Page 39: Tema3

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

Page 40: Tema3

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.

Page 41: Tema3

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

Page 42: Tema3

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

Page 43: Tema3

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.

Page 44: Tema3

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

Page 45: Tema3