Clase4: Transformación desde Expresión regular a Autómata finito determinista

13
DESDE LAS EXPRESIONES REGULARES HASTA LOS AFD

Transcript of Clase4: Transformación desde Expresión regular a Autómata finito determinista

Page 1: Clase4: Transformación desde Expresión regular a Autómata finito determinista

DESDE LAS EXPRESIONES REGULARES HASTA LOS AFD

Page 2: Clase4: Transformación desde Expresión regular a Autómata finito determinista

AFND

AFD

EXPRESIÓN REGULAR

Page 3: Clase4: Transformación desde Expresión regular a Autómata finito determinista

ER - AFND

• CONCATENACIÓN (a.b)

• Selección (a|b)

1 2a

3 4b

1 2a

3 4bƐ

1 2a

3 4b

1 2a

3 4b

Ɛ5

Ɛ

Ɛ

Page 4: Clase4: Transformación desde Expresión regular a Autómata finito determinista

ER - AFND

• Repetición a*

1 2a

0 3

Ɛ

Ɛ

Ɛ

Ɛ

Page 5: Clase4: Transformación desde Expresión regular a Autómata finito determinista

DESDE UN AFND - AFD

Algoritmo

Page 6: Clase4: Transformación desde Expresión regular a Autómata finito determinista

Ejemplo

Cerradura Ɛ de un estado: El estado mismo y los estados que conduce una transición Ɛ

1 2a

0 3

Ɛ

Ɛ

Ɛ

Ɛ

Page 7: Clase4: Transformación desde Expresión regular a Autómata finito determinista

Ejemplo

Construcción de subconjuntos : 1. El estado inicial es el mismo, 2. Cual de los estados conduce con un carácter

1 hacia el 2 = {1,2,3}3. Desde los estados de {1,2,3} conducen con “a” hacia sí mismo4. El estado de aceptación contiene el estado de aceptación del AFND

1 2a

0 3

Ɛ

Ɛ

Ɛ

Ɛ

a

a

Page 8: Clase4: Transformación desde Expresión regular a Autómata finito determinista

Ejercicio

2 5a

6 7

b

Ɛ8

Ɛ

Ɛ

43Ɛ

a

Estado (cerradura) a b

{1} = {1,2,6}=A Mover(A, a)={3,7} Mover(A, b)={}

{3,7} = {3,4,7,8}=B Mover(B, a)={} Mover(B, b)={5}

{5} = {5,8} = C Mover(C, a)={} Mover(C, b)={}

Estado (cerradura)

a b

A B

B (aceptación) C

C (aceptación)

A CBba

Page 9: Clase4: Transformación desde Expresión regular a Autómata finito determinista

Ejercicio

• x (x|y)*x

1

4x

5 6

2x

Ɛ7

Ɛ

Ɛ

3

8

Ɛ

y

Ɛ

Ɛ Ɛ

Ɛ

0 9x

Estado (cerradura) X Y

{0} = {0}=A Mover(A, x)={1} Mover(A, y)={}

{1} = {1,2,3,5,8}=B Mover(B, x)={4,9} Mover(B, y)={6}

{4,9} = {4,7,8,2,3,5} = C Mover(C, x)={4,9} Mover(C, y)={6}

{6} = {6, 7,8,2,3,5} = D Mover(C, x)={4,9} Mover(C, y)={6}

Page 10: Clase4: Transformación desde Expresión regular a Autómata finito determinista

Ejercicio

• x (x|y)*xEstado (cerradura) X Y

{0} = {0}=A Mover(A, x)={1} Mover(A, y)={}

{1} = {1,2,3,5,8}=B Mover(B, x)={4,9} Mover(B, y)={6}

{4,9} = {4,7,8,2,3,5,9} = C Mover(C, x)={4,9} Mover(C, y)={6}

{6} = {6, 7,8,2,3,5} = D Mover(C, x)={4,9} Mover(C, y)={6}

Estado X Y

A B

B C D

C C D

D C D

XCA B

X

D

Y

X

YX

Y

Page 11: Clase4: Transformación desde Expresión regular a Autómata finito determinista

ANÁLISIS SINTÁCTICO

Page 12: Clase4: Transformación desde Expresión regular a Autómata finito determinista

ANÁLISIS SINTÁCTICO

• Su sintaxis se determina por: Reglas gramaticales de una gramática libre de contexto

• Operaciones son similares a las expresiones regulares. Con la diferencia de que se debe implementar la recursidad (ciclos repetitivos)

• Estructura de datos: árboles

• Algoritmo: Análisis sintáctico ascendente y descendente

Page 13: Clase4: Transformación desde Expresión regular a Autómata finito determinista

Gramáticas libres de contexto

• Es una especificación para la estructura sintáctica de un lenguaje de programación

• Similar a la estructura léxica reflejada en la expresión regular, solamente que la gramáticaincluye recursividad