Linguaggi di programmazione – esercizio 1 proprietà di chiusura
Esercizio 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
Secondo albero di derivazione per la stringa 0011