Tema 3: Lenguajes independientes del contexto Gramáticas

Anuncio
Tema 3: Lenguajes
independientes del contexto
Gramáticas independientes del
contexto
Gramáticas independientes de contexto (GIC)
•
Conceptos básicos
Ambigüedad
Ejemplos de GICs
Elementos:
C om ponentes
C om ponentes form ales
C ategorias
N
conju nto de no term inales
Fu ente de entrada
Σ
alfabeto de term inales
•
Elementos distinguidos: S∈N símbolo inicial
•
Definición formal:
G = (N, Σ, S, P)
Autómatas con pila (AP)
Definición de autómata con pila
Determinismo y no determinismo. Ejemplos.
Formas normales
•
Simplificación
Forma normal de Greibach
Equivalencia entre APs y GICs
•
con Α → β ∈P , Α∈N , β∈(N ∪ Σ)*
Paso de derivación: δ1, δ2, σ1, σ2, β ∈ (N ∪ Σ)*
Α∈N
δ1 ⇒ δ2 si y solo si δ1 = σ1Ασ2, δ2 = σ1βσ2 y Α → β ∈ P
* w}
Lenguaje generado: L(G) = { w∈Σ*: S ⇒
Propiedades y aplicaciones
1
Tema 3: Leng. Indep. del Contexto
Derivaciones
•
Paso de derivación a la izquierda:
δ1 ⇒ δ2 si y solo si δ1 = wΑα, δ2 = wβα y Α → β ∈ P
∈Σ *
con α, β ∈ (N ∪ Σ )* , Α∈N, w∈
•
Derivación a la izquierda:
* w con cada paso de derivación a la izquierda
S ⇒
•
Ejemplo: Dada la G.I.C:
Árbol de derivación
•
S → ASB | ε
A → aAb | ε
B → bBa | ba
Árbol de derivación (o 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
X1 X2 … Xk (leídos de izquierda a derecha), entonces 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 ó ε entonces
el árbol es completo y la frontera es una palabra de L(G).
Derivación a la izquierda de la palabra aabbba:
S ⇒ ASB ⇒ aAbSB ⇒ aaAbbSB ⇒ aabbSB ⇒ aabbB ⇒ aabbba
Tema 3: Leng. Indep. del Contexto
2
3
Tema 3: Leng. Indep. del Contexto
4
Derivaciones y árboles (I)
•
Ejemplo:
Derivaciones y árboles (II)
La derivación
Ejemplo:
•
Dos derivaciones a la izquierda:
S ⇒ ScS ⇒ SbScS ⇒ abScS ⇒ abacS ⇒ abaca
S ⇒ SbS ⇒ abS ⇒ abScS ⇒ abacS ⇒ abaca
•
Árboles de derivación:
S ⇒ ASB ⇒ aAbSB ⇒ aaAbbSB ⇒ aabbSB ⇒ aabbB ⇒ aabbba
tiene como árbol de derivación
S
A
a
a
A
A
S
b
ε
B
b
a
S → ASB | ε
A → aAb | ε
B → bBa | ba
S → SbS | ScS | a
•
b
S
ε
Es un árbol completo con frontera: aabbba
b
a
Tema 3: Leng. Indep. del Contexto
5
1.
a
a
a
S
b
S
S
c
a
S
a
6
Gramática G que genera el lenguaje L(G) = { w.c.wR : w ∈ {a,b}* }
G = (N, Σ, S, P) con N = {S}, Σ = {a,b,c} y P formado por las
siguientes reglas de producción:
•
Equivalentemente, una gramática G es ambigua si existe x∈L(G) con al
menos dos derivaciones a la izquierda.
•
Un lenguaje L es inherentemente ambiguo si todas las gramáticas para
dicho lenguaje son ambiguas.
S → aSa | bSb | c
2.
Gramática G que genera el lenguaje L(G) = { w.wR : w ∈ {a,b}* }
G = (N, Σ, S, P) con N = {S}, Σ = {a,b} y P formado por las
siguientes reglas de producción:
El lenguaje siguiente es inherentemente ambiguo:
L = { aibjck | i=j ó j=k }
Tema 3: Leng. Indep. del Contexto
S
Ejemplos de GICs (I)
Una gramática G es ambigua si existe x∈L(G) con al menos dos
árboles de derivación diferentes.
Ej:
La gramática S → SbS | ScS | a es ambigua
Ej:
S
S
Tema 3: Leng. Indep. del Contexto
Ambigüedad
•
S
c
S
S → aSa | bSb | ε
7
Tema 3: Leng. Indep. del Contexto
8
Ejemplos de GICs (II)
3.
Ejemplos de GICs (III)
Gramática G que genera el lenguaje L(G) = { anbn : n≥0 }
5.
G = (N, Σ, S, P) con N = {S}, Σ = {a,b} y P formado por las
siguientes reglas de producción:
Primero observamos que k e i son independientes entre ellos.
Usamos un nuevo no-terminal B que genere la subpalabra bk (k≥1)
S → aSb | ε
4.
Gramática G que genera el lenguaje L(G) = { aibkci : i≥0, k≥1 }
G = (N, Σ, S, P) con N = {S,B}, Σ = {a,b,c} y P formado por las
siguientes reglas de producción:
Gramática G que genera el lenguaje L(G) = { anb2n : n≥0 }
S → aSc | Β
B → bB | b
G = (N, Σ, S, P) con N = {S}, Σ = {a,b} y P formado por las
siguientes reglas de producción:
S → aSbb | ε
6.
Tema 3: Leng. Indep. del Contexto
9
¿ Gramática G que genera el lenguaje L(G) = { aibkci : i≥1, k≥0 } ?
Tema 3: Leng. Indep. del Contexto
Autómatas con pila (AP)
- Elementos:
C o m p on en tes físicos
Autómatas con pila (AP)
- Definición formal:
C o m p on en tes lógicos
U nidad de P roceso
Q
conjunto de estados
F uente d e entrad a
Σ
alfabeto de entrad a
P ila
Γ
alfabeto de pila
M = (Q, Σ, Γ, δ, q0, F) con
(q, w, α) ∈ Q × Σ* × Γ*
q0 ∈Q: estado inicial
F ⊆ Q: conjunto de estados finales
pila (representada mediante Г*), la cima de la pila vacía (ε) se denota por ⊥
-Movimiento:
- Ciclo-máquina:
Acciones:
•
estado actual
•
avance en la entrada
•
símbolo de entrada
•
cambio de estado
•
cima de la pila
Tema 3: Leng. Indep. del Contexto
δ : Q × Σ × (Γ ∪ {⊥}) → ℘(Q × Γ*)
-Configuración:
- Elementos distinguidos para la inicialización y aceptación:
Consultas:
10
- estado actual, palabra a leer, estado pila -
(p∈Q, s∈Σ, w∈Σ*, A∈Γ, α∈Γ*)
(p, s.w, Aα) ├── (q, w, βα)
si y solo si
(q, β) ∈ δ(p, s, A)
(p, s.w, ε) ├── (q, w, β)
si y solo si
(q, β) ∈ δ(p, s, ⊥)
- Lenguaje aceptado:
• modificación de la pila: desapilar
un elemento ó desapilar un elemento
y apilar uno o más
L(M) = { w∈Σ*: ∃ p∈F (q0, w, ε) ├──
* (p, ε, ε) }
11
Tema 3: Leng. Indep. del Contexto
12
Ejemplo de AP
Ejemplo de AP
M = (Q, Σ, Γ, δ, q0, F) con Q = {q0 , qf } F = {qf } Γ = { A } Σ = {a,b}
y δ como sigue:
M = (Q, Σ, Γ, δ, q0, F) con Q = {q0 , qf } F = {qf } Γ = { A } Σ = {a,b}
y δ como sigue:
δ (q0,a,⊥) = {(q0, A), (qf, ε) }
δ (qf, a, ⊥ ) = ∅
δ (q0,a,⊥) = {(q0, A), (qf, ε) }
δ (qf, a, ⊥ ) = ∅
δ (q0, a, A) = { (q0, AA) , (qf, A) }
δ (qf, a, A) = { (qf, ε) }
δ (q0, a, A) = { (q0, AA) , (qf, A) }
δ (qf, a, A) = { (qf, ε) }
δ (q0, b, ⊥) = { (q0, A) }
δ (qf, b, ⊥ ) = ∅
δ (q0, b, ⊥) = { (q0, A) }
δ (qf, b, ⊥ ) = ∅
δ (q0, b, A) = { (q0, AA) }
δ (qf, b, A) = { (qf, ε) }
δ (q0, b, A) = { (q0, AA) }
δ (qf, b, A) = { (qf, ε) }
Cómputos posibles de M para la palabra aba:
Cómputos posibles de M para la palabra baa:
(q0, aba, ⊥) |-- (q0, ba, A) |-- (q0, a, AA) |-- (q0, ε, AAA)
(q0, baa, ⊥) |-- (q0, aa, A) |-- (q0, a, AA) |-- (q0, ε, AAA)
|-- (qf, ε, AA)
|-- (qf, ba, ⊥) |-- ∅
|-- (qf, ε, AA)
|-- (qf, a, A)
por tanto aba ∉ L(M)
Tema 3: Leng. Indep. del Contexto
por tanto baa ∈ L(M)
13
Determinismo y no determinismo
M = (Q, Σ, Γ, δ, q0, F) con Q = {q0 , qf } F = {qf } Γ = { A,B } Σ = {a,b,c}
y δ como sigue:
- Diseñar un autómata con pila que reconozca el siguiente lenguaje:
δ (q0, a, ⊥ ) = {(q0, A)}
: 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):
L(APD) ≠ L(AP)
Tema 3: Leng. Indep. del Contexto
14
Diseñar un autómata con pila (determinista) que reconozca
L = { w.c.wR : w ∈ {a,b}* }
L = { w.c.wR : w ∈ {a,b}* }
L={
Tema 3: Leng. Indep. del Contexto
Ejemplo de AP determinista
- Diseñar un autómata con pila (determinista) que reconozca el
siguiente lenguaje:
w.wR
|-- (qf, ε, ε)
δ (q0, a, Β ) = {(q0, AB)}
δ (q0, b, B) = {(q0, ΒΒ)}
δ (q0, a, A) = {(q0, AA)}
δ (q0, b, A) = {(q0, BA)}
δ (q0, c, ⊥) = {(qf, ε)}
δ (qf, a, A) = { (qf, ε) }
15
δ (q0, b, ⊥) = {(q0, B)}
Tema 3: Leng. Indep. del Contexto
δ (q0, c, A) = {(qf, A)}
δ (q0, c, B) = {(qf, B)}
δ (qf, b, B) = { (qf, ε) }
16
Ejemplo de AP no determinista
Formas Normales. Simplificación
Diseñar un autómata con pila que reconozca
L = { w.wR : w ∈ {a,b}* }
Simplificación de GIC’s:
M = (Q, Σ, Γ, δ, q0, F) con Q = {q0 , qf } F= {q0, qf } Γ= { A,B } Σ= {a,b}
y δ como sigue:
δ (q0, a, ⊥ ) = {(q0, A)}
δ (q0, b, ⊥) = {(q0, B)}
δ (q0, a, Β ) = {(q0, AB)}
δ (q0, b, B) = {(q0, ΒΒ), (qf, ε)}
δ (q0, a, A) = {(q0, AA), (qf, ε)}
δ (q0, b, A) = {(q0, BA)}
δ (qf, a, A) = {(qf, ε)}
δ (qf, b, B) = {(qf, ε)}
Tema 3: Leng. Indep. del Contexto
17
Consiste en eliminar:
símbolos inútiles,
producciones nulas y
producciones unitarias
de una gramática G,
con el objetivo de obtener una gramática G’,
equivalente a G y
tal que cada paso de derivación α ⇒ β (en G’) verifica | α | ≤ | β |
Tema 3: Leng. Indep. del Contexto
Símbolo inútil
Definiciones:
*
Símbolo accesible X
si
S
⇒
•
Símbolo fecundo X
si
X
⇒
•
Símbolo inútil = no accesible ó no fecundo
Ejemplo:
Eliminar símbolos inútiles (I)
(para símbolos no terminales: X∈N)
•
S → AB | A
A → Aa | ε
B → bC
C → cB
D→a
*
entrada: G = (N, ∑, P, S) gramática independiente de contexto
salida: G2 = (N2, ∑, P2, S) equivalente a G sin símbolos inútiles
αXβ
w
18
proceso:
(con w∈Σ*)
primer paso:
-- Objetivo: eliminar de G los símbolos no fecundos
-- Método: buscar inductivamente los símbolos fecundos, N1
• Si A → w ∈ P con w∈Σ* entonces A∈N1
¿No fecundos? B , C
¿No accesibles? D
• Si A → α ∈ P con α ∈(N1 ∪Σ)*, entonces A∈N1
-- Resultado: G1 = (N1, ∑, P1, S) con
P1 = { A → α ∈ P : α∈(Σ ∪ N1)*}
Tema 3: Leng. Indep. del Contexto
19
Tema 3: Leng. Indep. del Contexto
20
Eliminar símbolos inútiles (II)
Eliminar producciones nulas (I)
entrada:
G = (N, Σ, P, S) independiente de contexto con S no recursivo
salida:
G2 = (N, Σ, P2, S) equivalente a G y tal que la única
producción nula (A → ε) ∈ P2, si existe alguna, es con
el símbolo inicial de la gramática: S → ε
segundo paso:
-- Objetivo: eliminar de G1=(N1, ∑, P1, S) los símbolos no accesibles
-- Método: buscar inductivamente los símbolos accesibles, N2
• S ∈ N2
• Si A∈N2, A → αBβ ∈P1 y B∈N1 entonces B∈N2
proceso: primer paso:
-- Objetivo: construcción del conjunto de símbolos anulables
-- Resultado: G2 = (N2, ∑, P2, S) con P2 = { A → α ∈P1 : A∈N2 }
ANUL = {A ∈ N: A
*
⇒ε
}
-- Método: aplicar la definición inductiva de símbolo anulable
• Si A → ε ∈ P entonces A ∈ ANUL
• Si A → α ∈ P con α ∈ ANUL*, entonces A ∈ ANUL
IMPORTANTE: El orden de los pasos no es conmutativo.
Tema 3: Leng. Indep. del Contexto
21
Eliminar producciones nulas (II)
22
Eliminar producciones unitarias (I)
segundo paso:
-- Eliminar las producciones nulas y modificar P
entrada:
G = (N, Σ, P, S) independiente de contexto sin producciones nulas
salida:
G1 = (N, Σ, P1, S) equivalente a G sin producciones unitarias (A → Β)
P1 := P - {A → ε : A ∈ N}; P2:= ∅;
for regla in P1 loop
if regla = A → X1X2…Xn then
P2 := P2 ∪ { A → Y1 Y2…Yn |
Yi es Xi si Xi ∉ANUL
Yi es Xi ó es ε si Xi ∈ANUL
Yi no es ε para todo i };
end if;
end loop;
if S ∈ ANUL then P2 := P2 ∪ { S → ε } end if;
Tema 3: Leng. Indep. del Contexto
Tema 3: Leng. Indep. del Contexto
proceso: primer paso:
-- Objetivo: construir para cada A ∈ N el conjunto UA = {B ∈ N : A
-- Método: aplicar la definición inductiva:
*
⇒
B}
• A ∈ UA
• Si B ∈ UA y B → C ∈ P entonces C ∈ UA
23
Tema 3: Leng. Indep. del Contexto
24
Forma Normal
Eliminar producciones unitarias (II)
segundo paso:
-- Construir P1 eliminando las producciones unitarias
Transformación de una GIC a forma normal:
P1 := Ø;
for A in N loop
for B in UA loop
for regla in P loop
if regla = B → α and α ∉ N then
P1 := P1 ∪ {A → α };
end if;
end loop;
end loop;
end loop;
Tema 3: Leng. Indep. del Contexto
25
Estudiaremos procedimientos para:
eliminar recursión a izquierdas,
reemplazamientos y otros ....
con el objetivo de transformar cualquier G.I.C. G en G’, tal que
G’ es equivalente a G y
G’ en forma normal (de Greibach)
y obtener un AP equivalente a partir de G’ (en F.N. Greibach)
Tema 3: Leng. Indep. del Contexto
26
Recursividad
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β
Las cambiamos por
A → β1 A’ |...| βm A’|β1|...|βm
A’ → α1 A’|...|αn A’|α1|...|αn
donde A’ es un nuevo no terminal.
Eliminación de la recursividad inmediata a la izquierda de un
símbolo no terminal A
La nueva gramática es equivalente y sin recursión inmediata a la
izquierda para A.
Sean todas las reglas con A en el lado izquierdo (A-reglas):
A → Aα1 |...| Aαn| β1|...|βm
A
donde las reglas A → βi no son recursivas a la izquierda.
Tema 3: Leng. Indep. del Contexto
27
Tema 3: Leng. Indep. del Contexto
*
⇒
(β1∪...∪βm )(α1 ∪ ... ∪ αn)∗
28
Otras transformaciones
Otras transformaciones
Reemplazamiento
Introducción de nuevos símbolos no terminales
Sea A → αBβ ∈ P una regla tal que A, B ∈N
Sea A → αβγ ∈ P una regla tal que A∈N, α,β,γ ∈ (N∪ Σ) ∗
y Z un nuevo no terminal
y sean B → β1 |...| βn todas las B-reglas ,
si eliminamos la regla A → αβγ y añadimos las reglas
si eliminamos la regla A → αBβ y añadimos las reglas
Z→β
A → αZγ
A → αβ1β|...|αβnβ
la nueva gramática es equivalente.
Tema 3: Leng. Indep. del Contexto
la nueva gramática es equivalente.
29
Forma normal de Greibach
30
Forma normal de Greibach (I)
Definición:
Una gramática independiente del contexto G = (N, Σ, P, S) está en
Forma Normal de Greibach (FNG) si todas las reglas de producción
(de P) son de la forma:
entrada: G = (N, Σ, P, S) independiente de contexto simplificada
salida: G3 = (N3, Σ, P3, S) en FNG equivalente a G
preparación: Numeración de los no terminales y de las reglas.
Elegimos una ordenación de N: A1 < A2 <... <An y clasificamos las
reglas de P según dicho orden, de la siguiente forma:
A cada regla le asignamos un grupo (1, 2, 3 ó 4) dependiendo del
primer símbolo del lado derecho de la regla
A → aβ con A∈N, a∈Σ, β∈N∗
Transformación a FNG:
Toda GIC se puede transformar en otra GIC equivalente que esté
en FNG (con la posible regla añadida S → ε para el caso en que
ε pertenezca al lenguaje generado por la primera)
Tema 3: Leng. Indep. del Contexto
Tema 3: Leng. Indep. del Contexto
1.- si Ai → aβ con a∈Σ
3.- si Ai → Aiβ
31
Tema 3: Leng. Indep. del Contexto
2.- si Ai → Ajβ con Ai<Aj
4.- si Ai → Ajβ con Ai>Aj
32
Forma normal de Greibach (II)
Forma normal de Greibach (III)
Primer paso: eliminar la recursión a la izda en G = (N, Σ, P, S)
Primer paso: reducción de los grupos 4 y 3 al 2 y 1
entrada: G simplificada
salida: G1 = (N1, Σ, P1, S) equivalente sin recursión a la izquierda
for i in 1..n loop
--eliminar reglas del grupo 4 si hay
for j in 1..i-1 loop
while hay regla Ai → Ajα loop
eliminar Ai → Ajα por reemplazamiento
end loop;
end loop;
--eliminar reglas del grupo 3 si hay
if hay reglas del grupo 3 para Ai then
eliminar recursión inmediata a la izquierda de Ai
end if;
end loop;
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 Aj ≤ Ai.
Es decir, eliminar las reglas de los grupos 3 y 4.
-- Método: hacer reemplazamientos siguiendo el orden de N (para
eliminar las reglas del grupo 4) y cambiar la recursión inmediata a la
izquierda por recursión a la derecha (para eliminar las del grupo 3).
Tema 3: Leng. Indep. del Contexto
33
Forma normal de Greibach (IV)
34
Forma normal de Greibach (V)
primera parte:
Segundo paso: obtención de G3 en forma normal de Greibach
entrada: G1= (N1, Σ, P1, S) simplificada y no recursiva a la izquierda
salida: 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 grupo 2.
-- Método: aplicar reemplazamientos siguiendo el orden inverso al de N1.
-- Resultado: G2 = (N2, Σ, P2, S)
Tema 3: Leng. Indep. del Contexto
Tema 3: Leng. Indep. del Contexto
35
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 reemplazamiento
end loop;
end loop;
end loop;
Tema 3: Leng. Indep. del Contexto
36
Forma normal de Greibach (VI)
Equivalencia entre APs y GICs
segunda parte:
-- Objetivo: conseguir las 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;
Tema 3: Leng. Indep. del Contexto
37
PROPOSICIÓN:
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, s, ⊥) = {(q1, α) : S → sα ∈ P}
δ(q1, s, A) = {(q1, α) : A → sα ∈ P}
para s ∈Σ
para s ∈Σ , A∈N (A≠S)
El conjunto de estados finales: F = {q0, q1} si S → ε ∈P o bien F = {q1} si S → ε ∉P
* wα si y sólo si (q , w, ε) ├──
* (q , ε , α)
Base de la demostración: w∈Σ+, S ⇒
0
1
Tema 3: Leng. Indep. del Contexto
Equivalencia entre APs y GICs
38
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 contexto
G = (N1∪N2∪{S}, Σ, P1∪P2∪{S → S1S2}, S)
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)
- L(G1)* es independiente de contexto
G = (N1∪{S}, Σ, P1∪{S → SS1 |ε }, S)
- L(G1) ∩ L(G2) no es necesariamente independiente de contexto.
Ej: { anbjcj: n,j ≥ 0 } ∩ { akbkcp: k,p ≥ 0 }
- L(G1) no es necesariamente independiente de contexto.
Tema 3: Leng. Indep. del Contexto
39
Tema 3: Leng. Indep. del Contexto
40
Aplicaciones
Ejemplo de sintaxis de Ada
http://www.acm.org/sigada/
Los lenguajes independientes de contexto se utilizan para describir
la sintaxis.
sequence_of_statements ::= statement {statement}
statement ::= {label} simple_statement | {label} compound_statement
Las aplicaciones de los mismos generalmente se basan en el uso
de gramáticas.
Es más intuitivo escribir gramáticas
Es más sencillo entender las gramáticas
simple_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
Ejemplos:
1)
| code_statement
compound_statement ::= if_statement | case_statement
Analizadores sintácticos
| loop_statement | block_statement
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
| accept_statement | select_statement
if_statement ::= if condition then
sequence_of_statements
{elsif condition then
[else
sequence_of_statements}
sequence_of_statements]
end if;
Tema 3: Leng. Indep. del Contexto
41
Tema 3: Leng. Indep. del Contexto
Gramática DTD
42
Documento XML
Parte de un documento que sigue la estructura de la DTD:
DTD estandar para publicar en la Web las descripciones de los distintos PCs que venden .
<PCS>
<PC>
<!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)>
]>
<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>
Tema 3: Leng. Indep. del Contexto
43
Tema 3: Leng. Indep. del Contexto
44
GICs y Gramáticas DTD
1)
Formato DTD:
<!ELEMENT PROCESADOR (FABRICANTE, MODELO, VELOCIDAD)>
Formato GIC:
2)
Procesador → Fabricante Modelo Velocidad
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:
Tema 3: Leng. Indep. del Contexto
PC → Modelo Precio Procesador Ram Discos
Discos → Disco | Disco Discos
45
Descargar