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.