Upload
walter
View
78
Download
0
Embed Size (px)
DESCRIPTION
ANALIZA METODĄ WSTĘPUJĄCĄ. ANALIZA WSTĘPUJĄCA. Dla danej gramatyki G oraz S=>* , to wówczas: Jeśli zawiera tylko terminale, to nazywamy zdaniem ; Jeśli zawiera terminale oraz nieterminale, lub same nieterminale, to nazywamy formą zdaniową ; Wniosek - PowerPoint PPT Presentation
Citation preview
ANALIZA METODĄ ANALIZA METODĄ WSTĘPUJĄCĄWSTĘPUJĄCĄ
ANALIZA WSTĘPUJĄCAANALIZA WSTĘ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 forma zdaniowa, która nie Zdanie jest forma zdaniowa, która nie
zawiera nieterminali;zawiera nieterminali;
ANALIZA WSTĘPUJĄCAANALIZA WSTĘPUJĄCAW analizie zstępującej przetwarzanie W analizie zstępującej 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; W W analizie wstępującejanalizie wstępującej mamy odwrotny mamy odwrotny schemat działania. Zaczynamy tu pracę od schemat działania. Zaczynamy tu pracę od analizowanego zdania i poprzez analizowanego zdania i poprzez konsekwentne stosowanie redukcji konsekwentne stosowanie redukcji próbujemy dojść do symbolu startowego próbujemy dojść do symbolu startowego gramatyki;gramatyki;
33
ANALIZA ZSTĘPUJĄCAANALIZA ZSTĘPUJĄCA
Sprawdźmy, w jaki sposób działa metoda Sprawdźmy, w jaki sposób działa metoda wstępująca na przykładzie z wstępująca na przykładzie z wcześniejszych wykładów. Dane jest wcześniejszych wykładów. Dane jest zdanie zdanie
44
=Szybki pies przeskoczył płot=Szybki pies przeskoczył płot
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
55
ANALIZA ZSTEPUJĄCAANALIZA ZSTEPUJĄCA
zdanie
podmiot orzeczenie
przymiotnik rzeczownik czasownik dopełnienie
rzeczownik
Szybki pies przeskoczył płot
66
ANALIZA WSTEPUJĄCAANALIZA WSTEPUJĄCA
zdanie
podmiot orzeczenie
przymiotnik rzeczownik czasownik dopełnienie
rzeczownik
Szybki pies przeskoczył płot
77
PrzykładPrzykład
Rozważmy gramatykę o następujących Rozważmy gramatykę o następujących produkcjach:produkcjach:
S-> aABe, A->Abc | b, B->d;S-> aABe, A->Abc | b, B->d;Zastanówmy się nad zdaniem Zastanówmy się nad zdaniem =abbcde;=abbcde;
abbcdeabbcdeaAbcdeaAbcde
aAdeaAde
aABeaABe
SS
88S=>aABe=>aAde=>aAbcde=>abbcdeS=>aABe=>aAde=>aAbcde=>abbcde
PRAWE WYPROWADZENIEPRAWE WYPROWADZENIE
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;
99
ANALIZA WSTĘPUJĄCAANALIZA WSTĘPUJĄCA
Uchwyt ciąguUchwyt ciągu – to podciąg, który pasuje do – to podciąg, który pasuje do prawej strony produkcji i którego redukcja prawej strony produkcji i którego redukcja do nieterminala po lewej stronie produkcji do nieterminala po lewej stronie produkcji reprezentuje jeden krok wzdłuż reprezentuje jeden krok wzdłuż odwrotności prawostronnego odwrotności prawostronnego wyprowadzenia;wyprowadzenia;
1010
ANALIZA WSTĘPUJĄCAANALIZA WSTĘPUJĄCA
Formalnie Formalnie uchwyt prawostronnej formy uchwyt prawostronnej formy zdaniowej zdaniowej , to produkcja A-> , to produkcja A-> i pozycja i pozycja w w , na której znajduje się ciąg symboli , na której znajduje się ciąg symboli , , który w celu otrzymania poprzedniej który w celu otrzymania poprzedniej prawostronnej formy zdaniowej w prawostronnej formy zdaniowej w prawostronnym wyprowadzeniu prawostronnym wyprowadzeniu , należy , należy zastąpić przez A;zastąpić przez A;
1111
S=>S=>Aw=>Aw=>
A->A-> na pozycji po na pozycji po jest uchwytem jest uchwytem ww
ww
PrzykładPrzykładRozważmy gramatykę o następujących Rozważmy gramatykę o następujących produkcjach:produkcjach:
S-> aABe, A->Abc | b, B->d;S-> aABe, A->Abc | b, B->d;
jest prawostronną formą zdaniową,jest prawostronną formą zdaniową,której uchwytem jest A->bktórej uchwytem jest A->bna pozycji 2na pozycji 2
aAbcdeaAbcde
abbcdeabbcde
jest prawostronną forma zdaniowa, jest prawostronną forma zdaniowa, której uchwytem jest A->Abc której uchwytem jest A->Abc na pozycji 2na pozycji 2 1212
PRZYCINANIE UCHWYTÓWPRZYCINANIE UCHWYTÓW
Przycinanie uchwytów jest metodą dzięki Przycinanie uchwytów jest metodą dzięki której możemy uzyskać odwrotność której możemy uzyskać odwrotność prawostronnego wyprowadzenia;prawostronnego wyprowadzenia;
Załóżmy że mamy daną gramatykę i dane Załóżmy że mamy daną gramatykę i dane zdanie w, utworzone w tej gramatyce. zdanie w, utworzone w tej gramatyce. Zatem w=Zatem w=n n gdzie gdzie n n jest n-tą jest n-tą prawostronną formą zdaniowa, w pewnym prawostronną formą zdaniowa, w pewnym prawostronnym wyprowadzeniu;prawostronnym wyprowadzeniu;
S= S= 00 => => 11 => => 22 =>...=> =>...=> n-1n-1 => => nn =w =w 1313
PRZYCINANIE UCHWYTÓWPRZYCINANIE UCHWYTÓW
W celu odtworzenia tego wyprowadzenia od W celu odtworzenia tego wyprowadzenia od końca, wyszukujemy uchwyt końca, wyszukujemy uchwyt nn w w nn i i zastępujemy go lewą stroną produkcji A-> zastępujemy go lewą stroną produkcji A-> nn. W ten sposób otrzymujemy (n-1) –szą . W ten sposób otrzymujemy (n-1) –szą prawostronną formę zdaniową;prawostronną formę zdaniową;Wyszukujemy następnie uchwyt Wyszukujemy następnie uchwyt n-1n-1 w w n-1n-1 i i redukujemy ten uchwyt i otrzymujemy redukujemy ten uchwyt i otrzymujemy prawostronną formę prawostronną formę n-2n-2;;Jeśli po skończonej ilości powtórzeń takiej Jeśli po skończonej ilości powtórzeń takiej czynności otrzymamy prawostronną formę czynności otrzymamy prawostronną formę zdaniową składającą się z symbolu zdaniową składającą się z symbolu startowego S, to kończymy analizę; startowego S, to kończymy analizę; 1414
PrzykładPrzykład
Rozważmy przykład. Niech będzie dana Rozważmy przykład. Niech będzie dana gramatyka dana przez produkcje: gramatyka dana przez produkcje:
S -> (S);S -> (S); S -> *;S -> *;
Rozważamy zdanie Rozważamy zdanie =(((*)))=(((*)))
1515
PrzykładPrzykład
=(((*)))=(((*)))
** S-> *S-> *
<=(((S)))<=(((S)))
(S)(S) S->( S )S->( S )
(S)(S) S-> ( S )S-> ( S )
(S)(S) S-> ( S )S-> ( S )
<=((S))<=((S))<=(S)<=(S) <=<=SS
1616
PrzykładPrzykład
Rozważmy następująca gramatykę: E-Rozważmy następująca gramatykę: E->E+E, E->E*E, E->(E), E->w;>E+E, E->E*E, E->(E), E->w;
P. F. Z UCHWYT PRODUKCJAw+w*ww+w*w ww E->wE->wE+w*wE+w*w ww E->wE->wE+E*wE+E*w ww E->wE->wE+E*EE+E*E E*EE*E E->E*EE->E*E
E+EE+E E+EE+E E->E+EE->E+EEE 1717
IMPLEMANTACJA ANALIZY IMPLEMANTACJA ANALIZY REDUKCYJNEJREDUKCYJNEJ
Jeśli chcemy dokonywać analizy tekstów, Jeśli chcemy dokonywać analizy tekstów, za pomocą przycinania uchwytów, musimy za pomocą przycinania uchwytów, musimy pokonać dwa główne problemy:pokonać dwa główne problemy:
1818
Pierwszym problemem jest znalezienie Pierwszym problemem jest znalezienie podciągu w prawostronnej formie podciągu w prawostronnej formie zdaniowej, który trzeba zredukować zdaniowej, który trzeba zredukować (uchwytu);(uchwytu);
Gdy jest więcej niż jedna produkcja, w Gdy jest więcej niż jedna produkcja, w której po prawej stronie występuje nasz której po prawej stronie występuje nasz podciąg (uchwyt), należy wybrać jedną z podciąg (uchwyt), należy wybrać jedną z nich, odpowiednią;nich, odpowiednią;
IMPLEMENTACJA ANALIZY IMPLEMENTACJA ANALIZY REDUKCYJNEJ REDUKCYJNEJ
Kolejnym istotnym pytaniem jest pytanie o Kolejnym istotnym pytaniem jest pytanie o rodzaj struktur danych, które będzie rodzaj struktur danych, które będzie wygodnie używać, przy implementacji wygodnie używać, przy implementacji analizatora;analizatora;Wygodna metodą jest użycie Wygodna metodą jest użycie stosu stosu do do pamiętania symboli gramatyki, orazpamiętania symboli gramatyki, oraz bufora bufora wejściowego wejściowego do pamiętania tekstu w, do pamiętania tekstu w, przeznaczonego do analizy;przeznaczonego do analizy;
1919
stosstos wejściewejście$$ w$w$
OPIS STOSUOPIS STOSU
Na starcie na wejściu jest napis w, a stos jest Na starcie na wejściu jest napis w, a stos jest pusty;pusty;Analizator przesuwa symbole z wejścia na stos, Analizator przesuwa symbole z wejścia na stos, aż na wierzchołku znajdzie się uchwyt aż na wierzchołku znajdzie się uchwyt ;; analizator redukuje do lewej strony analizator redukuje do lewej strony odpowiedniej produkcji;odpowiedniej produkcji;Powtarza ten proceder, aż do wystąpienia błędu, Powtarza ten proceder, aż do wystąpienia błędu, lub sytuacji gdy na stosie będzie symbol lub sytuacji gdy na stosie będzie symbol startowy;startowy;Gdy na stosie będzie tylko symbol startowy Gdy na stosie będzie tylko symbol startowy analizator kończy pracę;analizator kończy pracę; 2020
OperacjeOperacje
Mamy cztery operacje analizatora:Mamy cztery operacje analizatora: PrzesunieciePrzesuniecie – powoduje wstawienie – powoduje wstawienie kolejnego symbolu z wejścia na kolejnego symbolu z wejścia na wierzchołek stosu;wierzchołek stosu;RedukcjaRedukcja – analizator wie, że prawy – analizator wie, że prawy koniec uchwytu jest na wierzchołku stosu, koniec uchwytu jest na wierzchołku stosu, szuka na stosie lewy koniec uchwytu, i szuka na stosie lewy koniec uchwytu, i zastępuje uchwyt odpowiednim zastępuje uchwyt odpowiednim nieterminalem (sam decyduje, którym);nieterminalem (sam decyduje, którym);
2121
OperacjeOperacje
Pozostałe operacje analizatora:Pozostałe operacje analizatora:AkceptowanieAkceptowanie – pomyślne zakończenie – pomyślne zakończenie analizy;analizy;
BłądBłąd – oznacza, że wystąpił błąd – oznacza, że wystąpił błąd składniowy i analizator wywołuje składniowy i analizator wywołuje procedurę obsługi błędu;procedurę obsługi błędu;
2222
PrzykładPrzykład
$$((((((**
(((*)))$(((*)))$((*)))$((*)))$
(*)))$(*)))$*)))$*)))$
)))$)))$S->*S->*
2323
PrzykładPrzykład
$$((((((SS ))$))$S->( S )S->( S )
)) )))$)))$
2424
PrzykładPrzykład
$$((((SS
))$))$
)$)$)) S-> ( S )S-> ( S )
2525
PrzykładPrzykład
$$((SS
)$)$
$$S-> ( S )S-> ( S )
))
2626
PrzykładPrzykład
$$SS
$$
sukces analizy-akceptacjasukces analizy-akceptacja
2727
PrzykładPrzykład
Wróćmy do naszego przykładu nr 2 z Wróćmy do naszego przykładu nr 2 z produkcjami: E->E+E, E->E*E, E_>(E), E-produkcjami: E->E+E, E->E*E, E_>(E), E->(w)>(w)
Ponownie rozważamy zdanie Ponownie rozważamy zdanie =w+w*w=w+w*w
Prześledźmy sekwencje operacji Prześledźmy sekwencje operacji wykonywanych przez analizator:wykonywanych przez analizator:
2828
PrzykładPrzykład
STOS WEJŚCIE OPERACJA$$ w+w*ww+w*w przesunięcieprzesunięcie
$w$w +w*w+w*w redukcja E->wredukcja E->w
$E$E +w*w+w*w przesunięcieprzesunięcie
$E+$E+ w*w w*w przesunięcieprzesunięcie
$E+w$E+w *w *w redukcja E->wredukcja E->w
$E+E$E+E *w *w przesunięcieprzesunięcie
2929
PrzykładPrzykład
STOS WEJŚCIE OPERACJA
$E+E*$E+E* ww przesunięcieprzesunięcie$$$E+E*w$E+E*w redukcja E->wredukcja E->w
$E+E*E$E+E*E $$ redukcja E->E*Eredukcja E->E*E$E+E$E+E $$ redukcja E->E+Eredukcja E->E+E
$E$E $$ Akceptacja wejściaAkceptacja wejścia
PROBLEMYPROBLEMY
Problemy przy przycinaniu uchwytów:Problemy przy przycinaniu uchwytów:Znalezienie odpowiedniego uchwytu (w Znalezienie odpowiedniego uchwytu (w analizatorach redukujących zawsze jest na analizatorach redukujących zawsze jest na szczycie stosu); szczycie stosu);Wybranie odpowiedniej produkcji, jeśli Wybranie odpowiedniej produkcji, jeśli może być wykorzystana więcej niż jedna może być wykorzystana więcej niż jedna (konstrukcja tablicy LR);(konstrukcja tablicy LR);
3131
ANALIZATOT LRANALIZATOT LRWydajna metodą analizy wstępującej jest Wydajna metodą analizy wstępującej jest analiza LR(analiza LR(kk), gdzie „L” oznacza ), gdzie „L” oznacza przeglądanie wejścia od lewej do prawej, przeglądanie wejścia od lewej do prawej, „R” (rightmost) oznacza budowę „R” (rightmost) oznacza budowę prawostronnego wyprowadzenia od końca, prawostronnego wyprowadzenia od końca, a k oznacza liczbę symboli podglądanych a k oznacza liczbę symboli podglądanych podczas podejmowania decyzji w trakcie podczas podejmowania decyzji w trakcie analizy;analizy;
Gdy pominiemy (k), przyjmujemy, że k=1;Gdy pominiemy (k), przyjmujemy, że k=1;3232
ANALIZATOT LRANALIZATOT LRZalety analizatorów LR:Zalety analizatorów LR:
Można zbudować analizatory LR do Można zbudować analizatory LR do prawie wszystkich konstrukcji języków prawie wszystkich konstrukcji języków programowania, dla których można programowania, dla których można znaleźć gramatykę bezkontekstową;znaleźć gramatykę bezkontekstową;Metoda LR jest najogólniejszą nie Metoda LR jest najogólniejszą nie wracającą metodą analizy redukującej. wracającą metodą analizy redukującej. Analizatory działające tą metodą można Analizatory działające tą metodą można zaimplementować tak wydajnie, jak zaimplementować tak wydajnie, jak działające innymi metodami redukcyjnymi;działające innymi metodami redukcyjnymi;
3333
ANALIZATOT LRANALIZATOT LRZalety analizatorów LR:Zalety analizatorów LR:
Klasa gramatyk które można analizować, Klasa gramatyk które można analizować, używając metody LR jest właściwym używając metody LR jest właściwym nadzbiorem klasy gramatyk, które można nadzbiorem klasy gramatyk, które można analizować analizatorami przewidującymi;analizować analizatorami przewidującymi;Analizator LR może wykrywać błędy tak Analizator LR może wykrywać błędy tak wcześnie, jak jest to możliwe podczas wcześnie, jak jest to możliwe podczas przeglądania wejścia, od lewej do prawej przeglądania wejścia, od lewej do prawej strony;strony;
3434
ANALIZATOR LRANALIZATOR LR
3535
Program analizatoraProgram analizatora LRLR
aa11 aaii aann...... ...... $$
SSmm
SSm-1m-1
SS00
......
XXmm
XXm-1m-1
akcjaakcja przejścieprzejście
wyjściewyjście
wejściewejście
stosstos
ANALIZATOR LRANALIZATOR LRDziałanie analizatora LR:Działanie analizatora LR:
Program sterujący jest taki sam dla Program sterujący jest taki sam dla wszystkich analizatorów LR, różne są wszystkich analizatorów LR, różne są jedynie tablice analizatora;jedynie tablice analizatora;
Program analizatora wczytuje pojedyncze Program analizatora wczytuje pojedyncze symbole z bufora wejściowego;symbole z bufora wejściowego;
3636
ANALIZATOR LRANALIZATOR LRUżywa on stosu do zapamiętywania ciągu Używa on stosu do zapamiętywania ciągu postaci postaci ss00 X X11 s s11 X X22 s s22 ...X ...Xmm na wierzchołku, na wierzchołku, gdzie każde Xgdzie każde Xii jest symbolem z gramatyki jest symbolem z gramatyki a sa sii jest symbolem nazywanym stanem; jest symbolem nazywanym stanem;
Każdy symbol stanu podsumowuje Każdy symbol stanu podsumowuje informacje zawarte na stosie pod nim, a informacje zawarte na stosie pod nim, a kombinacja symbolu stanu i aktualnego kombinacja symbolu stanu i aktualnego symbolu wejściowego jest używana do symbolu wejściowego jest używana do indeksowania tablicy analizatora oraz do indeksowania tablicy analizatora oraz do podejmowania decyzji o przesunięciu lub podejmowania decyzji o przesunięciu lub redukcji;redukcji; 3737
TABLICA ANALIZATORA LRTABLICA ANALIZATORA LR
Tablice analizatora zawierają wytyczne dla Tablice analizatora zawierają wytyczne dla programu sterującego. Wytyczne te programu sterującego. Wytyczne te dotyczą między innymi tego w jakim stanie dotyczą między innymi tego w jakim stanie i pod wpływem jakich symboli ma wystąpić i pod wpływem jakich symboli ma wystąpić akcja (action lub przejście (goto);akcja (action lub przejście (goto);Tablice analizatora można tworzyć na Tablice analizatora można tworzyć na różne sposoby;różne sposoby;Metody tworzenia tablic decydują o sile Metody tworzenia tablic decydują o sile analizatora (tzn. o liczbę przetwarzanych analizatora (tzn. o liczbę przetwarzanych gramatyk);gramatyk);
3838
TABLICA ANALIZATORA LRTABLICA ANALIZATORA LR
Metody konstrukcji tablicy analizatorów:Metody konstrukcji tablicy analizatorów:SLR (prosty LR)SLR (prosty LR) – najłatwiejsza w – najłatwiejsza w implementacji ale najsłabsza, dla implementacji ale najsłabsza, dla niektórych gramatyk dla których pozostałe niektórych gramatyk dla których pozostałe zadziałają ta może nie dać rezultatów;zadziałają ta może nie dać rezultatów;Podglądający LR (LALR)Podglądający LR (LALR) – średnia pod – średnia pod względem możliwości, jak i kosztów;względem możliwości, jak i kosztów;Metoda kanoniczna LRMetoda kanoniczna LR – – najskuteczniejsza, ale też najdroższa;najskuteczniejsza, ale też najdroższa;
3939
TABLICA ANALIZATORA LRTABLICA ANALIZATORA LR
Tablica analizatora składa się z dwóch Tablica analizatora składa się z dwóch części :części :
Funkcji wyznaczającej akcje, Funkcji wyznaczającej akcje, akcjaakcja;;
Funkcji wyznaczającej przejście, Funkcji wyznaczającej przejście, przejścieprzejście;;
Funkcja przejście bierze jako argument Funkcja przejście bierze jako argument stan i symbol z gramatyki, a zwraca stan;stan i symbol z gramatyki, a zwraca stan;
4040
ANALIZATOR LRANALIZATOR LR
Program analizatora LR sprawdza stan sProgram analizatora LR sprawdza stan smm, , stan leżący na wierzchołku stosu oraz stan leżący na wierzchołku stosu oraz aktualny symbol na wejściu aaktualny symbol na wejściu aii;;Odczytuje następnie wartość akcja[sOdczytuje następnie wartość akcja[smm,a,aii] w ] w tablicy analizatora dla stanu stablicy analizatora dla stanu smm i wejścia a i wejścia aii;;Wartość akcja[sWartość akcja[smm,a,aii] może być:] może być:
przesuń s, gdzie s jest stanem;przesuń s, gdzie s jest stanem;redukuj zgodnie z produkcja A->redukuj zgodnie z produkcja A->;;akceptuj;akceptuj;błąd; błąd; 4141
ANALIZATOR LRANALIZATOR LR
Konfiguracją analizatora LRKonfiguracją analizatora LR nazywamy nazywamy parę, której pierwszym elementem jest parę, której pierwszym elementem jest zawartość stosu, a drugim zawartość stosu, a drugim niewykorzystane wejście;niewykorzystane wejście;
(s(s00 X X11 s s11 X X22 s s22 ...X ...Xmm s smm , a , aii a ai+1i+1 ...a ...ann$)$)
Powyższa konfiguracja przedstawia formę Powyższa konfiguracja przedstawia formę zdaniowa: Xzdaniowa: X11 X X22 ...X ...Xmmaaii a ai+1i+1 ...a ...ann
4242
ANALIZATOR LRANALIZATOR LRKonfiguracje, które mogą wystąpić po Konfiguracje, które mogą wystąpić po każdym z czterech typów akcji:każdym z czterech typów akcji:
akcja[akcja[ssmm,a,aii]=przesuń s – analizator ]=przesuń s – analizator wykonuje przesunięcie przechodząc do wykonuje przesunięcie przechodząc do konfiguracji:konfiguracji:
(s(s00 X X11 s s11 X X22 s s22 ...X ...Xmm s smmaaiis, as, ai+1i+1 ...a ...ann$)$)akcja[akcja[ssmm,a,aii]=redukuj wg A->]=redukuj wg A-> - analizator - analizator
wykonuje redukcje przechodząc do wykonuje redukcje przechodząc do konfiguracji:konfiguracji:
(s(s00 X X11 s s11 X X22 s s22 ...X ...Xm-rm-r s sm-r m-r A s, aA s, ai+1i+1 ...a ...ann$),$),gdzie s=przejście[sgdzie s=przejście[sm-rm-r,A], a r jest długością ,A], a r jest długością ;;4343
akcja[sakcja[smm,a,aii]=redukuj wg A->]=redukuj wg A->
Analizator zdejmuje ze stosu 2r symboli (po Analizator zdejmuje ze stosu 2r symboli (po r symboli stanu i gramatyki), odkrywając r symboli stanu i gramatyki), odkrywając stan s. Następnie wstawia na stos A – stan s. Następnie wstawia na stos A – lewa stronę użytej produkcji i s – wartość lewa stronę użytej produkcji i s – wartość przejście[s, A]. Aktualny symbol wejściowy przejście[s, A]. Aktualny symbol wejściowy w wyniku redukcji nie jest zmieniany;w wyniku redukcji nie jest zmieniany;
akcja[akcja[ssmm,a,aii]=akceptuj]=akceptuj – analiza jest – analiza jest zakończona;zakończona;
akcja[akcja[ssmm,a,aii]=]= błąd błąd - analizator wykrył błąd i - analizator wykrył błąd i wywołuje procedurę obsługi błędu;wywołuje procedurę obsługi błędu;
4444
ANALIZA LRANALIZA LR
Podsumujmy krótko algorytm analizy LR:Podsumujmy krótko algorytm analizy LR: Wejście: ciąg wejściowy w i tablica Wejście: ciąg wejściowy w i tablica
analizatora LR z funkcjami akcja i analizatora LR z funkcjami akcja i przejście dla gramatyki G;przejście dla gramatyki G;
Wyjście jeśli w jest w L(G) –występuje Wyjście jeśli w jest w L(G) –występuje wyprowadzenie dla w, w przeciwnym wyprowadzenie dla w, w przeciwnym przypadku – informacja o błędzie;przypadku – informacja o błędzie;
Metoda: początkowo na stosie analizatora Metoda: początkowo na stosie analizatora jest sjest s00, czyli stan początkowy, a na wejściu , czyli stan początkowy, a na wejściu jest w$. Dalsze kroki analizatora jest w$. Dalsze kroki analizatora zaobserwujmy na przykładzie;zaobserwujmy na przykładzie;
4545
PrzykładPrzykład
Rozważmy następującą gramatykę Rozważmy następującą gramatykę bezkontekstową, daną zbiorem produkcji:bezkontekstową, daną zbiorem produkcji:
E -> E+T;E -> E+T;E->T;E->T;T->T*F;T->T*F;T->F;T->F;F->(E);F->(E);F->id;F->id;
4646
PrzykładPrzykład
W naszym algorytmie wprowadźmy W naszym algorytmie wprowadźmy następujące oznaczenia:następujące oznaczenia:ssii oznacza przesuniecie i wstawiany na oznacza przesuniecie i wstawiany na stos stan i;stos stan i;rrjj oznacza redukcję według produkcji o oznacza redukcję według produkcji o numerze j;numerze j;akcakc oznacza akceptuj; oznacza akceptuj;Puste miejsce oznacza błąd;Puste miejsce oznacza błąd;......
4747
PrzykładPrzykład
STAN
akcja przejścieId + * ( ) $ E T F
0 s5 s4 1 2 31 s6 akc2 r2 s7 r2 R23 r4 r4 r4 r44 s5 s4 8 2 35 r6 r6 r6 R66 s5 s4 9 3
4848
PrzykładPrzykład
STAN
akcja przejścieId + * ( ) $ E T F
7 s5 s4 108 s6 s119 r1 s7 r1 r110 r3 r3 r3 r311 r5 r5 r5 r5
4949
DZIAŁANIA ANALIZATORADZIAŁANIA ANALIZATORA
Nr STOS WEJŚCIE AKCJA1234567
00 id *id+id$id *id+id$ przesunięcieprzesunięcie
0 id 50 id 5 *id+id$*id+id$ redukcja wg F->idredukcja wg F->id
0 F 30 F 3 *id+id$*id+id$ redukcja wg T->Fredukcja wg T->F
0 T 20 T 2 *id+id$*id+id$ przesunięcieprzesunięcie
0 T 2 * 70 T 2 * 7 id+id$id+id$ przesunięcieprzesunięcie
0 T 2 * 7 id 50 T 2 * 7 id 5 +id$+id$ redukcja wg F->idredukcja wg F->id
0 T 2 * 7 F 100 T 2 * 7 F 10 +id$+id$ redukcja wg T->T*Fredukcja wg T->T*F
5050
DZIAŁANIA ANALIZATORADZIAŁANIA ANALIZATORA
Nr STOS WEJŚCIE AKCJA7891011121314
0 T 2 * 7 F 100 T 2 * 7 F 10 +id$+id$0 T 20 T 2 +id$+id$ redukcja wg E->Tredukcja wg E->T
0 E 10 E 1 +id$+id$0 E 1 + 60 E 1 + 6 id$id$ przesunięcieprzesunięcie
0 E 1 + 6 id 50 E 1 + 6 id 5 $$
akceptacjaakceptacja
0 E 1 + 6 F 30 E 1 + 6 F 3 $$redukcja wg F->idredukcja wg F->id
0 E 1 + 6 T 90 E 1 + 6 T 9 $$ redukcja wg E->E+Tredukcja wg E->E+T
redukcja wg T->T*Fredukcja wg T->T*F
przesunięcieprzesunięcie
redukcja wg T->Fredukcja wg T->F
0 E 10 E 1 $$5151
KONIECKONIEC
KONIEC WYKŁADU SIÓDMEGOKONIEC WYKŁADU SIÓDMEGO