La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tomado de Sudkamp: Languages and Machines Cap. 5.

Presentaciones similares


Presentación del tema: "Tomado de Sudkamp: Languages and Machines Cap. 5."— Transcripción de la presentación:

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 AV do if there is an A rule A w and wPREV* 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 AV 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 ANEW 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


Descargar ppt "Tomado de Sudkamp: Languages and Machines Cap. 5."

Presentaciones similares


Anuncios Google