Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
1
Lección 3: Lenguajes independientes del contexto
Gramáticas independientes de contexto (GIC)
Conceptos básicos Ambigüedad
Autómatas con pila (AP)
Definición de autómata con pilaDeterminismo y no determinismo
Formas normales
SimplificaciónForma normal de Greibach
Equivalencia entre APs y GICs
Propiedades y aplicaciones
Lección 3: GIC 2
Gramáticas independientes del contexto
• Elementos:
• Elementos distinguidos S ∈ N símbolo inicial
• Definición formal:G = (N, Σ, S, P) con α → β ∈ P, α ∈ N , β ∈ (N ∪ Σ )*
• Derivación: δ1, δ2, σ1, σ2, β ∈ (N ∪ Σ )* Α ∈ Nδ1 ⇒ δ2 si y solo si δ1 = σ1Ασ2, δ2 = σ1βσ2 y Α → β ∈ P
• Lenguaje generado: L(G) = { w∈Σ*: S ⇒ w }*
Com ponentes Com ponentes form ales
Categorias N conjunto de no term inales
Fuente de entrada Σ alfabeto de term inales
Lección 3: GIC 3
Derivaciones y Árboles• Derivación a la izquierda:
δ1, δ2, σ, β ∈ (N ∪ Σ )* Α ∈ N, w ∈ Σ*δ1 ⇒ δ2 si y solo si δ1 = wΑσ, δ2 = wβσ y Α → β ∈ P
• Árbol de derivación o árbol de análisis de G:Es un árbol etiquetado y ordenado tal que- Todo nodo está etiquetado con un símbolo de N ∪ Σ ∪ {ε}- La raíz es el símbolo inicial.- Los nodos internos están etiquetados con símbolos no terminales- Si un nodo está etiquetado con A y sus k hijos están etiquetados
X1X2…Xk leídos de izquierda a derecha entonces la regla A → X1X2…Xk es una regla de la gramática.
- Si un nodo está etiquetado con ε entonces es el único hijo de un nodo.- Si todas las hojas son símbolos terminales ó ε el árbol es completo y la frontera es una palabra de L(G).
Lección 3: GIC 4
Ambigüedad
• G es ambigua si existe x ∈L(G) con al menos dos árboles de derivacióndiferentes.
• G es inherentemente ambigua si no existe una gramática no ambiguaequivalente a G.
Lección 3: Autómatas con pila 5
Autómatas con pila (AP)- Elementos:
- Elementos distinguidos para la inicialización y aceptación:q0 ∈Q: estado inicialF ⊆ Q: conjunto de estados finalespila vacía
- Ciclo-máquina
Componentes físicos Componentes lógicos
Unidad de Proceso Q conjunto de estados
Fuente de entrada Σ alfabeto de entrada
Pila Γ alfabeto de pila
Consultas: • estado actual • símbolo de entrada • cima de la pila
Acciones: • avance en la entrada • cambio de estado
• modificación de la pila:desempilar un elemento ó desempilar un elemento y empilar uno o más
Lección 3: Autómatas con pila 6
Autómatas con pila (AP)- Definición formal:
M = (Q, Σ, Γ, δ, q0, F) con δ : Q × Σ × Γ ∪ {⊥} - → ℘(Q × Γ*)
-Configuración:(q, w, α) ∈ Q × Σ* × Γ*
-Movimiento:
(p, sw, Aα) ├── (q, w, βα) si y solo si (q, β) ∈ δ(p, s, A)
(p, sw, ε) ├── (q, w, β) si y solo si (q, β) ∈ δ(p, s, ⊥)
- Lenguaje aceptado:
L(M) = { w∈Σ*: ∃ p∈F (q0, w, ε) ├── (p, ε, ε) }*
Lección 3: Autómatas con pila 7
Determinismo y no determinismo- Diseñar un autómata con pila que reconozca el siguiente lenguaje:
L = { wcwR: w ∈ {a,b}* }
- Diseñar un autómata con pila que reconozca el siguiente lenguaje:
L = { wwR: w ∈ {a,b}* }
En general, a diferencia de lo que pasa entre L(AFD) y L(AFND), los lenguajes reconocidos por autómatas con pila deterministas (APD) no coinciden con los lenguajes reconocidos por autómatas con pila NO deterministas (AP). Es decir,
L(AFD) = L(AFND) pero L(APD) ≠L(AP)
Lección 3: Formas normales 8
Formas Normales
Definiciones:
• Símbolo útil, X: S αXβ w
• Símbolo accesible, X: S αXβ
• Símbolo fecundo, X: X w
⇒*
⇒*
⇒*
⇒*
Lección 3: Formas normales 9
Eliminar símbolos inútiles (I)
entrada:G = (N, ∑, P, S) gramática independiente de contexto
salida:
G2 = (N2, ∑, P2, S) equivalente a G sin símbolos inútiles
proceso: primer paso:-- Objetivo: eliminar de G los no terminales estériles
-- Método: buscar inductivamente,los símbolos fecundos N1
-- Resultado: G1 = (N1, ∑, P1, S)
• Si A → w ∈ P con w∈Σ* entonces A∈N1
• Si A → α ∈ P con α ∈(N1 ∪Σ)*, entonces A∈N1P1 = { A → α ∈ P: α∈(Σ ∪ N1)*}
Lección 3: Formas normales 10
Eliminar símbolos inútiles (II)
segundo paso:-- Objetivo: eliminar los símbolos no accesibles-- Método: buscar inductivamente, los símbolos accesibles N2-- Resultado: G2 = (N2, ∑, P2, S)
• S ∈ N2 • Si A ∈N2, A → αBβ∈P1 y B∈N1 entonces B∈N2P2 = { A → α ∈P1: A∈N2 }
IMPORTANTE: El orden de los pasos no es conmutativo.
Lección 3: Formas normales 11
Eliminar producciones nulas (I)entrada:
G = (N, Σ, P, S) independiente de contexto con S no recursivosalida:
G2 = (N2, Σ, P2, S) equivalente a G y tal que si A → ε ∈ P2 entonces A es el símbolo inicial de la gramática.
proceso: primer paso: -- Objetivo: construcción del conjunto de símbolos anulables
AN = {A ∈ N: A ε ∈ P}
-- Método: aplicar la definición inductiva de símbolo anulable
• Si A → ε ∈ P entonces A ∈ AN• Si A → α ∈ P con α ∈ AN*, entonces A ∈ AN
⇒*
Lección 3: Formas normales 12
Eliminar producciones nulas (II)segundo paso:-- Eliminar las producciones nulas y modificar P
P1 := P - {A → ε: A∈N}; P2:= ∅;for regla in P1 loop
if regla = A → X1X2…Xn thenP2 := P2 ∪ {A → Y1 Y2…Yn |
Yi = Xi si Xi no es anulableYi = Xi ó ε si Xi es anulableYi no es ε para todo i};
end if;end loop;if S ∈ AN then P2 := P2 ∪ { S → ε } end if;
Lección 3: Formas normales 13
Eliminar producciones unitarias (I)entrada:
G = (N, Σ, P, S) independiente de contexto sin producciones nulas salida:
G1 = (N, Σ, P1, S) equivalente sin producciones unitarias
proceso: primer paso:-- Objetivo: construir para cada A ∈ N el conjunto NA = {B ∈ N : A B}-- Método: aplicar la definición inductiva
• A ∈ NA• Si B ∈ NA y B → C ∈ P entonces C ∈ NA
⇒*
Lección 3: Formas normales 14
Eliminar producciones unitarias (II)segundo paso:-- Construir P1 eliminando las producciones unitarias
P1 := Ø;for A in N loop
for B in NA loopfor regla in P loop
if regla = B → α and α ∉ N thenP1 := P1 ∪ {A → α };
end if;end loop;
end loop;end loop;
Lección 3: Formas normales 15
Recursividad
Producción o regla recursiva: A → αAβRecursividad no inmediata A αAβProducción o regla recursiva a la izquierda: A → AβRecursividad a la izquierda A Aβ
Eliminación de la recursividad inmediata a la izquierdade un no terminal A
Sean todas las reglas con A en el lado izquierdo (A-reglas):A → Aα1 |...| Aαn| β1|...|βm
donde las reglas A → βi no son recursivas a la izquierda.
⇒*
⇒*
Lección 3: Formas normales 16
Recursividad
Las cambiamos porA → β1 A ' |...| βm A '|β1|...|βm
A '→ α1 A '|...|αn A '|α1|...|αn
donde A' es un nuevo no terminal.
La nueva gramática es equivalente y sin recursión inmediata a la izquierda de A.
A (β1∪...∪βm )(α1 ∪ ... ∪ αn)∗ ⇒*
Lección 3: Formas normales 17
Otras transformaciones
Reemplazamiento
Sea A → αBβ ∈ P una regla tal que A, B ∈N
y sean B → β1 |...| βn todas las B-reglas
si eliminamos la regla A → αBβ y añadimos las reglas
A → αβ1β|...|αβnβ
la nueva gramática es equivalente
Lección 3: Formas normales 18
Otras transformaciones
Introducción de nuevos símbolos no terminales
Sea A → αβγ ∈ P una regla tal que A ∈N, α,β,γ ∈ (N∪ Σ) ∗
y Z un nuevo no terminal
si eliminamos la regla A → αβγ y añadimos las reglas
Z → β y A → αZγ
la nueva gramática es equivalente
Lección 3: Formas normales 19
Forma normal de Greibach (I) entrada:
G independiente de contexto simplificada salida:
G3 = (N3, Σ, P3, S) equivalente en FNG
preparación: Numeración de los no terminales y de las reglas.Elegimos una ordenación de N de la forma N = {A1, A2, ..., An} y ordenamos las reglas según dicho orden.A cada regla le asignamos el grupo dependiendo del primer símbolo del lado derecho de la regla
1.- si Ai → aβ con a∈Σ 2.- si Ai → Ajβ con i<j3.- si Ai → Aiβ 4.- si Ai → Ajβ con i>j
Lección 3: Formas normales 20
Forma normal de Greibach (II) Primer paso: eliminar la recursión a la izda en G = (N, Σ, P, S)
entrada: G simplificadasalida: G1 = (N1, Σ, P1, S) equivalente sin recursión a la izquierda
proceso:-- Objetivo: adecuar las reglas de la gramática de forma que "respeten"
el orden establecido en N. Para ello hay que eliminar las reglas de la forma Ai → Ajα con j≤i. Es decir, eliminar las reglas de los tipos 3 y 4.
-- Método: hacer reemplazamientos siguiendo el orden de N (para eliminar las reglas en las que j<i) y cambiar la recursión inmediata a la izquierda por recursión a la derecha (para eliminar las reglas en las que j = i).
Lección 3: Formas normales 21
Forma normal de Greibach (III) Primer paso: reducción de los grupos 4 y 3 al 2 y 1
for i in 1..n loopfor j in 1..i-1 loop --eliminar reglas del grupo 4 si hay
while hay regla Ai→ Ajα loopeliminar Ai → Ajα por reemplazamiento
end loop;end loop;
--eliminar reglas del grupo 3 si hayif hay reglas del grupo 3 para Ai then
eliminar recursión inmediata a la izquierda de Aiend if;
end loop;
Lección 3: Formas normales 22
Forma normal de Greibach (IV) Segundo paso: obtención de G3 en forma normal de Greibach
entrada: G1 simplificada y no recursiva a la izquierdasalida: G3 = (N3, Σ, P3, S) equivalente en FNG
proceso:primera parte:-- Objetivo: poner las reglas en forma Ai → sα con s ∈ Σ. Es decir,
eliminar las reglas del tipo 2.-- Método: aplicar reemplazamientos en orden inverso al de N1.-- Resultado: G2 = (N2, Σ, P2, S)
Lección 3: Formas normales 23
Forma normal de Greibach (V) primera parte:
N2 := N1;P2 := P1;for i in n-1.. 1 loop
for j in n.. i+1 loop --eliminar reglas del grupo 2 while hay regla Ai → Ajα loop
eliminar Ai → Ajα por reemplazamientoend loop;
end loop;end loop;
Lección 3: Formas normales 24
Forma normal de Greibach (VI) segunda parte:-- Objetivo: conseguir reglas en FNG-- Método: cambiar terminales que no están en la primera posición de
las partes derechas por nuevos no terminales.-- Resultado: G3 = (N3, Σ, P3, S)-- Utilizamos el conjunto de nuevos no terminales: {Zs : s ∈ Σ}
N3 := N2;for regla in P2 loop
para cada s y cada regla = A → αsβcambiarla por A → αZs y Zs → s;N3 := N3 ∪ { Zs };
end loop;
Lección 3: APs y GICs 25
Equivalencia entre APs y GICs
PROPOSICIÓN 7:Los lenguajes generados por gramáticas independientes de contexto son lenguajes reconocidos por autómatas con pila. Es decir, L(GIC) ⊆ L(AP)
DEMOSTRACIÓN: Sea G = (N, Σ, P, S) una gramática independiente de contexto en FNG
Construimos M = ({q0, q1}, Σ, N ∪ {⊥}, δ, q0, F) donde δ(q0, a, ⊥) = {(q1, α): S → aα ∈ P}δ(q1, a, A) = {(q1, α): A → aα ∈ P}
El conjunto de estados finales será F = {q0, q1} si S → ε ∈ P y F = {q1} si S → ε ∉ P
Base de la demostración: w∈Σ+, S ⇒wα si y sólo si (q0, w, ε)├── (q1, ε, α)
Lección 3: APs y GICs 26
Equivalencia entre APs y GICs
Se puede demostrar que los lenguajes reconocidos por autómatas con pila son generados por gramáticas independientes de contexto. Es decir, L(AP) ⊆ L(GIC)
Lección 3: Propiedades 27
Propiedades de cierre Sean G1 = (N1, Σ, P1, S1) y G2 = (N2, Σ, P2, S2) dos GICs
- L(G1) ∪ L(G2) es independiente de contexto G = (N1∪ N2∪{S}, Σ, P1∪ P2∪{S → S1 |S2}, S)
- L(G1)• L(G2) es independiente de contextoG = (N1∪ N2∪{S}, Σ, P1∪ P2∪{S → S1S2}, S)
- L(G1)* es independiente de contextoG = (N1∪{S}, Σ, P1∪{S → SS1 |ε}, S)
- L(G1) ∩ L(G2) no es necesariamente independiente de contexto.
{ anbjcj: n,j ≥ 0 } ∩ { akbkcp: k,p ≥ 0 }
- L(G1) no es necesariamente independiente de contexto.
Lección 3: Aplicaciones 28
Aplicaciones Los lenguajes independientes de contexto se utilizan para describir la sintaxis.
Las aplicaciones de los mismos generalmente se basan en el uso de gramáticas.
Es más intuitivo escribir gramáticasEs más sencillo entender las gramáticas
Ejemplos:
1) Analizadores sintácticos
2) Descripción de formatos de documentos mediante las definiciones de tipo de documento, DTD (Document Type Definition), que se usan en la comunidad XML (eXtensible Markup Language) para el intercambio de información en la Web
Lección 3: Aplicaciones 29
Ejemplo de sintaxis de Ada
sequence_of_statements ::= statement {statement}statement ::= {label} simple_statement | {label} compound_statementsimple_statement ::= null_statement | assignment_statement | exit_statement
| goto_statement | procedure_call_statement| return_statement | entry_call_statement| requeue_statement | delay_statement| abort_statement | raise_statement| code_statement
compound_statement ::= if_statement | case_statement| loop_statement | block_statement| accept_statement | select_statement
if_statement ::= if condition then sequence_of_statements {elsif condition then sequence_of_statements}[else sequence_of_statements]end if;
http://www.acm.org/sigada/
Lección 3: Aplicaciones 30
Gramática DTD
DTD estandar para publicar en la Web las descripciones de los distintos PCs que venden .
<!DOCTYPE PcSpecs [<!ELEMENT PCS (PC*)>
<!ELEMENT PC (MODELO, PRECIO, PROCESADOR, RAM, DISCO+)><!ELEMENT MODELO (#PCDATA)><!ELEMENT PRECIO (#PCDATA)><!ELEMENT PROCESADOR (FABRICANTE, MODELO, VELOCIDAD)>
<!ELEMENT FABRICANTE (#PCDATA)><!ELEMENT MODELO (#PCDATA)><!ELEMENT VELOCIDAD (#PCDATA)>
<!ELEMENT RAM (#PCDATA)><!ELEMENT DISCO (DISCODURO | CD |DVD)>
<!ELEMENT DISCODURO (FABRICANTE, MODELO, TAMAÑO)><!ELEMENT TAMAÑO (#PCDATA)>
<!ELEMENT CD (VELOCIDAD)><!ELEMENT DVD (VELOCIDAD)>
]>
Lección 3: Aplicaciones 31
Documento XML Parte de un documento que sigue la estructura de la DTD:
<PCS><PC>
<MODELO>4560</MODELO><PRECIO>1000€</ PRECIO ><PROCESADOR><FABRICANTE>Intel</ FABRICANTE ><MODELO>Pentium</MODELO><VELOCIDAD>800Mhz</ VELOCIDAD ></ PROCESADOR ><RAM>256</RAM><DISCO><DISCODURO><FABRICANTE>Maxtor</FABRICANTE>
<MODELO>Diamond</MODELO><TAMAÑO>30.5Gb</TAMAÑO>
</DISCODURO></DISCO><DISCO><CD><VELOCIDAD>32x</ VELOCIDAD >
</CD></DISCO></PC><PC> .....</PC>
</PCS>
Lección 3: Aplicaciones 32
GICs y Gramáticas DTD 1) Formato DTD:
<!ELEMENT PROCESADOR (FABRICANTE, MODELO, VELOCIDAD)>
Formato GIC: Procesador → Fabricante Modelo Velocidad
2) Formato DTD:<!ELEMENT DISCO (DISCODURO | CD |DVD)>
Formato GIC: Disco → Discoduro | Cd |Dvd
3) Formato DTD:<!ELEMENT PC
(MODELO, PRECIO, PROCESADOR, RAM, DISCO+)>
Formato GIC: PC → Modelo Precio Procesador Ram DiscosDiscos → Disco | Disco Discos