Beispiel für Vereinigung linkslinearer Sprachen
Sind L1 und L2 linkslineare Sprachen, so ist auch die Vereinigung linkslinear. Zur Erläuterung dieser Eigenschaft linkslinearer Sprachen soll ein Beispiel betrachtet werden:
Sei G1 = (VN1, VT1, P1, S1) gegeben mit VN1 = {S,A,B} VT1 = {a,b} P1 = {(S -> Sa | ba)} S1 = S, dann ist |
Sei G2 = (VN2, VT2, P2, S2) gegeben mit VN2 = {S,A,B} VT2 = {a,b} P2 = {(S -> Sa | a)} S2 = S, dann ist |
Es ist |
Um eine Grammatik G für diese Sprache zu finden, benennen wir in G1 nun S in T um und in G2 die Zeichen S, A und B in U, V und W. Wir erhalten die neuen Grammatiken G1’ und G2’, die die gleiche Struktur wie die alten Grammatiken G1 und G2 haben, also auch die gleichen Sprachen erzeugen.
G1’ = (VN1’, VT1’, P1’, S1’) VN1’ = {T,A,B} VT1’ = {a,b} P1’ = {(T -> Ta | ba)} S1’ = T, |
G2’ = (VN2’, VT2’, P2’, S2’) VN2’ = {U,V,W} VT2’ = {a,b} P2’ = {(U -> Ua | a)} S2’ = U, |
Daraus ergibt sich sofort die gesuchte Grammatik: G = (VN,VT,P,S) VN = {T,A,B,U,V,W,S} VT = {a,b} P = {(T -> Ta | ba), (U -> Ua | a), (S -> T | U)} S = S |
Eine solche Vereinigung taucht bei der Analyse eines Pascalprogramms häufig auf. So ist etwa eine vorzeichenlose Konstante entweder ein Konstantenbezeichner oder eine vorzeichenlose Zahl oder eine Zeichenkette oder das Wortsymbol nil, wobei die ersten drei Begriffe linkslineare Sprachen beschreiben und letzterer eine einelementige. Die obige Regel ist dann mehrfach anzuwenden.