52
ANALIZA METODĄ ANALIZA METODĄ WSTĘPUJĄCĄ WSTĘPUJĄCĄ

ANALIZA METODĄ WSTĘPUJĄCĄ

  • 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

Page 1: ANALIZA METODĄ WSTĘPUJĄCĄ

ANALIZA METODĄ ANALIZA METODĄ WSTĘPUJĄCĄWSTĘPUJĄCĄ

Page 2: ANALIZA METODĄ 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;

Page 3: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 4: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 5: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 6: ANALIZA METODĄ WSTĘPUJĄCĄ

ANALIZA ZSTEPUJĄCAANALIZA ZSTEPUJĄCA

zdanie

podmiot orzeczenie

przymiotnik rzeczownik czasownik dopełnienie

rzeczownik

Szybki pies przeskoczył płot

66

Page 7: ANALIZA METODĄ WSTĘPUJĄCĄ

ANALIZA WSTEPUJĄCAANALIZA WSTEPUJĄCA

zdanie

podmiot orzeczenie

przymiotnik rzeczownik czasownik dopełnienie

rzeczownik

Szybki pies przeskoczył płot

77

Page 8: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 9: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 10: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 11: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 12: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 13: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 14: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 15: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 16: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 17: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 18: ANALIZA METODĄ WSTĘPUJĄCĄ

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ą;

Page 19: ANALIZA METODĄ WSTĘPUJĄCĄ

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$

Page 20: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 21: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 22: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 23: ANALIZA METODĄ WSTĘPUJĄCĄ

PrzykładPrzykład

$$((((((**

(((*)))$(((*)))$((*)))$((*)))$

(*)))$(*)))$*)))$*)))$

)))$)))$S->*S->*

2323

Page 24: ANALIZA METODĄ WSTĘPUJĄCĄ

PrzykładPrzykład

$$((((((SS ))$))$S->( S )S->( S )

)) )))$)))$

2424

Page 25: ANALIZA METODĄ WSTĘPUJĄCĄ

PrzykładPrzykład

$$((((SS

))$))$

)$)$)) S-> ( S )S-> ( S )

2525

Page 26: ANALIZA METODĄ WSTĘPUJĄCĄ

PrzykładPrzykład

$$((SS

)$)$

$$S-> ( S )S-> ( S )

))

2626

Page 27: ANALIZA METODĄ WSTĘPUJĄCĄ

PrzykładPrzykład

$$SS

$$

sukces analizy-akceptacjasukces analizy-akceptacja

2727

Page 28: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 29: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 30: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 31: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 32: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 33: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 34: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 35: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 36: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 37: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 38: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 39: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 40: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 41: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 42: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 43: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 44: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 45: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 46: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 47: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 48: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 49: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 50: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 51: ANALIZA METODĄ WSTĘPUJĄCĄ

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

Page 52: ANALIZA METODĄ WSTĘPUJĄCĄ

KONIECKONIEC

KONIEC WYKŁADU SIÓDMEGOKONIEC WYKŁADU SIÓDMEGO