Post on 14-Apr-2015
1
Tema 3: Lenguajes independientes del contexto
Gramáticas independientes de contexto (GIC)
Conceptos básicos AmbigüedadEjemplos de GICs
Autómatas con pila (AP)
Definición de autómata con pilaDeterminismo y no determinismo. Ejemplos.
Formas normales
SimplificaciónForma normal de Greibach
Equivalencia entre APs y GICs
Propiedades y aplicacionesTema 3: Leng. Indep. del Contexto 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 ∪ Σ)*
• Paso de 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
Tema 3: Leng. Indep. del Contexto 3
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: S ⇒ w con cada paso de derivación a la izquierda
• Ejemplo: Dada la G.I.C: S → ASB | εA → aAb | εB → bBa | ba
Derivación a la izquierda de la palabra aabbba:
S ⇒ ASB ⇒ aAbSB ⇒ aaAbbSB ⇒ aabbSB ⇒ aabbB ⇒ aabbba
*
Tema 3: Leng. Indep. del Contexto 4
Árbol de derivación
• Á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).
Tema 3: Leng. Indep. del Contexto 5
Derivaciones y árboles (I)• Ejemplo: La derivación
S ⇒ ASB ⇒ aAbSB ⇒ aaAbbSB ⇒ aabbSB ⇒ aabbB ⇒ aabbba
tiene como árbol de derivaciónS
A S B S → ASB | εA → aAb | ε
a A b ε b a B → bBa | ba
a A b
ε
Es un árbol completo con frontera: aabbba
Tema 3: Leng. Indep. del Contexto 6
Derivaciones y árboles (II)• Ejemplo: S → SbS | ScS | a
• Dos derivaciones a la izquierda:S ⇒ ScS ⇒ SbScS ⇒ abScS ⇒ abacS ⇒ abacaS ⇒ SbS ⇒ abS ⇒ abScS ⇒ abacS ⇒ abaca
• Árboles de derivación:
S SS c S S b S
S b S a a S c S
a a a a
Tema 3: Leng. Indep. del Contexto 7
Ambigüedad
• 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
• 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.
Ej: El lenguaje siguiente es inherentemente ambiguo:L = { aibjck | i=j ó j=k }
Tema 3: Leng. Indep. del Contexto 8
Ejemplos de GICs (I)
1. 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:
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:
S → aSa | bSb | ε
Tema 3: Leng. Indep. del Contexto 9
Ejemplos de GICs (II)
3. Gramática G que genera el lenguaje L(G) = { anbn : n≥0 }
G = (N, Σ, S, P) con N = {S}, Σ = {a,b} y P formado por las siguientes reglas de producción:
S → aSb | ε
4. Gramática G que genera el lenguaje L(G) = { anb2n : n≥0 }
G = (N, Σ, S, P) con N = {S}, Σ = {a,b} y P formado por las siguientes reglas de producción:
S → aSbb | ε
Tema 3: Leng. Indep. del Contexto 10
Ejemplos de GICs (III)
5. Gramática G que genera el lenguaje L(G) = { aibkci : i≥0, k≥1 }
Primero observamos que k e i son independientes entre ellos.Usamos un nuevo no-terminal B que genere la subpalabra bk (k≥1)
G = (N, Σ, S, P) con N = {S,B}, Σ = {a,b,c} y P formado por las siguientes reglas de producción:
S → aSc | ΒB → bB | b
6. ¿ Gramática G que genera el lenguaje L(G) = { aibkci : i≥1, k≥0 } ?
Tema 3: Leng. Indep. del Contexto 11
Autómatas con pila (AP)- Elementos:
- Elementos distinguidos para la inicialización y aceptación:q0 ∈Q: estado inicialF ⊆⊆⊆⊆ Q: conjunto de estados finalespila (representada mediante Г*), la cima de la pila vacía (ε) se denota por ⊥
- Ciclo-máquina:
Componentes físicos Componentes lógicos
Unidad de Proceso Q conjunto de estados
Fuente de entrada Σ alfabeto de entrada
P ila Γ alfabeto de pila
•
•
•un elemento ó desapilar un elemento
•
•
•
Consultas:
estado actual
símbolo de entrada
cima de la pila
Acciones:
avance en la entrada
cambio de estado
modificación de la pila: desapilar
y apilar uno o más
Tema 3: Leng. Indep. del Contexto 12
- Definición formal:
M = (Q, Σ, Γ, δ, q0, F) con δ : Q × Σ × (Γ ∪ {⊥}) →→→→ ℘(Q × Γ*)
-Configuración:(q, w, α) ∈ Q × Σ* × Γ* - estado actual, palabra a leer, estado pila -
-Movimiento: (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:
L(M) = { w∈Σ*: ∃ p∈F (q0, w, ε) ├── (p, ε, ε) }
Autómatas con pila (AP)
*
Tema 3: Leng. Indep. del Contexto 13
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, A) = { (q0, AA) , (qf, A) } δ (qf, a, A) = { (qf, ε) }
δ (q0, b, ⊥) = { (q0, A) } δ (qf, b, ⊥ ) = ∅δ (q0, b, A) = { (q0, AA) } δ (qf, b, A) = { (qf, ε) }
Cómputos posibles de M para la palabra aba:
(q0, aba, ⊥) |-- (q0, ba, A) |-- (q0, a, AA) |-- (q0, ε, AAA)
|-- (qf, ε, AA)
|-- (qf, ba, ⊥) |-- ∅por tanto aba ∉∉∉∉ L(M)
Ejemplo de AP
Tema 3: Leng. Indep. del Contexto 14
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, A) = { (q0, AA) , (qf, A) } δ (qf, a, A) = { (qf, ε) }
δ (q0, b, ⊥) = { (q0, A) } δ (qf, b, ⊥ ) = ∅δ (q0, b, A) = { (q0, AA) } δ (qf, b, A) = { (qf, ε) }
Cómputos posibles de M para la palabra baa:
(q0, baa, ⊥) |-- (q0, aa, A) |-- (q0, a, AA) |-- (q0, ε, AAA)
|-- (qf, ε, AA)
|-- (qf, a, A) |-- (qf, ε, ε)
por tanto baa ∈∈∈∈ L(M)
Ejemplo de AP
Tema 3: Leng. Indep. del Contexto 15
Determinismo y no determinismo- Diseñar un autómata con pila (determinista) que reconozca el siguiente lenguaje:
L = { w.c.wR : w ∈ {a,b}* }
- Diseñar un autómata con pila que reconozca el siguiente lenguaje:
L = { w.wR : 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 16
Ejemplo de AP deterministaDiseñar un autómata con pila (determinista) que reconozca
L = { w.c.wR : w ∈ {a,b}* }
M = (Q, Σ, Γ, δ, q0, F) con Q = {q0 , qf } F = {qf } Γ = { A,B } Σ = {a,b,c}y δ como sigue:
δ (q0, a, ⊥ ) = {(q0, A)} δ (q0, b, ⊥) = {(q0, B)}
δ (q0, a, Β ) = {(q0, AB)} δ (q0, b, B) = {(q0, ΒΒ)}
δ (q0, a, A) = {(q0, AA)} δ (q0, b, A) = {(q0, BA)}
δ (q0, c, ⊥) = {(qf, ε)} δ (q0, c, A) = {(qf, A)} δ (q0, c, B) = {(qf, B)}
δ (qf, a, A) = { (qf, ε) } δ (qf, b, B) = { (qf, ε) }
Tema 3: Leng. Indep. del Contexto 17
Ejemplo de AP no deterministaDiseñar un autómata con pila que reconozca
L = { w.wR : w ∈ {a,b}* }
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 18
Formas Normales. Simplificación
Simplificación de GIC’s:
� 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 19
Símbolo inútil� Definiciones: (para símbolos no terminales: X∈N)
• Símbolo accesible X si S αXβ
• Símbolo fecundo X si X w (con w∈Σ*)
• Símbolo inútil = no accesible ó no fecundo
� Ejemplo: S → AB | AA → Aa | ε ¿No fecundos? B , CB → bC ¿No accesibles? DC → cBD → a
⇒*
⇒*
Tema 3: Leng. Indep. del Contexto 20
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 símbolos no fecundos
-- Método: buscar inductivamente los símbolos fecundos, N1
• Si A → w ∈ P con w∈Σ* entonces A∈N1
• Si A → α ∈ P con α ∈(N1 ∪Σ)*, entonces A∈N1
-- Resultado: G1 = (N1, ∑, P1, S) con
P1 = { A → α ∈ P : α∈(Σ ∪ N1)*}
Tema 3: Leng. Indep. del Contexto 21
Eliminar símbolos inútiles (II)
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
-- Resultado: G2 = (N2, ∑, P2, S) con P2 = { A → α ∈P1 : A∈N2 }
IMPORTANTE: El orden de los pasos no es conmutativo.
Tema 3: Leng. Indep. del Contexto 22
Eliminar producciones nulas (I)entrada:
G = (N, Σ, P, S) independiente de contexto con S no recursivosalida:
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 → ε
proceso: primer paso: -- Objetivo: construcción del conjunto de símbolos anulables
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
⇒*
Tema 3: Leng. Indep. del Contexto 23
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 es Xi si Xi ∉ANULYi es Xi ó es ε si Xi ∈ANULYi no es ε para todo i };
end if;end loop;if S ∈ ANUL then P2 := P2 ∪ { S → ε } end if;
Tema 3: Leng. Indep. del Contexto 24
Eliminar producciones unitarias (I)
entrada: G = (N, Σ, P, S) independiente de contexto sin producciones nulas
salida:G1 = (N, Σ, P1, S) equivalente a G sin producciones unitarias (A → Β)
proceso: primer paso:-- Objetivo: construir para cada A ∈ N el conjunto UA = {B ∈ N : A B}-- Método: aplicar la definición inductiva:
• A ∈ UA
• Si B ∈ UA y B → C ∈ P entonces C ∈ UA
⇒*
Tema 3: Leng. Indep. del Contexto 25
Eliminar producciones unitarias (II)segundo paso:-- Construir P1 eliminando las producciones unitarias
P1 := Ø;for A in N loopfor B in UA loop
for regla in P loopif regla = B → α and α ∉ N then
P1 := P1 ∪ {A → α };end if;end loop;
end loop;end loop;
Tema 3: Leng. Indep. del Contexto 26
Forma Normal
Transformación de una GIC a forma normal:
� Estudiaremos procedimientos para:eliminar recursión a izquierdas,reemplazamientos y otros ....
� con el objetivo de transformar cualquier G.I.C. G en G’, tal queG’ 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 27
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 izquierda de un símbolo 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.
⇒*
⇒*
Tema 3: Leng. Indep. del Contexto 28
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 para A.
A (β1∪...∪βm )(α1 ∪ ... ∪ αn)∗ ⇒*
Tema 3: Leng. Indep. del Contexto 29
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.
Tema 3: Leng. Indep. del Contexto 30
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 → βA → αZγ
la nueva gramática es equivalente.
Tema 3: Leng. Indep. del Contexto 31
Forma normal de Greibach
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:
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 32
Forma normal de Greibach (I)
entrada: G = (N, Σ, P, S) independiente de contexto simplificadasalida: 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
1.- si Ai → aβ con a∈Σ 2.- si Ai → Ajβ con Ai<Aj3.- si Ai → Aiβ 4.- si Ai → Ajβ con Ai>Aj
Tema 3: Leng. Indep. del Contexto 33
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 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 34
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 hay
if hay reglas del grupo 3 para Ai then
eliminar recursión inmediata a la izquierda de Ai
end if;
end loop;
Tema 3: Leng. Indep. del Contexto 35
Forma normal de Greibach (IV)
Segundo paso: obtención de G3 en forma normal de Greibach
entrada: G1= (N1, Σ, P1, S) 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 grupo 2.-- Método: aplicar reemplazamientos siguiendo el orden inverso al de N1.-- Resultado: G2 = (N2, Σ, P2, S)
Tema 3: Leng. Indep. del Contexto 36
Forma normal de Greibach (V)
primera parte:
N2 := N1;P2 := P1;for i in n-1.. 1 loopfor j in n.. i+1 loop --eliminar reglas del grupo 2
while hay regla Ai → Ajα loopeliminar Ai → Ajα por reemplazamiento
end loop;
end loop;end loop;
Tema 3: Leng. Indep. del Contexto 37
Forma normal de Greibach (VI)
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 looppara 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 38
Equivalencia entre APs y GICs
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} para s ∈Σδ(q1, s, A) = {(q1, α) : A → sα ∈ P} para s ∈Σ , A∈N (A≠S)
El conjunto de estados finales: F = {q0, q1} si S → ε ∈P o bien F = {q1} si S → ε ∉P
Base de la demostración: w∈Σ+, S ⇒ wα si y sólo si (q0, w, ε)├── (q1, ε , α)**
Tema 3: Leng. Indep. del Contexto 39
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)
Tema 3: Leng. Indep. del Contexto 40
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.
Ej: { anbjcj: n,j ≥ 0 } ∩ { akbkcp: k,p ≥ 0 }
- L(G1) no es necesariamente independiente de contexto.
Tema 3: Leng. Indep. del Contexto 41
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
Tema 3: Leng. Indep. del Contexto 42
Ejemplo de sintaxis de Ada
sequence_of_statements ::= statement {statement}
statement ::= {label} simple_statement | {label} compound_statement
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
| 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/
Tema 3: Leng. Indep. del Contexto 43
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)>
]>
Tema 3: Leng. Indep. del Contexto 44
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>
Tema 3: Leng. Indep. del Contexto 45
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 Discos
Discos → Disco | Disco Discos