Automatas de pila_no_det
-
Upload
gidati -
Category
Technology
-
view
4.407 -
download
2
Transcript of Automatas de pila_no_det
Autómatas de pila no deterministas.
Generalidades, relación con lenguajes independientes del contexto, ejemplos
y aplicaciones
Por: Oscar Eduardo Sánchez Garcia.
1. Introducción
Construcción de compiladores
Teoría de Lenguajes Formales y Autómatas
Matemáticas
p u b l i c c l a s s A r r a y D e m o { p u b l i c s t a t i c v o i d m a i n ( S t r i n g [ ] a r g s ) { i n t [ ] a n A r r a y ; a n A r r a y = n e w i n t [ 1 0 ] ; f o r ( i n t i = 0 ; i < a n A r r a y . l e n g t h ; i + + ) { a n A r r a y [ i ] = i ; S y s t e m . o u t . p r i n t ( a n A r r a y [ i ] + " " ) ; } S y s t e m . o u t . p r i n t l n ( ) ; }}
L e n g u a j e d e a l t o n i v e l
C ó d i g o e j e c u t a b l e
C o m p i l a d o r
Análisis Lexicográfico
Análisis Sintáctico
Análisis Semántico
OptimizaciónPreparación para la generación de código
Generación de código
Fas
es d
el
Com
pila
dor1
1 Fases del Compilador según Karen A. Lemone
Autómatas de pila no deterministas
2. Pila
La pila
• Estructura de datos• Permite las operaciones
– Quitar: pop()– Colocar: push()– Ver el elemento del tope:
stackTop()– Ver si la pila está vacía:
empty()
• Es una lista LIFOA
C
A
F
G
3. Autómata de pila no determinista (ADPND)
3.1 Generalidades
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / z
a / z / A H B
Q u i t a r C o l o c a r
z
Ejemplo
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / z
a / z / A H B z
¿Acepta aab?
3.1.1
¿Acepta aab?
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / z
a / z / A H B z
¿Acepta aab?
a / z / A H a / A / a b / b / bq 2q 1 q 2
q 1
z
a)
¿Acepta aab?
a / z / A H a / A / a b / b / bq 2q 1 q 2
q 1
z
a)
H
A
¿Acepta aab?
a / z / A H a / A / a b / b / bq 2q 1 q 2
q 1
z
a)
H
AH
a
¿Acepta aab?
a / z / A H a / A / a b / b / bq 2q 1 q 2
q 1
z
a)
H
AH
a Falló
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / z
a / z / A H Bz
b)
¿Acepta aab?
¿Acepta aab?
a / z / z a / z / z b / F / a H a Eq 3q 2 q 4q 1
z
b)
¿Acepta aab?
a / z / z a / z / z b / F / a H a Eq 3q 2 q 4q 1
z
b)
z
¿Acepta aab?
a / z / z a / z / z b / F / a H a Eq 3q 2 q 4q 1
z
b)
z z
¿Acepta aab?
a / z / z a / z / z b / F / a H a Eq 3q 2 q 4q 1
z
b)
z z
Falló
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / z
a / z / A H B z
c)
¿Acepta aab?
¿Acepta aab?
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
z
c)
¿Acepta aab?
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
z
c)
B
H
A
¿Acepta aab?
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
z
c)
B
H
A
B
H
b
F
¿Acepta aab?
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
z
c)
B
H
A
B
H
b
F
B
H
b
E
a
H
a
¿Acepta aab?
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
z
c)
B
H
A
B
H
b
F
B
H
b
E
a
H
a
El autómata acepta aab
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / z
a / z / A H B z
¿Acepta ab?
3.1.2
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / z
a / z / A H B z
¿Acepta ab? No
3.1.2
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / z
a / z / A H B z
¿Acepta aba?
3.1.3
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / z
a / z / A H B z
¿Acepta aba? No
3.1.3
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z)
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z) ├── ( , , )
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z) ├── ( q3, , )
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z) ├── ( q3, ab, )
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z) ├── ( q3, ab, AHB)
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z) ├── ( q3, ab, AHB) ├── ( , , )
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, , )
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, b, )
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, b, FbHB)
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, b, FbHB) ├── ( , , )
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, b, FbHB) ├── ( q4, , )
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, b, FbHB) ├── ( q4, ε, )
3.2 Descripción instantánea
z
B
H
A
B
H
b
F
B
H
b
E
a
H
a
a / z / A H B a / A / F b b / F / a H a Eq 3q 3 q 4q 1
( q1, aab, z) ├── ( q3, ab, AHB) ├── ( q3, b, FbHB) ├── ( q4, ε, aHaEbHB)
3.3 Especificación formal de un ADPND
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / z
a / z / A H B
M = ( Q, Σ, Γ, Δ, s, F, z)
Q = { q1, q2, q3, q4 }
Σ = { a, b }
Γ = { z, A, B, E, F, H, a, b}
s = q1
F = { q2, q4 }
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / za / z / A H B
Δ( q3, b, F ) = { ( q4, aHaE)}
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / za / z / A H B
Δ( , , ) = { ( , )}
Δ( q3, b, F ) = { ( q4, aHaE)}
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / za / z / A H B
Δ( q1, , ) = { ( , )}
Δ( q3, b, F ) = { ( q4, aHaE)}
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / za / z / A H B
Δ( q1, a, ) = { ( , )}
Δ( q3, b, F ) = { ( q4, aHaE)}
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / za / z / A H B
Δ( q1, a, z ) = { ( , )}
Δ( q3, b, F ) = { ( q4, aHaE)}
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / za / z / A H B
Δ( q1, a, z ) = { ( q3, )}
Δ( q3, b, F ) = { ( q4, aHaE)}
q 1 q 2
q 3q 4
a / z / A H
a / A / ab / b / b
a / z / z
a / A / F bb / F / a H a E
a / z / za / z / A H B
Δ( q1, a, z ) = { ( q3, AHB)}
Δ( q3, b, F ) = { ( q4, aHaE)}
Δ( q1, a, z ) = { ( q1, AH), ( q2, z), ( q3, AHB) }
Δ( q1, a, A ) = { ( q2, a)}
Δ( q2, b, b ) = { ( q2, b)}
Δ( q2, a, z ) = { ( q3, z)}
Δ( q3, a, A ) = { ( q3, Fb)}
Δ( q3, b, F ) = { ( q4, aHaE)}
La transiciones quedan:
El autómata queda M = ( Q, Σ, Γ, Δ, s, F, z)
donde
Q = { q1, q2, q3, q4 }
Σ = { a, b }
Γ = { z, A, B, E, F, H, a, b}
s = q1
F = { q2, q4 }
y Δ, la regla de transición, está dada por
Δ( q1, a, z ) = { ( q1, AH), ( q2, z), ( q3, AHB) }
Δ( q1, a, A ) = { ( q2, a)}
Δ( q2, b, b ) = { ( q2, b)}
Δ( q2, a, z ) = { ( q3, z)}
Δ( q3, a, A ) = { ( q3, Fb)}
Δ( q3, b, F ) = { ( q4, aHaE)}
3.4 Definición de autómata de pila no determinista1.
Un autómata de pila no determinista es una 7-tupla
M = ( Q, Σ, Γ, Δ, s, F, z ) donde
Q es un conjunto finito de estados
Σ es un alfabeto de entrada
Γ es un alfabeto llamado alfabeto de la pila
Δ es una regla de transición, Δ: Q × ( Σ ∪ {ε} ) × ΓP( Q × Γ *)
s ∈ Q es el estado inicial o de partida
F ⊆ Q es el conjunto de estados finales o de aceptación
z ∈ Γ es el símbolo inicial o de partida
___________________________1 Basada en la definición de Kelly y de Isasi-Martínez-Borrajo
Δ : Q × ( Σ ∪ {ε} ) × Γ P( Q × Γ * )
Δ( q3, b, F ) = { ( q4, aHaE ) }
3.5 Definición de lenguaje aceptado por un autómata de pila no determinista1.
Sea M = ( Q, Σ, Γ, Δ, s, F, z ) un autómata de pila no determinista. El lenguaje aceptado por M se denota por L(M) y es el conjunto
__________________________
1 Dean Kelly
*}ypara),,(),,(| * {)( Γ∈∈Σ∈= uFpupzwswML ε*
3.6 Ejemplo 2
q 1 q 2 q 3
a / z / A z
a / A / A A
b / A / ε
b / A / ε ε / z / z
Acepta: ab, aabb, aaabbb, aaaabbbb, …
Es decir acepta el lenguaje {ab, aabb, aaabbb, aaaabbbb, …}
Formalmente acepta el lenguaje: { aibi | i ≥ 1}
3.7 Método de construcción de un ADPND a partir de una Gramática independiente del contexto
Ejemplo: }0,0|{ ≥≥ jiabbaa jjii
4.7 Método de construcción de un ADPND a partir de una Gramática independiente del contexto
Ejemplo: }0,0|{ ≥≥ jiabbaa jjii Gramática independiente del Contexto:
S AB
A aAa | b
B bBa | ε
4.7 Método de construcción de un ADPND a partir de una Gramática independiente del contexto
Ejemplo: }0,0|{ ≥≥ jiabbaa jjiiGramática independiente del Contexto:
S AB
A aAa | b
B bBa | ε
q 1
q 2
q 3
ε / z / S z ε / A / b
ε / B / ε
ε / S / A B ε / A / a A a
ε / B / b B ab / b / ε
a / a / ε
ε / z / ε
4.8 Método de construcción de una gramática independiente del contexto a partir de un ADPND
ADPND M con estado inicial q1, F = { q3 } y transiciones:
Δ( q1, a, z ) = { ( q1, Az) } Δ( q2, b, A ) = { ( q2, ε)}
Δ( q1, a, A ) = { ( q1, AA)} Δ( q2, ε, A ) = { ( q2, ε)}
Δ( q1, b, A ) = { ( q2, ε)} Δ( q2, ε, z ) = { ( q3, ε)}
Gramática independiente del contexto con símbolo inicial [q1zq3]
[q1Aq2] b
[q2Aq2] b | ε
[q2zq3] ε
[q1zq1] a[q1Aq1] [q1zq1] | a [q1Aq2] [q2zq1] | a[q1Aq3] [q3zq1]
[q1zq2] a[q1Aq1] [q1zq2] | a [q1Aq2] [q2zq2] | a[q1Aq3] [q3zq2]
[q1zq3] a[q1Aq1] [q1zq3] | a [q1Aq2] [q2zq3] | a[q1Aq3] [q3zq3]
[q1Aq1] a[q1Aq1] [q1Aq1] | a [q1Aq2] [q2Aq1] | a[q1Aq3] [q3Aq1]
[q1Aq2] a[q1Aq1] [q1Aq2] | a [q1Aq2] [q2Aq2] | a[q1Aq3] [q3Aq2]
[q1Aq3] a[q1Aq1] [q1Aq3] | a [q1Aq2] [q2Aq3] | a[q1Aq3] [q3Aq3]
4.9 Aplicación
Ejemplo: Especificar la sintaxis de una expresión algebraica (problema simplificado)
Gramática independiente del Contexto:
S S+T | T
T T*F | F
F a | (S)
Palabras que el autómata debe aceptar
(a+a)*a+a*a
a*(a+(a+a))
(a+a*(a+a))*(a*a)
ADPND para especificar la sintaxis de una expresión algebraica (problema simplificado)
q 1
q 2
q 3
ε / z / S z
ε / F / a
ε / F / ( S )
ε / S / S + Tε / S / T
ε / T / T * F
( / ( / ε
) / ) / ε
ε / z / ε
ε / T / F
* / * / ε
+ / + / εa / a / ε
El autómata es una guía para escribir el código del compilador
{ aibici | i ≥ 0 }
4.10 Poder de representación
{ aibi | i≥1}
…
{ai | i≥0}
…
Autómata Finito no determinista
Lenguajes regulares
Autómata de pila no determinista
Lenguajes independientes del contexto
Todos los lenguajes
Lenguaje independiente del contexto
S S+T | T
T T*F | F
F a | (S)
q 1
q 2
q 3
ε / z / S z
ε / F / a
ε / F / ( S )
ε / S / S + Tε / S / T
ε / T / T * F
( / ( / ε
) / ) / ε
ε / z / ε
ε / T / F
* / * / ε
+ / + / εa / a / ε
For
If
While
Do while
expresiones
4.11 Autómatas y lenguajes de programación de computadores
Identificadores
Enteros
Reales
Operadores
Cadenas de caracteres
Autómata Finito no determinista
Autómata de pila no determinista
Análisis léxico
Análisis sintáctico
5. Aplicaciones
Aplicaciones que requieren análisis sintáctico
• Compilador para un computador de automatización industrial
• Herramienta de consulta de bases de datos distribuidas
• Creación de un motor de base de datos relacional
• Creación de un motor de base de datos OO (Base de objetos) y su lenguaje de consulta (OQL)
• Simulador robótico con lenguaje de programación para robots
• Generador de analizador sintáctico (YACC, JAVACC)
Investigación y desarrollo
Bibliografía
• KELLY, Dean. Teoría de Autómatas y Lenguajes Formales. Prentice Hall.
• BRENA, Ramón. Autómatas y Lenguajes. Tec. Monterrey. 2003. Libro electrónico disponible en http://lizt.mty.itesm.mx/~rbrena/AyL.html
• ISASI VIÑUELA, Pedro ;MARTÍNEZ FERNANDEZ, Paloma; BORRAJO MILLÁN, Daniel. Lenguajes, Gramáticas y Autómatas; Un enfoque práctico. Editorial Addison-Wesley.
• HOPCROFT Y ULLMAN. Introducción a la Teoría de Autómatas, Lenguajes y Computación. Editorial Cecsa.