Download - ANALIZA METODĄ ZSTEPUJĄCĄ
![Page 1: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/1.jpg)
ANALIZA METODĄ ANALIZA METODĄ ZSTEPUJĄCĄZSTEPUJĄCĄ
![Page 2: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/2.jpg)
ANALIZA ZSTĘPUJĄCAANALIZA ZSTĘPUJĄCA
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;22
![Page 3: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/3.jpg)
ANALIZA ZSTĘPUJĄCAANALIZA ZSTĘPUJĄCAAnaliza metoda zstępującąAnaliza metoda zstępującą polega na polega na poszukiwaniach mających na celu, poszukiwaniach mających na celu, znalezienie znalezienie lewostronnegolewostronnego wyprowadzenia wyprowadzenia dla zdania będącego ciągiem wejściowym;dla zdania będącego ciągiem wejściowym;
W metodzie tej przetwarzanie W metodzie tej przetwarzanie rozpoczynamy od symbolu startowego a rozpoczynamy od symbolu startowego a następnie stosujemy wyprowadzenie tak następnie stosujemy wyprowadzenie tak długo, aż otrzymamy zdanie wejściowe. długo, aż otrzymamy zdanie wejściowe. Możliwe jest oczywiście, że zdania nie da Możliwe jest oczywiście, że zdania nie da się wygenerować. Wówczas otrzymamy się wygenerować. Wówczas otrzymamy taką informacje; taką informacje; 33
![Page 4: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/4.jpg)
ANALIZA ZSTĘPUJĄCAANALIZA ZSTĘPUJĄCA
Sprawdźmy, czy zdanie z poprzedniego Sprawdźmy, czy zdanie z poprzedniego wykładu „Szybki pies przeskoczył płot” wykładu „Szybki pies przeskoczył płot” należy do języka generowanego przez tę należy do języka generowanego przez tę gramatykę.gramatykę.
Rozpoczniemy od korzenia:Rozpoczniemy od korzenia:
zdaniezdanie
44
![Page 5: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/5.jpg)
GRAMATYKA GRAMATYKA BEZKONTEKSTOWABEZKONTEKSTOWAgramatyka – 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
55
![Page 6: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/6.jpg)
ANALIZA ZSTEPUJĄCAANALIZA ZSTEPUJĄCA
zdanie
podmiot orzeczenie
przymiotnik rzeczownik czasownik dopełnienie
rzeczownik
Szybki pies przeskoczył płot
66
![Page 7: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/7.jpg)
ANALIZA ZSTĘPUJĄCAANALIZA ZSTĘPUJĄCA
W następnym przykładzie dana jest W następnym przykładzie dana jest gramatyka z produkcjami: S->(S), S->W, gramatyka z produkcjami: S->(S), S->W, gdzie W jest wyrażeniem. Czy zdanie gdzie W jest wyrażeniem. Czy zdanie (((W))) należy do języka generowanego (((W))) należy do języka generowanego przez tę gramatykę;przez tę gramatykę;
SS =>(S)=>(S) => ((S))=> ((S)) =>(((S)))=>(((S))) =>((( W )))=>((( W )))
77
![Page 8: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/8.jpg)
ANALIZA ZSTĘPUJĄCAANALIZA ZSTĘPUJĄCA
Rozważmy jeszcze jeden przykład. Niech Rozważmy jeszcze jeden przykład. Niech będzie dana gramatyka dana przez będzie dana gramatyka dana przez produkcje: produkcje:
SS -> a -> aAAd;d; SS -> a -> aBB;; AA -> b; -> b; AA -> c; -> c; BB -> ddc; -> ddc; BB -> ccd; -> ccd;
88
![Page 9: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/9.jpg)
ANALIZA ZSTĘPUJĄCAANALIZA ZSTĘPUJĄCA
Sprawdźmy, czy do języka generowanego, Sprawdźmy, czy do języka generowanego, przez tę gramatykę należy zdanie przez tę gramatykę należy zdanie =accd=accd??
S->aAd
S->aB
A->b
A->c
B->dcc
B->ccd
SS
aa AA dd
bb
99
![Page 10: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/10.jpg)
ANALIZA ZSTĘPUJĄCAANALIZA ZSTĘPUJĄCA
Sprawdźmy, czy do języka generowanego, Sprawdźmy, czy do języka generowanego, przez tę gramatykę należy zdanie przez tę gramatykę należy zdanie =accd=accd??
S->aAd
S->aB
A->b
A->c
B->ddc
B->ccd
SS
aa AA dd
cc
1010
![Page 11: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/11.jpg)
ANALIZA ZSTĘPUJĄCAANALIZA ZSTĘPUJĄCA
Sprawdźmy, czy do języka generowanego, Sprawdźmy, czy do języka generowanego, przez tę gramatykę należy zdanie przez tę gramatykę należy zdanie =accd=accd??
S->aAd
S->aB
A->b
A->c
B->ddc
B->ccd
SS
aa BB
1111
dd dd cc
![Page 12: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/12.jpg)
ANALIZA ZSTĘPUJĄCAANALIZA ZSTĘPUJĄCA
Sprawdźmy, czy do języka generowanego, Sprawdźmy, czy do języka generowanego, przez tę gramatykę należy zdanie przez tę gramatykę należy zdanie =accd=accd??
S->aAd
S->aB
A->b
A->c
B->ddc
B->ccd
SS
aa BB
1212
cc cc dd
![Page 13: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/13.jpg)
ANALIZA ZSTĘPUJĄCAANALIZA ZSTĘPUJĄCA
Sprawdźmy, czy do języka generowanego, Sprawdźmy, czy do języka generowanego, przez tę gramatykę należy zdanie przez tę gramatykę należy zdanie =accd=accd??
S->aAd
S->aB
A->b
A->c
B->ddc
B->ccd
SS
aa BB
1313
cc cc dd
![Page 14: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/14.jpg)
GRAMATYKI LL(1)GRAMATYKI LL(1)
Gramatykę bezkontekstową, która nie Gramatykę bezkontekstową, która nie zawiera pustych produkcji (S->zawiera pustych produkcji (S->) oraz ) oraz prawe strony dowolnego nieterminala A prawe strony dowolnego nieterminala A rozpoczynają się od różnych symboli rozpoczynają się od różnych symboli terminalnych nazywamy terminalnych nazywamy prostą gramatyką prostą gramatyką LL(1);LL(1);
Prosta gramatyka LL(1)Prosta gramatyka LL(1) jest klasą jest klasą gramatyk, które mogą być automatycznie gramatyk, które mogą być automatycznie przetwarzane poprzez analizatory przetwarzane poprzez analizatory działające na bazie metody zstępującej;działające na bazie metody zstępującej;
1414
![Page 15: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/15.jpg)
METODA ZEJŚĆ METODA ZEJŚĆ REKURENCYJNYCHREKURENCYJNYCH
Implementacja metody zstępującej jest metoda Implementacja metody zstępującej jest metoda zejść rekurencyjnych. Opiera się ona na:zejść rekurencyjnych. Opiera się ona na:Dla każdego nieterminala musi być stworzona Dla każdego nieterminala musi być stworzona osobna funkcja;osobna funkcja;Symbol znajdujący się na wejściu jest podstawą Symbol znajdujący się na wejściu jest podstawą decyzji o wyborze produkcji;decyzji o wyborze produkcji;Dla nieterminala następuje wywołanie funkcji Dla nieterminala następuje wywołanie funkcji związanej z tym nieterminalem;związanej z tym nieterminalem;Dla terminala następuje sprawdzenie jego Dla terminala następuje sprawdzenie jego zgodności z symbolami, których funkcja zgodności z symbolami, których funkcja oczekuje na wejściu; oczekuje na wejściu; ......
1515
![Page 16: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/16.jpg)
PrzykładPrzykład
Prześledźmy jeszcze jeden przykład. Prześledźmy jeszcze jeden przykład. Niech gramatyka będzie zdefiniowana za Niech gramatyka będzie zdefiniowana za pomocą produkcji: A->Ba, B->bB i B->c;pomocą produkcji: A->Ba, B->bB i B->c;
W tym przypadku produkcja rozpoczyna W tym przypadku produkcja rozpoczyna się od nieterminala;się od nieterminala;
W przypadkach takich gramatyk można W przypadkach takich gramatyk można sobie poradzić wykorzystując zbiór sobie poradzić wykorzystując zbiór FIRST;FIRST;
1616
![Page 17: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/17.jpg)
ZBIÓR FIRSTZBIÓR FIRST
Zbiór FIRST(X) tworzymy w oparciu o Zbiór FIRST(X) tworzymy w oparciu o poniższe reguły:poniższe reguły:
Jeśli XJeśli XT, to FIRST(X)={X};T, to FIRST(X)={X};Jeśli X->Jeśli X->, to , to FIRST(X);FIRST(X);
Jeśli XJeśli XN i X->YN i X->Y11YY22...Y...Ynn, to w, to wFIRST(YFIRST(Yii), ), jeśli istnieje ijeśli istnieje i{1,2,...n} takie, że {1,2,...n} takie, że wwFIRST(YFIRST(Yii) i ) i FIRST(YFIRST(Ykk) dla wszystkich ) dla wszystkich kk{1,2,...i-1};{1,2,...i-1};Jeśli Jeśli FIRST(YFIRST(Yii) dla wszystkich i, to ) dla wszystkich i, to
FIRST(X);FIRST(X); 1717
![Page 18: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/18.jpg)
PrzykładPrzykład
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
1818
![Page 19: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/19.jpg)
PrzykładPrzykład
FIRST(przeskoczył)={przeskoczył};FIRST(przeskoczył)={przeskoczył};
FIRST(pies)={pies};FIRST(pies)={pies};
FIRST(zdanie)FIRST(zdanie) =FIRST(podmiot orzeczenie)=FIRST(podmiot orzeczenie)
=FIRST(przymiotnik rzeczownik orzeczenie)=FIRST(przymiotnik rzeczownik orzeczenie)
=FIRST(szybki rzeczownik orzeczenie)=FIRST(szybki rzeczownik orzeczenie)
={szybki}={szybki}
1919
![Page 20: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/20.jpg)
PrzykładPrzykład
Rozważmy gramatykę zadaną Rozważmy gramatykę zadaną produkcjami: produkcjami: S->S+P S->S+P,, S->P S->P,, P->P*Q P->P*Q,,
P->QP->Q,, Q->(S) Q->(S),, Q->id Q->id;;
FIRST(P)FIRST(P)=FIRST(P*Q)=FIRST(P*Q)FITRST(Q)FITRST(Q)
=FIRST((S))=FIRST((S))FIRST(id)FIRST(id) ={ ( , id }={ ( , id }
2020
![Page 21: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/21.jpg)
METODA ZEJŚĆ METODA ZEJŚĆ REKURENCYJNYCHREKURENCYJNYCH
Zasady w oparciu o które pisze się Zasady w oparciu o które pisze się analizator wykorzystujący metodę analizator wykorzystujący metodę rekurencyjnych zejść:rekurencyjnych zejść:
Dla każdego nieterminala tworzymy Dla każdego nieterminala tworzymy oddzielną funkcję;oddzielną funkcję;
O wyborze produkcji analizator decyduje w O wyborze produkcji analizator decyduje w oparciu o symbol znajdujący się na oparciu o symbol znajdujący się na wejściu. Produkcja jest wybrana, jeśli wejściu. Produkcja jest wybrana, jeśli symbol na wejściu należy do zbioru FIRST symbol na wejściu należy do zbioru FIRST od prawej strony tej produkcji;od prawej strony tej produkcji; 2121
![Page 22: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/22.jpg)
METODA ZEJŚĆ METODA ZEJŚĆ REKURENCYJNYCHREKURENCYJNYCH
Zasady w oparciu o które pisze się Zasady w oparciu o które pisze się analizator wykorzystujący metodę analizator wykorzystujący metodę rekurencyjnych zejść:rekurencyjnych zejść:
Dla każdego nieterminala wywoływana Dla każdego nieterminala wywoływana jest funkcja związana z tym nieterminalem;jest funkcja związana z tym nieterminalem;
Dla każdego treminala, sprawdzana jest Dla każdego treminala, sprawdzana jest jego zgodność z symbolami, których jego zgodność z symbolami, których funkcja oczekuje na wejściu;funkcja oczekuje na wejściu;
2222
![Page 23: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/23.jpg)
PrzykładPrzykładWróćmy do naszego wcześniejszego Wróćmy do naszego wcześniejszego przykładu, gdzie gramatyka była przykładu, gdzie gramatyka była zdefiniowana za pomocą produkcji: A->Ba, zdefiniowana za pomocą produkcji: A->Ba, B->bB i B->c;B->bB i B->c;
Implementacja funkcji odpowiadającej Implementacja funkcji odpowiadającej nieterminalowi B jest prosta;nieterminalowi B jest prosta;
Problem pojawia się przy implementacji Problem pojawia się przy implementacji funkcji odpowiadającej nieterminalowi A. Z funkcji odpowiadającej nieterminalowi A. Z pomocą przychodzi zdefiniowany pomocą przychodzi zdefiniowany wcześniej zbiór FIRSTwcześniej zbiór FIRST;...;... 2323
![Page 24: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/24.jpg)
PrzykładPrzykładZmieńmy nieco gramatykę, wprowadzając Zmieńmy nieco gramatykę, wprowadzając do niej pusta produkcję. Czyli rozważmy do niej pusta produkcję. Czyli rozważmy gramatykę o produkcjach: gramatykę o produkcjach:
A-> B a, B->b B, B->A-> B a, B->b B, B->;;
Zmiana ta spowoduje zmianę zbioru Zmiana ta spowoduje zmianę zbioru FIRST (B a) (poprezdnio FIRST(B a)={b,FIRST (B a) (poprezdnio FIRST(B a)={b,cc} } teraz FIRST(B a)={b,teraz FIRST(B a)={b,aa}), a to z kolei }), a to z kolei wymusi niewielka modyfikację koduwymusi niewielka modyfikację kodu;...;...
2424
![Page 25: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/25.jpg)
LEWOSTRONNA LEWOSTRONNA REKURENCJAREKURENCJA
Rozważmy gramatykę zadaną Rozważmy gramatykę zadaną produkcjami:produkcjami:
A-> a B a, B->A-> a B a, B->, B-> B b;, B-> B b;
voidvoid B(){ B(){ifif (biezacy == ‘b’){ (biezacy == ‘b’){B();B();Wczytaj(‘b’);}Wczytaj(‘b’);}elseelse{{/*epsilon*}/*epsilon*}}}
2525
FIRST(B b)={FIRST(B b)={,b},b}
![Page 26: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/26.jpg)
ELIMINACJA ELIMINACJA LEWOSTRONNEJ LEWOSTRONNEJ
REKURENCJIREKURENCJI
Metoda eliminacji lewostronnej rekurencji;Metoda eliminacji lewostronnej rekurencji;
Załóżmy że dane są produkcje:Załóżmy że dane są produkcje:
A->AA->A, A->, A->
2626
A->AA->AA->A->
A -> A -> A’ A’A’ -> A’ -> A’ A’
A’-> A’->
![Page 27: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/27.jpg)
PrzykładPrzykładW naszej gramatyce były produkcje: W naszej gramatyce były produkcje:
A->a B a, B->A->a B a, B->, B->B b;, B->B b;
Po eliminacji lewostronnej rekurencji:Po eliminacji lewostronnej rekurencji:
2727
A-> a B aA-> a B aB-> B->
A -> a B aA -> a B aB -> B’B -> B’
B’-> B’-> B-> B bB-> B b B’ -> b B’B’ -> b B’
A-> a B aA-> a B aB-> b BB-> b B
B-> B->
![Page 28: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/28.jpg)
LEWOSTRONNA LEWOSTRONNA REKURENCJAREKURENCJA
Zatem implementacja funkcji nieterminala Zatem implementacja funkcji nieterminala B może wyglądać teraz: A-> a B a, B-> b B może wyglądać teraz: A-> a B a, B-> b B, B->B, B->,;,;
voidvoid B(){ B(){ifif (biezacy == ‘b’){ (biezacy == ‘b’){Wczytaj(‘b’);}Wczytaj(‘b’);}B();B();elseelse{{/*epsilon*}/*epsilon*}}}
2828
A-> a B aA-> a B aB-> b BB-> b B
B-> B->
![Page 29: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/29.jpg)
LEWOSTRONNA FAKTORYZACJALEWOSTRONNA FAKTORYZACJA
Metoda lewostronnej faktoryzacji;Metoda lewostronnej faktoryzacji;
Załóżmy że dane są produkcje:Załóżmy że dane są produkcje:
A->A-> 11, A-> , A-> 22
2929
A->A-> 11
A-> A-> 22
A -> A -> A’ A’
A’ -> A’ -> 11
A’-> A’-> 22
![Page 30: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/30.jpg)
LEWOSTRONNA LEWOSTRONNA FAKTORYZACJAFAKTORYZACJA
Rozważmy gramatykę zadaną produkcjami:Rozważmy gramatykę zadaną produkcjami:A-> a B a, B->b, B-> b B;A-> a B a, B->b, B-> b B;
voidvoid B( ){ B( ){ifif (biezacy == ‘b’)(biezacy == ‘b’){{Wczytaj(‘b’);} Wczytaj(‘b’);} else ifelse if (biezacy == ‘b’)(biezacy == ‘b’){{Wczytaj(‘b’);Wczytaj(‘b’);B ( );B ( );}}elseelse{{Sygnalizuj_blad();}Sygnalizuj_blad();}}}
3030
![Page 31: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/31.jpg)
PrzykładPrzykładW naszej gramatyce były produkcje: W naszej gramatyce były produkcje:
A->a B a, B->b, B->B b;A->a B a, B->b, B->B b;
Po eliminacji lewostronnej faktoryzacji:Po eliminacji lewostronnej faktoryzacji:
3131
A-> a B aA-> a B aB-> bB-> b
A -> a B aA -> a B aB -> b B1B -> b B1
B1-> B1-> B-> b BB-> b BB1 -> BB1 -> B
![Page 32: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/32.jpg)
LEWOSTRONNA FAKTORYZACJALEWOSTRONNA FAKTORYZACJA
Zatem po lewostronnej faktoryzacji Zatem po lewostronnej faktoryzacji implementacja funkcji nieterminala B może implementacja funkcji nieterminala B może wyglądać teraz:wyglądać teraz: A-> a B a, B-> b B1, B1->A-> a B a, B-> b B1, B1->, B1->B, B1->B;;
voidvoid B( ){ B( ){ifif (biezacy == ‘b’){ (biezacy == ‘b’){Wczytaj(‘b’);}Wczytaj(‘b’);}B1( );B1( );elseelse{{Sygnalizuj_blad();}Sygnalizuj_blad();}}}
3232
void B1( ){void B1( ){if (biezacy == ‘b’){if (biezacy == ‘b’){Wczytaj(‘b’);}Wczytaj(‘b’);}B( );B( );else{else{/*epsilon*/}/*epsilon*/}}}
![Page 33: ANALIZA METODĄ ZSTEPUJĄCĄ](https://reader035.vdocuments.net/reader035/viewer/2022070406/568141cf550346895dadaad0/html5/thumbnails/33.jpg)
KONIECKONIEC
KONIEC WYKŁADU KONIEC WYKŁADU CZWARTEGOCZWARTEGO