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 k0i funkcją etykietującą wierzchołki f: KaM, jeśli spełnione są następujące warunki:
• M ⊆(V ∪ Σ) ∪{ε}
• f(k0) = S
• niech k1,...,knbę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 kijest liściem
• jeśli f(ki) ∈V, to kijest korzeniem drzewa (poddrzewa) rozbioru według gramatyki
<V, Σ, P, f(ki)>
k
0k
1k
2... k
nPrzykład (1)
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 E
E T
T
F
id
T
F
id
* F
id
+
korona cięcia T+T*F = forma
zdaniowa
korona drzewa id+id*id
= słowo języka L(G) korzeń=symbol początkowy gramatyki
Przykład (2)
Przykład (3)
Drzewo rozbioru syntaktycznego
E
E + T
T F
T
id
* F F id
id G = < {E, T, F} , {+, *, (, ), id} , { E→E + T | T
T→T * F | F
F→(E) | id } , E >
Analizowane słowo: 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 id id
E
E * E
E + E id 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) istniejeco 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.