ANALIZA SKŁADNIOWA
description
Transcript of ANALIZA SKŁADNIOWA
ANALIZA SKŁADNIOWAANALIZA SKŁADNIOWA
ANALIZA SKŁADNIOWAANALIZA SKŁADNIOWA
Analiza składniowa stanowi kolejny, po Analiza składniowa stanowi kolejny, po analizie leksykalnej etap kompilacji;analizie leksykalnej etap kompilacji; Analiza składniowa jest przeprowadzana Analiza składniowa jest przeprowadzana przez analizator składniowy;przez analizator składniowy;Do analizatora składniowego dostarczane Do analizatora składniowego dostarczane są dane w postaci symboli leksykalnych;są dane w postaci symboli leksykalnych;Analizator po zakończeniu pracy zwraca Analizator po zakończeniu pracy zwraca tzw. drzewo rozbioru lub jego uproszczoną tzw. drzewo rozbioru lub jego uproszczoną wersję (abstrakcyjne drzewo składniowe)wersję (abstrakcyjne drzewo składniowe)
22
ANALIZA SKŁADNIOWAANALIZA SKŁADNIOWA
Symbole leksykalne
Drzewo wyprowadzenia
Strumień danych wejściowych
Analizator leksykalny
Analizator składniowy
33
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Inną metodą tworzenia języków Inną metodą tworzenia języków formalnych jest generowanie ich za formalnych jest generowanie ich za pomocą tzw. gramatyki bezkontekstowej;pomocą tzw. gramatyki bezkontekstowej;
Pierwowzorem gramatyk Pierwowzorem gramatyk bezkontekstowych były reguły bezkontekstowych były reguły powstawania zdań w językach powstawania zdań w językach naturalnych, czyli po prostu gramatyki naturalnych, czyli po prostu gramatyki języków naturalnych;języków naturalnych;
44
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
płot szybki przeskoczył piespłot szybki przeskoczył pies
szybki pies przeskoczył płotszybki pies przeskoczył płot
Podstawowe pytanie: W jaki formalny Podstawowe pytanie: W jaki formalny sposób zweryfikować poprawność zdania?sposób zweryfikować poprawność zdania?
55
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
zdanie
podmiot orzeczenie
przymiotnik rzeczownik czasownik dopełnienie
rzeczownik
Szybki pies przeskoczył płot
66
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
gramatyka – reguły produkcji:gramatyka – reguły produkcji:Zdanie -> podmiot orzeczenieZdanie -> podmiot orzeczeniePodmiot -> przymiotnik rzeczownikPodmiot -> przymiotnik rzeczownikOrzeczenie -> czasownik dopełnienieOrzeczenie -> czasownik dopełnienieDopełnienie -> rzeczownikDopełnienie -> rzeczownikRzeczownik ->Rzeczownik -> płot płotPrzymiotnik ->Przymiotnik -> szybki szybkiCzasownik ->Czasownik -> przeskoczył przeskoczyłRzeczowniki ->Rzeczowniki -> pies pies
77
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Za pomocą tych reguł możemy stworzyć Za pomocą tych reguł możemy stworzyć zdanie: szybki pies przeskoczył płot:zdanie: szybki pies przeskoczył płot:
zdaniezdanie=>podmiot orzeczenie=>podmiot orzeczenie=>przymiotnik rzeczownik orzeczenie=>przymiotnik rzeczownik orzeczenie
=>przymiotnik rzeczownik czasownik dopełnienie=>przymiotnik rzeczownik czasownik dopełnienie=>szybki rzeczownik czasownik dopełnienie=>szybki rzeczownik czasownik dopełnienie=> szybki pies czasownik dopełnienie=> szybki pies czasownik dopełnienie=>szybki pies przeskoczył dopełnienie=>szybki pies przeskoczył dopełnienie=>szybki pies przeskoczył płot=>szybki pies przeskoczył płot
88
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Za pomocą reguł tej gramatyki można Za pomocą reguł tej gramatyki można jeszcze utworzyć trzy inne zdania:jeszcze utworzyć trzy inne zdania:
Szybki płot przeskoczył piesSzybki płot przeskoczył piesSzybki płot przeskoczył płotSzybki płot przeskoczył płotSzybki pies przeskoczył piesSzybki pies przeskoczył pies
99
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Szybki płot przeskoczył pies:Szybki płot przeskoczył pies:
zdaniezdanie=>podmiot orzeczenie=>podmiot orzeczenie=>przymiotnik rzeczownik orzeczenie=>przymiotnik rzeczownik orzeczenie
=>przymiotnik rzeczownik czasownik dopełnienie=>przymiotnik rzeczownik czasownik dopełnienie=>szybki rzeczownik czasownik dopełnienie=>szybki rzeczownik czasownik dopełnienie=> szybki płot czasownik dopełnienie=> szybki płot czasownik dopełnienie=>szybki płot przeskoczył dopełnienie=>szybki płot przeskoczył dopełnienie=>szybki płot przeskoczył pies=>szybki płot przeskoczył pies
1010
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Szybki płot przeskoczył płot:Szybki płot przeskoczył płot:
zdaniezdanie=>podmiot orzeczenie=>podmiot orzeczenie=>przymiotnik rzeczownik orzeczenie=>przymiotnik rzeczownik orzeczenie
=>przymiotnik rzeczownik czasownik dopełnienie=>przymiotnik rzeczownik czasownik dopełnienie=>szybki rzeczownik czasownik dopełnienie=>szybki rzeczownik czasownik dopełnienie=> szybki płot czasownik dopełnienie=> szybki płot czasownik dopełnienie=>szybki płot przeskoczył dopełnienie=>szybki płot przeskoczył dopełnienie=>szybki płot przeskoczył płot=>szybki płot przeskoczył płot
1111
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Szybki pies przeskoczył pies:Szybki pies przeskoczył pies:
zdaniezdanie=>podmiot orzeczenie=>podmiot orzeczenie=>przymiotnik rzeczownik orzeczenie=>przymiotnik rzeczownik orzeczenie
=>przymiotnik rzeczownik czasownik dopełnienie=>przymiotnik rzeczownik czasownik dopełnienie=>szybki rzeczownik czasownik dopełnienie=>szybki rzeczownik czasownik dopełnienie=> szybki pies czasownik dopełnienie=> szybki pies czasownik dopełnienie=>szybki pies przeskoczył dopełnienie=>szybki pies przeskoczył dopełnienie=>szybki pies przeskoczył pies=>szybki pies przeskoczył pies
1212
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Zauważmy iż zdaniaZauważmy iż zdania płot szybki przeskoczył piespłot szybki przeskoczył pies
nie można wyprowadzić za pomocą reguł nie można wyprowadzić za pomocą reguł powyższej gramatyki, gdyż nie znajdziemy powyższej gramatyki, gdyż nie znajdziemy takiego wyprowadzenia, po którym takiego wyprowadzenia, po którym rzeczownik byłby na początku zdania. Nie rzeczownik byłby na początku zdania. Nie ma produkcji:ma produkcji:
Podmiot -> rzeczownik Podmiot -> rzeczownik przymiotnikprzymiotnik
1313
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Gramatyka bezkontekstowa, jest Gramatyka bezkontekstowa, jest przydatnym sposobem do opisania przydatnym sposobem do opisania języków programowania;języków programowania;Skonstruujmy teraz gramatykę Skonstruujmy teraz gramatykę bezkontekstową, którą będzie można bezkontekstową, którą będzie można opisać niektóre konstrukcje występujące w opisać niektóre konstrukcje występujące w językach programowania;językach programowania;Opisujemy konstrukcje: if, begin, while,Opisujemy konstrukcje: if, begin, while,Zakładamy, że I1,I2 są instrukcjami, E,D –Zakładamy, że I1,I2 są instrukcjami, E,D –wyrażeniami;wyrażeniami;
1414
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
gramatyka – reguły produkcji:gramatyka – reguły produkcji:
Zdanie -> if zdanieZdanie -> if zdanieZdanie -> begin zdanieZdanie -> begin zdanieZdanie -> while zdanieZdanie -> while zdanieZdanie -> then zdanieZdanie -> then zdanieZdanie -> else zdanieZdanie -> else zdanieZdanie -> doZdanie -> doZdanie -> instrukcja zdanieZdanie -> instrukcja zdanie
1515
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
gramatyka – reguły produkcji cd:gramatyka – reguły produkcji cd:
Zdanie -> wyrażenie zdanieZdanie -> wyrażenie zdanieZdanie -> instrukcjaZdanie -> instrukcjaInstrukcja -> I1Instrukcja -> I1Instrukcja -> I2Instrukcja -> I2Wyrażenie -> EWyrażenie -> EWyrażenie -> DWyrażenie -> D
1616
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Za pomocą tych reguł możemy z łatwością Za pomocą tych reguł możemy z łatwością stworzyć instrukcję: if E then I1 else I2stworzyć instrukcję: if E then I1 else I2
zdaniezdanie=>=>ifif zdanie zdanie=>=>ifif wyrażenie zdanie wyrażenie zdanie=>=>ifif wyrażenie wyrażenie thenthen zdanie zdanie=> => ifif wyrażenie wyrażenie thenthen instrukcja zdanie instrukcja zdanie
=> => ifif wyrażenie wyrażenie thenthen instrukcja instrukcja elseelse zdanie zdanie=>=>ifif wyrażenie wyrażenie thenthen instukcja instukcja elseelse instrukcja instrukcja=>=>ifif EE thenthen instrukcja instrukcja elselse instrukcjae instrukcja
=>=>ifif EE thenthen I1I1 elseelse instrukcja instrukcja=>=>ifif EE thenthen I1I1 elseelse I2I21717
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
while D do I2while D do I2
zdaniezdanie=>=>whilewhile zdanie zdanie=>=>whilewhile wyrażenie zdanie wyrażenie zdanie=>=>whilewhile wyrażenie wyrażenie dodo zdanie zdanie=> => whilewhile wyrażenie wyrażenie dodo instrukcja instrukcja=>=>whilewhile DD dodo instrukcja instrukcja=>=>whilewhile DD dodo I2I2
1818
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Gramatyką bezkontekstową (GBK) - Gramatyką bezkontekstową (GBK) - nazywamy układ G=(V,nazywamy układ G=(V,ΣΣ,,P,S) składający P,S) składający się z następujących elementów:się z następujących elementów:
1.1.V – zbiór skończony, którego elementy V – zbiór skończony, którego elementy nazywamy nazywamy zmiennymi zmiennymi lub lub symbolami symbolami nieskończonyminieskończonymi;;
2.2. ΣΣ=={a{a11,…,a,…,ann} – zbiór skończony zwany } – zbiór skończony zwany alfabetemalfabetem gramatyki, którego elementy gramatyki, którego elementy nazywamy symbolami końcowymi;nazywamy symbolami końcowymi;
1919
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
3.3. P P V x (V V x (V ΣΣ)* – skończony zbiór )* – skończony zbiór elementów zwanych elementów zwanych produkcjamiprodukcjami;;
4.4. S S єє V V – wyróżniona zmienna zwana – wyróżniona zmienna zwana zmienną początkową zmienną początkową lublub symbolem symbolem startowymstartowym. .
2020
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Zbiór produkcji P – są to pary (X,Zbiór produkcji P – są to pary (X,αα), gdzie ), gdzie X X єє V jest pewna zmienną, a V jest pewna zmienną, a αα єє (V (VU U ΣΣ)* )* jest słowem utworzonym ze zmiennych i jest słowem utworzonym ze zmiennych i symboli końcowych (np.: symboli końcowych (np.: αα=aXYb);=aXYb); produkcja (X,produkcja (X,αα), wskazuje, że w trakcie ), wskazuje, że w trakcie konstruowania słów z konstruowania słów z ΣΣ na każdym etapie na każdym etapie możemy za zmienną X podstawić możemy za zmienną X podstawić αα;;Produkcje oznaczmy: Produkcje oznaczmy: X -> X -> αα;;Przykład: Przykład: Zdanie -> wyrażenie zdanieZdanie -> wyrażenie zdanie
2121
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Niech G=(V,Niech G=(V,ΣΣ,,P,S) będzie dowolną P,S) będzie dowolną gramatyką bezkontekstową. Jeśli gramatyką bezkontekstową. Jeśli αα1 1 єє (V (VU U
ΣΣ)* jest słowem utworzonym ze zmiennych )* jest słowem utworzonym ze zmiennych i symboli końcowych i w słowie występuje i symboli końcowych i w słowie występuje pewna zmienna X, i do P należy produkcja pewna zmienna X, i do P należy produkcja X->X->ββ, to jeśli w miejsce X podstawimy , to jeśli w miejsce X podstawimy ββ i i tak otrzymane słowo oznaczymy przez tak otrzymane słowo oznaczymy przez αα22, , tzn. tzn. αα22= = γγ1 1 ββ γγ22, to zapisujemy to w , to zapisujemy to w następujący sposób:następujący sposób:
αα11 => => αα22
2222
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Mówimy, że słowo Mówimy, że słowo ααkk єє (V (VU U ΣΣ)* jest )* jest wyprowadzalne z wyprowadzalne z αα11 єє (V (VU U ΣΣ)*, gdy istnieje )*, gdy istnieje skończony ciąg słów skończony ciąg słów αα22,,αα33,..., ,..., ααk-1k-1 єє (V (VU U ΣΣ)* )* taki, że:taki, że:
αα11=>=>αα22=>=>αα33=>...=>=>...=>ααk-1k-1=>=>ααkk;;Piszemy wtedy: Piszemy wtedy: αα11=>*=>*ααkk;;Przyjmujemy dodatkowo, że zawsze Przyjmujemy dodatkowo, że zawsze
αα=>*=>*αα;;
2323
PrzykładPrzykład
Niech Niech ={a,b} i w gramatyce G mamy ={a,b} i w gramatyce G mamy produkcje: P={S=>aX, X->bYa, X->bYbZ, produkcje: P={S=>aX, X->bYa, X->bYbZ, X->bY, Y->bZa, Y->bZb, Y->bZ, Z->aW, X->bY, Y->bZa, Y->bZb, Y->bZ, Z->aW, W->b, W->a}. Czy zdanie W->b, W->a}. Czy zdanie =abbabbab =abbabbab daje się wyprowadzić ze zdania daje się wyprowadzić ze zdania =abYbz?=abYbz?
11=abbZbZ; =abbZbZ; 22=abbaWbaW;=abbaWbaW;
=>=>11=>=>22=> =>
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Jeśli słowo Jeśli słowo α α єє (V (VU U ΣΣ)* składa się )* składa się wyłącznie z symboli końcowych i jest wyłącznie z symboli końcowych i jest wyprowadzalne z S, to wyprowadzalne z S, to α α nazywamy nazywamy słowem generowanym przez gramatykęsłowem generowanym przez gramatykę G;G;
Językiem generowanym przez Językiem generowanym przez gramatykę gramatykę G nazywamy zbiór słów L(G) G nazywamy zbiór słów L(G) generowanych przez G, tzn:generowanych przez G, tzn:
L(G):={L(G):={ єє ΣΣ* : S=>* * : S=>* }; };2525
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Język L nazywamy Język L nazywamy językiem językiem bezkontekstowym, bezkontekstowym, gdy L=L(G) dla pewnej gdy L=L(G) dla pewnej gramatyki bezkontekstowej G;gramatyki bezkontekstowej G;
Zbiór wszystkich języków Zbiór wszystkich języków bezkontekstowych oznaczamy przezbezkontekstowych oznaczamy przez JBKJBK;;
2626
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Załóżmy, że mamy daną gramatykę Załóżmy, że mamy daną gramatykę bezkontekstową G oraz dowolną bezkontekstową G oraz dowolną produkcje tej gramatyki. Wówczas każdy produkcje tej gramatyki. Wówczas każdy symbol użyty po lewej stronie produkcji symbol użyty po lewej stronie produkcji nazywany jest nazywany jest nieterminalnym nieterminalnym (nieterminalem);(nieterminalem);Pozostałe symbole są symbolamiPozostałe symbole są symbolami terminalnymi (terminalami);terminalnymi (terminalami);
2727
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
W omówionym przykładzie zaznaczamy:W omówionym przykładzie zaznaczamy:
ZdanieZdanie -> -> ifif zdaniezdanieZdanieZdanie -> -> beginbegin zdaniezdanieZdanieZdanie -> -> whilewhile zdaniezdanieZdanieZdanie -> -> thenthen zdaniezdanieZdanieZdanie -> -> elseelse zdaniezdanieZdanieZdanie -> -> dodo zdaniezdanieZdanieZdanie -> -> instrukcjainstrukcja zdaniezdanie
2828
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
gramatyka – reguły produkcji cd:gramatyka – reguły produkcji cd:
ZdanieZdanie -> -> wyrażenie zdaniewyrażenie zdanieZdanieZdanie -> -> instrukcjainstrukcjaInstrukcjaInstrukcja -> -> I1I1InstrukcjaInstrukcja -> -> I2I2WyrażenieWyrażenie -> -> EEWyrażenieWyrażenie -> -> DDnieterminalenieterminale terminaleterminale
2929
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Niech G będzie gramatyką Niech G będzie gramatyką bezkontekstową. Niech bezkontekstową. Niech 11=>=>22=>=>33=>...=>=>...=>kk, , 11,,22,...,,...,kk єє (V (VU U ΣΣ)* )* będzie wyprowadzeniem w G. będzie wyprowadzeniem w G. Wyprowadzenie to nazywamy Wyprowadzenie to nazywamy lewym lewym wyprowadzeniemwyprowadzeniem, gdy każde pojedyncze , gdy każde pojedyncze wyprowadzenie wyprowadzenie i-1i-1=>=>ii w tym łańcuchu w tym łańcuchu wyprowadzeń polega na zastosowaniu wyprowadzeń polega na zastosowaniu produkcji z G do pierwszej zmiennej w produkcji z G do pierwszej zmiennej w i-1 i-1 liczonych od lewej strony;liczonych od lewej strony;
3030
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Niech G będzie gramatyką Niech G będzie gramatyką bezkontekstową. Niech bezkontekstową. Niech 11=>=>22=>=>33=>...=>=>...=>kk, , 11,,22,...,,...,kk єє (V (VU U ΣΣ)* )* będzie wyprowadzeniem w G. będzie wyprowadzeniem w G. Wyprowadzenie to nazywamy Wyprowadzenie to nazywamy prawym prawym wyprowadzeniemwyprowadzeniem, gdy każde pojedyncze , gdy każde pojedyncze wyprowadzenie wyprowadzenie i-1i-1=>=>ii w tym łańcuchu w tym łańcuchu wyprowadzeń polega na zastosowaniu wyprowadzeń polega na zastosowaniu produkcji z G do pierwszej zmiennej w produkcji z G do pierwszej zmiennej w i-1 i-1 liczonych od prawej strony;liczonych od prawej strony;
3131
PrzykładPrzykład
Jeśli Jeśli =abcXcaYdaXa i w G mamy =abcXcaYdaXa i w G mamy produkcję X->aYb, to:produkcję X->aYb, to:
abcXcaYdaXa => abcabcXcaYdaXa => abcaYbaYbcaYdaXa – jest caYdaXa – jest lewym wyprowadzeniem;lewym wyprowadzeniem;
abcXcaYdaXa => abcXcaYdaabcXcaYdaXa => abcXcaYdaaYbaYb – jest – jest prawym wyprowadzeniem;prawym wyprowadzeniem;
3232
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Dla danej gramatyki G oraz S=>*Dla danej gramatyki G oraz S=>*, to , to wówczas:wówczas:
Jeśli Jeśli zawiera tylko terminale, to zawiera tylko terminale, to nazywamy nazywamy zdaniemzdaniem;;
Jeśli Jeśli zawiera terminale oraz zawiera terminale oraz nieterminale, lub same nieterminale, to nieterminale, lub same nieterminale, to nazywamy nazywamy formą zdaniowąformą zdaniową;;
WniosekWniosekZdanie jest formą zdaniową, która nie Zdanie jest formą zdaniową, która nie
zawiera nieterminali;zawiera nieterminali;3333
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
Niech G będzie gramatyką bezkontekstową. Niech G będzie gramatyką bezkontekstową. Wówczas:Wówczas:
G jest gramatyką rekursywną (rekurencyjną), G jest gramatyką rekursywną (rekurencyjną), gdy:gdy:
X=>X=>XX;; G jest gramatyką lewostronnie rekursywną, gdy:G jest gramatyką lewostronnie rekursywną, gdy:
X=>XX=>X;; G jest gramatyką prawostronnie rekursywną, G jest gramatyką prawostronnie rekursywną,
gdy:gdy: X=>X=>X;X;
3434
DRZEWO WYPROWADZENIADRZEWO WYPROWADZENIANiech G=(V,Niech G=(V,,P,S) będzie dowolna ,P,S) będzie dowolna gramatyką, słowa Agramatyką, słowa A* będzie dowolnym * będzie dowolnym słowem. Wówczas A możemy słowem. Wówczas A możemy przyporządkować graf zwany przyporządkować graf zwany drzewem drzewem wyprowadzenia A w Gwyprowadzenia A w G.. Wierzchołkami drzewa wyprowadzenia są Wierzchołkami drzewa wyprowadzenia są pewne elementy zbioru Vpewne elementy zbioru V{{}. }. Zasady konstrukcji drzewa są Zasady konstrukcji drzewa są następujące:następujące:
3535
DRZEWO WYPROWADZENIADRZEWO WYPROWADZENIAZmienna początkowa S jest korzeniem Zmienna początkowa S jest korzeniem drzewa;drzewa;Jeśli XJeśli XVV{{} jest wierzcholkiem, to:} jest wierzcholkiem, to:
Jeśli XJeśli XV i w G mamy produkcję X-V i w G mamy produkcję X->X>X11...X...Xkk gdzie X gdzie X11...X...XkkVV{{} to nowymi } to nowymi wierzchołkami są Xwierzchołkami są X11...X...Xk k .. Od X Od X prowadzimy krawędzie skierowane do tych prowadzimy krawędzie skierowane do tych wierzchołków:wierzchołków:
XX
XX11 XX22...... XXkk
3636
DRZEWO WYPROWADZENIADRZEWO WYPROWADZENIA
Jeśli XJeśli X{{} (jest symbolem końcowym } (jest symbolem końcowym lub pustym) to X nie jest początkiem lub pustym) to X nie jest początkiem żadnej krawędzi skierowanej wtedy X jest żadnej krawędzi skierowanej wtedy X jest końcowym wierzchołkiem drzewakońcowym wierzchołkiem drzewa;;
Gdy wszystkie wierzchołki końcowe są Gdy wszystkie wierzchołki końcowe są oznaczone symbolami końcowymi, to oznaczone symbolami końcowymi, to słowo z nich utworzone, czytane od lewej słowo z nich utworzone, czytane od lewej do prawej, będzie słowem generowanym do prawej, będzie słowem generowanym przez tę gramatykę;przez tę gramatykę;
3737
DRZEWO WYPROWADZENIADRZEWO WYPROWADZENIA
W języku terminali zasady te możemy W języku terminali zasady te możemy sformułować następująco:sformułować następująco:
Każdy węzeł wewnętrzny drzewa Każdy węzeł wewnętrzny drzewa odpowiada nieterminalowi;odpowiada nieterminalowi;
Dzieci węzła drzewa są prawymi stronami Dzieci węzła drzewa są prawymi stronami produkcji;produkcji;
Liście w drzewie wyprowadzenia Liście w drzewie wyprowadzenia odpowiadają terminalom;odpowiadają terminalom;
3838
PrzykładPrzykład
Narysujmy drzewo wyprowadzenia słów Narysujmy drzewo wyprowadzenia słów bba, aaaba w gramatyce o produkcjach bba, aaaba w gramatyce o produkcjach P={S->aS | bS | a};P={S->aS | bS | a};
Zauważmy, że słowo bba ma Zauważmy, że słowo bba ma wyprowadzenie:wyprowadzenie:
SS =>bS=>bS =>bbS=>bbS =>bba=>bba
3939
PrzykładPrzykładDrzewo wyprowadzenia dla słowa bba:Drzewo wyprowadzenia dla słowa bba:
SS
bb SS
bb SS
aa
4040
PrzykładPrzykładSS=>aS=>aS =>aaS=>aaS=>aaaS=>aaaS =>aaabS=>aaabS=>aaaba=>aaaba
SS
aa SS
aa SS
aa SS
bb SS
aa 4141
PrzykładPrzykład
Niech produkcje pewnej gramatyki G, Niech produkcje pewnej gramatyki G, będą postaci:będą postaci:
P={P={ S -> S + SS -> S + SS -> S * SS -> S * S
S -> ( S )S -> ( S )S -> a }S -> a }
Wyprowadźmy wyrażenieWyprowadźmy wyrażeniea * a + aa * a + a
4242
PrzykładPrzykładSS=>S*S=>S*S =>S*S+S=>S*S+S=>a*S+S=>a*S+S =>a*a+S=>a*a+S=>a*a+a=>a*a+a
SS
SS SS**
SS ++ SSaa
aa aa
=>S+S=>S+SSS =>S*S+S=>S*S+S=>a*S+S=>a*S+S =>a*a+S=>a*a+S=>a*a+a=>a*a+a
SS
SS ++ SS
SS ** SS
aa aa
aa
4343
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWA
DefinicjaDefinicjaGramatyka, w której słowo ma więcej niż Gramatyka, w której słowo ma więcej niż jedno drzewo wyprowadzenia nazywamy jedno drzewo wyprowadzenia nazywamy gramatyką niejednoznacznągramatyką niejednoznaczną..
DefinicjaDefinicjaDwie gramatyki generujące ten sam język Dwie gramatyki generujące ten sam język nazywamy nazywamy gramatykami równoważnymigramatykami równoważnymi..
4444
PrzykładPrzykład
Zauważmy, iż dla gramatyki G, Zauważmy, iż dla gramatyki G, rozważanej w poprzednim przykładnie ze rozważanej w poprzednim przykładnie ze zbiorem produkcjizbiorem produkcji
P={S -> S + S; S -> S * S;P={S -> S + S; S -> S * S; S -> ( S );S -> ( S ); S -> a}S -> a}Możemy stworzyć gramatykę równoważną, Możemy stworzyć gramatykę równoważną,
która nie będzie już niejednoznaczna:która nie będzie już niejednoznaczna: P={ S -> S + T; S -> T; T -> T * U;P={ S -> S + T; S -> T; T -> T * U;T -> U;T -> U;
U -> ( S ); U -> a }U -> ( S ); U -> a }
4545
PrzykładPrzykładSS=>S*T=>S*T =>T*T=>T*T =>a*T+U=>a*T+U
=>a*a+U=>a*a+U SS
SS
TT
**
UU
aaaa
=>U*T=>U*T =>a*T=>a*T =>a*U+U=>a*U+U=>a*a+a=>a*a+a
TT
TT ++ UU
UU aa
4646
KONIECKONIEC
KONIEC WYKŁADU KONIEC WYKŁADU CZWARTEGOCZWARTEGO