Drzewo rozbioru

Transkrypt

Drzewo rozbioru
Drzewa rozbioru
syntaktycznego
Teoria automatów i języków
formalnych
Dr inŜ. Janusz Majewski
Katedra Informatyki
Drzewo rozbioru
Drzewo rozbioru syntaktycznego według
gramatyki G = <V,Σ,P,S>∈GBK jest to
drzewo zorientowane <K, D> z
korzeniem k0 i funkcją etykietującą
wierzchołki f: KaM, jeśli spełnione są
następujące warunki:
•
M ⊆ (V ∪ Σ) ∪{ε}
•
f(k0) = S
k1
•
niech k1,...,kn będą bezpośrednimi
potomkami korzenia k0;
wówczas: (S → f(k1)f(k2)...f(kn)) ∈ P
•
jeśli f(ki) ∈ Σ lub jeśli n = 1 i f(ki) = ε,
to ki jest liściem
•
jeśli f(ki) ∈ V, to ki jest korzeniem drzewa
(poddrzewa) rozbioru według gramatyki
<V, Σ, P, f(ki)>
k0
k2
...
kn
Przykład (1)
korzeń=symbol
początkowy gramatyki
E
E
+
korona cięcia
T+T*F = forma
zdaniowa
T
T
T
F
F
id
id
*
F
id
korona drzewa id+id*id
= słowo języka L(G)
Przykład:
Analizujemy gramatykę G,
gdzie:
V = {E, T, F} ,
T = {+, *, (, ), id},
P={ E→E+T|T
T→T*F|F
F → (E) | id },
S=E
oraz analizujemy słowo:
id + id * id
Przykład (2)
Przykład (3)
G = < {E, T, F} , {+, *, (, ), id} , {
E→E + T | T
T→T * F | F
F→(E) | id
}, E>
Analizowane słowo: id + id * id
Drzewo rozbioru
syntaktycznego
E
E
+
T
T
T
* F
F
F
id
id
id
Przykład (4)
G = < {E} , {+, *, (, ), id} , { E→E + E | E * E | (E) | id
}, E>
Analizowane słowo: id + id * id
E
E
E
id
E
E
E * E
E + E
id
id
+
id
*
E
id
id
Dla pewnego słowa (u nas: id + id * id) udało się zbudować dwa róŜne
drzewa rozbioru syntaktycznego. Taka gramatyka jest niejednoznaczna.
Podsumowanie
• Dla kaŜdego drzewa rozbioru syntaktycznego istnieje co najmniej jedno
wyprowadzenie słowa języka L(G) w gramatyce G
• Dla kaŜdego wyprowadzenia słowa istnieje odpowiadające mu drzewo
rozbioru syntaktycznego. Kilku róŜnym wyprowadzeniom mogą
odpowiadać identyczne drzewa rozbioru syntaktycznego.
• Dwa wyprowadzenia są równowaŜne, gdy odpowiadające im drzewa
rozbioru syntaktycznego są identyczne.
• Słowo języka L(G) jest niejednoznaczne w gramatyce G, jeśli jego
wyprowadzenia moŜna opisać przez co najmniej dwa róŜne drzewa
rozbioru syntaktycznego
• Gramatyka G jest niejednoznaczna, jeśli w języku L(G) istnieje co
najmniej jedno niejednoznaczne słowo w tej gramatyce. W przeciwnym
wypadku gramatyka jest jednoznaczna. W gramatyce jednoznacznej
istnieje dokładnie jedno wyprowadzenie lewostronne i dokładnie jedno
wyprowadzenie prawostronne (wśród wszystkich równowaŜnych
wyprowadzeń tego samego słowa)
• Problem: „czy dana gramatyka bezkontekstowa jest jednoznaczna?” jest
nierozstrzygalny.