Esercizi proprietà di chiusura

Linguaggi di programmazione – esercizio 1 proprietà di chiusura

lockEsercizio proprietà di chiusura

Dati i due linguaggi

L1 = {0n 1n | n ≥ 0}
L2 = {2k | k ≥ 0}

Fornire una grammatica per L = L1L2 ∪ L2L1 e mostrare che è ambiguo.

Per prima cosa dobbiamo trovare le grammatiche dei due linguaggi:

  • G1 una grammatica tale che L(G1) = L1

G1 = (X1,V1,S1,P1)
X1 = {0,1}
V1 = {S1}

P1 = {
S1 -> 0S11 | ε
}

  • G2 una grammatica tale che L(G2) = L2

G2 = (X2,V2,S2,P2)
X2 = {2}
V2 = {S2}

P2 = {
S2 -> 2S2 | ε
}

  •  G3 una grammatica tale che L(G3) = L1L2

G3 = (X3,V3,S3,P3)
X3 = X1 ∪ X2 = {0,1,2}
V3 = V1 ∪ V2 ∪ V3 = {S1, S2, S3}

P3 = { S3 -> S1S2 } ∪ P1 ∪ P2 =
P3 = {
S3 -> S1S2
S1 -> 0S11 | ε
S2 -> 2S2 | ε
}

  •  G4 una grammatica tale che L(G4) = L2L1

G4 = (X4,V4,S4,P4)
X4 = X1 ∪ X2 = {0,1,2}
V4 = V1 ∪ V2 ∪ V4 = {S1, S2, S4}

P4 = { S4 -> S2S1 } ∪ P2 ∪ P1 =
P4 = {
S4 -> S2S1
S2 -> 2S2 | ε
S1 -> 0S11 | ε
}

  •  G una grammatica tale che L(G) = L

G = (X,V,S,P)
X = X3 ∪ X4 = {0,1,2}
V = V3 ∪ V4 ∪ S= {S, S1, S2, S3, S4}

P = { S -> S3 | S4 } ∪ P3 ∪ P4 =
P = {
S -> S3 | S4
S3 -> S1S2
S4 -> S2S1
S1 -> 0S11 | ε
S2 -> 2S2 | ε
}

La grammatica G è ambigua perché vi sono almeno due alberi di derivazione differenti per derivare ad esempio la stringa 0011 ∈ L

Primo albero di derivazione per la stringa 0011

albero2Secondo albero di derivazione per la stringa 0011

albero1

 

/ 5
Grazie per aver votato!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *