Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porAurora Marín Ponce Modificado hace 6 años
1
Tomado de Sudkamp: Languages and Machines Cap. 5.
FORMAS NORMALES Tomado de Sudkamp: Languages and Machines Cap. 5.
2
Gramática regular Forma normal de Chomsky A aB A a A A BC A a S S no aparece al lado derecho de ninguna producción Forma normal de Greibach A aA1A2A3…. An A a S
3
Evite que el símbolo de arranque sea recursivo.
Eliminación de reglas Lambda Eliminación de las reglas en cadena (chain rules). Símbolos inútiles
4
Costrucción del conjunto de variables anulables
Algoritmo Costrucción del conjunto de variables anulables Input: Context-free Grammar G=(V,,P,S) NULL=:{A | A } Repeat 2.1 PREV:=NULL 2.2 for each variable AV do if there is an A rule A w and wPREV* then NULL=NULL{A} until NULL=PREV
5
EJEMPLO 5.1.2 G: V = {S, A, B, C} Σ = {a,b} P: S → ACA A → aAa | B | C
B → Bb | b C → cC | Iter NULL PREV {C} {A,C} {C} {S, A, C} {A,C} {S, A, C} {S,A,C}
6
Teorema 5.1.5 Dada G =(V,,P,S) una cfg, existe un algoritmo que construye una gramática cfg GL=(VL,,PL,SL) tal que : L(G)=L(GL) SL no es una variable recursiva. A → si y solo sí L(G) y A=SL.
7
DEMOSTRACIÓN Construcción de GL Construcción de PL
VL es V con un nuevo símbolo de arranque si es necesario. Construcción de PL Si L(G) entonces SL → Sea A→ w una regla de P. Si w puede escribirse de la forma w1A1w2A2….wkAkwk+1 donde A1…A2, Ak son símbolos anulables entonces A→ w1w2….wkwk+1 Es una regla de PL. A → si y solo si L(G) y A=SL.
8
Ejemplo 5.1.4 G: V = {S, A, B, C} Σ = {a,b} P: S → ACA
A → aAa | B | C B → Bb | b C → cC | Símbolos anulables: S,A,C GL: V = {S, A, B, C} Σ = {a,b} P: S → ACA|CA|AC|AA|A|C| A → aAa |aa | B | C B → Bb | b C → cC | c G: S => ACA =>aAaCA => aBaCA =>abaCA =>abaA =>abaC =>aba G: S => A =>aAa =>aBa => aba
9
Reglas en cadena Es una regla de la forma A → B.
CHAIN(A) comprende además de A, todas las símbolos auxiliares que se derivan de A. Es decir CHAIN(A)={B | A=>*B}{A}. CHAIN(A) se construye recursivamente a partir de A.
10
Ejemplo 5.2.1 CHAIN RULES G: V = {S, A, B, C} Σ = {a,b}
Chain(S)= {S,A,C,B} Chain(A)= {A,C,B} Chain(B)= {B} Chain(C)= {C} G: V = {S, A, B, C} Σ = {a,b} P: S → ACA|CA|AC|AA|AC|A|C| A → aAa | B | C B → Bb | b C → cC | c S → ACA| CA| AC| AA| AC| S → aAa| Bb| b| cC| c A → aAa| Bb| b| cC| c B→ Bb| b C → cC| c
11
Símbolos Inútiles Hay dos clases de símbolos inútiles:
Aquellos que no derivan cadenas de símbolos terminales (estériles). Aquellos que no son alcanzables a partir de S (inalcanzables). El teorema garantiza que para toda cfg existe una equivalente sin símbolos estériles. El teorema garantiza que para toda cfg existe una equivalente sin símbolos inútiles.
12
Construcción del conjunto de variables no estériles.
TERM:={A | existe A → w con w* }. repeat PREV:=TERM for cada variable AV do if existe A → w con w(PREV)* then TERM:=TERM{A} until PREV:=TERM
13
EJEMPLO 5.3.1 S → AC| BS | B A → aA | aF B → CF | b C → cC | D
D → aD | BD | C E → aA | BSA F → bB | b Iter TERM PREV {B,F} {B,F,A,S} {B,F} {B, F, A, S, E} {B,F,A,S} {B, F, A, S, E} {B, F, A, S, E} GT : S → BS | B A → aA | aF B → b E → aA | BSA F → bB | b
14
Construcción del conjunto de variables ALCANZABLES.
REACH:={S} PREV:= repeat NEW:=REACH-PREV PREV:=REACH for cada variable ANEW do for cada regla A → w agrege a REACH todas las variables de w until REACH:=PREV
15
EJEMPLO 5.3.2 S → AC| BS | B A → aA | aF B → CF | b C → cC | D
D → aD | BD | C E → aA | BSA F → bB | b Iter REACH PREV NEW {S} {S} {S,B} {S} {B} {S, B } {S, B} GU : S → BS | B B → b GT : S → BS | B A → aA | aF B → b E → aA | BSA F → bB | b
16
FN de CHOMSKY Se parte de una gramática que:
El símbolo de arranque no es recursivo. No contiene variables anulables salvo S. No contiene reglas en cadena. No tiene símbolos inútiles. A → B’T T → AW W →A’D A → bAaD A → B’AA’D B’ → b A’ →a
17
Ejemplo 5.4.2 (AE) Σ = {b, +, (, )} A → A + T | b | (A) P: 1. S → A
AE: V = {S, A, T} Σ = {b, +, (, )} P: 1. S → A 2. A → T 3. A → A + T 4. T → b 5. T → (A) S → A + T | b | (A) A → A + T | b | (A) T → b | (A) R → ) L → ( P → + Z →AR Y →PT T → b | AY | LZ S→AY| b | LZ
18
Eliminar la recursividad a izquierda directa.
Se busca eliminar las reglas de tipo A → Aw como A → A + T. (bvc)*a(bvc)* ba* (bvc)(avb)* A → A B |BA | a B → b | c A → A a | b A → A a | Ab| b | c A → bZ | cZ Z → aZ | bZ | a | b A → BAZ | aZ | BA Z → BZ | B B → b | c A → bZ | b Z → aZ | a
19
Generalizando… A → Au1 | Au2 |…| Aun A → v1 | v2 |…| vk
A → v1 | v2 |…| vk | v1Z | v2Z |…| vk Z Z → u1Z | u2Z|…| unZ
20
Conversión a fn de Greibach
Forma normal de Greibach A → aA1A2A3…. An A → a S → S → AB | A → AB | CB | a B → AB | b C → AC | c G S → AB | A → aR1 | CBR1 | CB | a B → AB | b C → AC | c R1 →BR1 | B S → AB | A → aR1 | CBR1 | CB | a B → aR1B | CBR1B | CBB | aB | b C → AC | c R1 →BR1 | B LEMA La regla A →uBv se puede reemplazar por A→uk1v|…|uknv donde B→k1|…| kn son todas las B reglas.
21
continuamos S → AB | A → aR1 | CBR1 | CB | a
B → aR1B | CBR1B | CBB | aB | b C → AC | c R1 →BR1 | B S → AB | A → aR1 | CBR1 | CB | a B → aR1B | CBR1B | CBB | b C → aR1C | CBR1C | CBC | aC | c R1 →BR1 | B C → aR1C | aC | c | aR1CR2 | aCR2 | cR2 R2 → BR1CR2 | BCR2 |BR1C|BC
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.