Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

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;

Podobne prezentacje


Prezentacja na temat: "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;"— Zapis prezentacji:

1 ANALIZA METODĄ WSTĘPUJĄCĄ

2 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 Zdanie jest forma zdaniowa, która nie zawiera nieterminali;

3 ANALIZA WSTĘPUJĄCA W analizie zstępującej przetwarzanie rozpoczynamy od symbolu startowego a następnie stosujemy wyprowadzenie tak długo, aż otrzymamy zdanie wejściowe. Możliwe jest oczywiście, że zdania nie da się wygenerować. Wówczas otrzymamy taką informacje; W analizie wstępującej mamy odwrotny schemat działania. Zaczynamy tu pracę od analizowanego zdania i poprzez konsekwentne stosowanie redukcji próbujemy dojść do symbolu startowego gramatyki; 3

4 ANALIZA ZSTĘPUJĄCA Sprawdźmy, w jaki sposób działa metoda wstępująca na przykładzie z wcześniejszych wykładów. Dane jest zdanie 4  =Szybki pies przeskoczył płot

5 GRAMATYKA BEZKONTEKSTOWA gramatyka – reguły produkcji: Zdanie -> podmiot orzeczenie Podmiot -> przymiotnik rzeczownik Orzeczenie -> czasownik dopełnienie Dopełnienie -> rzeczownik Rzeczownik -> płot Przymiotnik -> szybki Czasownik -> przeskoczył Rzeczowniki -> pies 5

6 ANALIZA ZSTEPUJĄCA zdanie podmiotorzeczenie przymiotnikrzeczownikczasownikdopełnienie rzeczownik Szybkipiesprzeskoczyłpłot 6

7 ANALIZA WSTEPUJĄCA zdanie podmiotorzeczenie przymiotnikrzeczownikczasownikdopełnienie rzeczownik Szybkipiesprzeskoczyłpłot 7

8 Przykład Rozważmy gramatykę o następujących produkcjach: S-> aABe, A->Abc | b, B->d; Zastanówmy się nad zdaniem  =abbcde; abbcde aAbcde aAde aABe S 8 S=>aABe=>aAde=>aAbcde=>abbcde

9 PRAWE WYPROWADZENIE Niech G będzie gramatyką bezkontekstową. Niech  1 =>  2 =>  3 =>...=>  k,  1,  2,...,  k є (V U Σ)* będzie wyprowadzeniem w G. Wyprowadzenie to nazywamy prawym wyprowadzeniem, gdy każde pojedyncze wyprowadzenie  i-1 =>  i w tym łańcuchu wyprowadzeń polega na zastosowaniu produkcji z G do pierwszej zmiennej w  i-1 liczonych od prawej strony; 9

10 ANALIZA WSTĘPUJĄCA Uchwyt ciągu – to podciąg, który pasuje do prawej strony produkcji i którego redukcja do nieterminala po lewej stronie produkcji reprezentuje jeden krok wzdłuż odwrotności prawostronnego wyprowadzenia; 10

11 ANALIZA WSTĘPUJĄCA Formalnie uchwyt prawostronnej formy zdaniowej , to produkcja A->  i pozycja w , na której znajduje się ciąg symboli , który w celu otrzymania poprzedniej prawostronnej formy zdaniowej w prawostronnym wyprowadzeniu , należy zastąpić przez A; 11 S=>  Aw=> A->  na pozycji po  jest uchwytem  w  w

12 Przykład Rozważmy gramatykę o następujących produkcjach: S-> aABe, A->Abc | b, B->d; jest prawostronną formą zdaniową, której uchwytem jest A->b na pozycji 2 aAbcde abbcde jest prawostronną forma zdaniowa, której uchwytem jest A->Abc na pozycji 2 12

13 PRZYCINANIE UCHWYTÓW Przycinanie uchwytów jest metodą dzięki której możemy uzyskać odwrotność prawostronnego wyprowadzenia; Załóżmy że mamy daną gramatykę i dane zdanie w, utworzone w tej gramatyce. Zatem w=  n gdzie  n jest n-tą prawostronną formą zdaniowa, w pewnym prawostronnym wyprowadzeniu; S=  0 =>  1 =>  2 =>...=>  n-1 =>  n =w 13

14 PRZYCINANIE UCHWYTÓW W celu odtworzenia tego wyprowadzenia od końca, wyszukujemy uchwyt  n w  n i zastępujemy go lewą stroną produkcji A->  n. W ten sposób otrzymujemy (n-1) –szą prawostronną formę zdaniową; Wyszukujemy następnie uchwyt  n-1 w  n-1 i redukujemy ten uchwyt i otrzymujemy prawostronną formę  n-2 ; Jeśli po skończonej ilości powtórzeń takiej czynności otrzymamy prawostronną formę zdaniową składającą się z symbolu startowego S, to kończymy analizę; 14

15 Przykład Rozważmy przykład. Niech będzie dana gramatyka dana przez produkcje:  S -> (S);  S -> *; Rozważamy zdanie  =(((*))) 15

16 Przykład  =(((*)))  =(((*))) * S-> * <=(((S))) (S) S->( S ) (S) (S) <=((S))<=(S) <=S 16

17 Przykład Rozważmy następująca gramatykę: E- >E+E, E->E*E, E->(E), E->w; P. F. Z UCHWYTPRODUKCJA w+w*w wE->w E+w*wwE->w E+E*wwE->w E+E*EE*E E->E*E E+E E+E E->E+E E 17

18 IMPLEMANTACJA ANALIZY REDUKCYJNEJ Jeśli chcemy dokonywać analizy tekstów, za pomocą przycinania uchwytów, musimy pokonać dwa główne problemy: 18  Pierwszym problemem jest znalezienie podciągu w prawostronnej formie zdaniowej, który trzeba zredukować (uchwytu);  Gdy jest więcej niż jedna produkcja, w której po prawej stronie występuje nasz podciąg (uchwyt), należy wybrać jedną z nich, odpowiednią;

19 IMPLEMENTACJA ANALIZY REDUKCYJNEJ Kolejnym istotnym pytaniem jest pytanie o rodzaj struktur danych, które będzie wygodnie używać, przy implementacji analizatora; Kolejnym istotnym pytaniem jest pytanie o rodzaj struktur danych, które będzie wygodnie używać, przy implementacji analizatora; Wygodna metodą jest użycie stosu do pamiętania symboli gramatyki, oraz bufora wejściowego do pamiętania tekstu w, przeznaczonego do analizy; 19 stos wejście $ w$

20 OPIS STOSU Na starcie na wejściu jest napis w, a stos jest pusty; Analizator przesuwa symbole z wejścia na stos, aż na wierzchołku znajdzie się uchwyt  ; analizator redukuje do lewej strony odpowiedniej produkcji; analizator redukuje do lewej strony odpowiedniej produkcji; Powtarza ten proceder, aż do wystąpienia błędu, lub sytuacji gdy na stosie będzie symbol startowy; Gdy na stosie będzie tylko symbol startowy analizator kończy pracę; 20

21 Operacje Mamy cztery operacje analizatora: Przesuniecie – powoduje wstawienie kolejnego symbolu z wejścia na wierzchołek stosu; Przesuniecie – powoduje wstawienie kolejnego symbolu z wejścia na wierzchołek stosu; Redukcja – analizator wie, że prawy koniec uchwytu jest na wierzchołku stosu, szuka na stosie lewy koniec uchwytu, i zastępuje uchwyt odpowiednim nieterminalem (sam decyduje, którym); 21

22 Operacje Pozostałe operacje analizatora: Akceptowanie – pomyślne zakończenie analizy; Błąd – oznacza, że wystąpił błąd składniowy i analizator wywołuje procedurę obsługi błędu; 22

23 Przykład $ ( ( ( * (((*)))$ ((*)))$ (*)))$ *)))$ )))$ S->* 23

24 Przykład $ ( ( ( S))$ S->( S ) ) )))$ 24

25 Przykład $ ( ( S ))$ )$ ) 25

26 Przykład $ ( S )$ $ ) 26

27 Przykład $ S $ sukces analizy-akceptacja 27

28 Przykład Wróćmy do naszego przykładu nr 2 z produkcjami: E->E+E, E->E*E, E_>(E), E- >(w) Ponownie rozważamy zdanie  =w+w*w Prześledźmy sekwencje operacji wykonywanych przez analizator: 28

29 Przykład STOSWEJŚCIEOPERACJA $w+w*wprzesunięcie $w +w*w redukcja E->w $E+w*wprzesunięcie $E+ w*w w*wprzesunięcie $E+w *w *w redukcja E->w $E+E *w *w przesunięcie 29

30 Przykład STOSWEJŚCIEOPERACJA $E+E*wprzesunięcie $ $E+E*w redukcja E->w $E+E*E $ redukcja E->E*E $E+E $ redukcja E->E+E $E$ Akceptacja wejścia

31 PROBLEMY Problemy przy przycinaniu uchwytów: Znalezienie odpowiedniego uchwytu (w analizatorach redukujących zawsze jest na szczycie stosu); Wybranie odpowiedniej produkcji, jeśli może być wykorzystana więcej niż jedna (konstrukcja tablicy LR); 31

32 ANALIZATOT LR Wydajna metodą analizy wstępującej jest analiza LR(k), gdzie „L” oznacza przeglądanie wejścia od lewej do prawej, „R” (rightmost) oznacza budowę prawostronnego wyprowadzenia od końca, a k oznacza liczbę symboli podglądanych podczas podejmowania decyzji w trakcie analizy; Gdy pominiemy (k), przyjmujemy, że k=1; Gdy pominiemy (k), przyjmujemy, że k=1; 32

33 ANALIZATOT LR Zalety analizatorów LR: Można zbudować analizatory LR do prawie wszystkich konstrukcji języków programowania, dla których można znaleźć gramatykę bezkontekstową; Metoda LR jest najogólniejszą nie wracającą metodą analizy redukującej. Analizatory działające tą metodą można zaimplementować tak wydajnie, jak działające innymi metodami redukcyjnymi; 33

34 ANALIZATOT LR Zalety analizatorów LR: Klasa gramatyk które można analizować, używając metody LR jest właściwym nadzbiorem klasy gramatyk, które można analizować analizatorami przewidującymi; Analizator LR może wykrywać błędy tak wcześnie, jak jest to możliwe podczas przeglądania wejścia, od lewej do prawej strony; 34

35 ANALIZATOR LR 35 Program analizatora LR LR a1a1a1a1 aiaiaiai anananan......$ SmSmSmSm S m-1 S0S0S0S0... XmXmXmXm X m-1 akcja przejście wyjście wejście stos

36 ANALIZATOR LR Działanie analizatora LR: Program sterujący jest taki sam dla wszystkich analizatorów LR, różne są jedynie tablice analizatora; Program analizatora wczytuje pojedyncze symbole z bufora wejściowego; 36

37 ANALIZATOR LR Używa on stosu do zapamiętywania ciągu postaci s 0 X 1 s 1 X 2 s 2...X m na wierzchołku, gdzie każde X i jest symbolem z gramatyki a s i jest symbolem nazywanym stanem; Każdy symbol stanu podsumowuje informacje zawarte na stosie pod nim, a kombinacja symbolu stanu i aktualnego symbolu wejściowego jest używana do indeksowania tablicy analizatora oraz do podejmowania decyzji o przesunięciu lub redukcji; 37

38 TABLICA ANALIZATORA LR Tablice analizatora zawierają wytyczne dla programu sterującego. Wytyczne te dotyczą między innymi tego w jakim stanie i pod wpływem jakich symboli ma wystąpić akcja (action lub przejście (goto); Tablice analizatora można tworzyć na różne sposoby; Metody tworzenia tablic decydują o sile analizatora (tzn. o liczbę przetwarzanych gramatyk); 38

39 TABLICA ANALIZATORA LR Metody konstrukcji tablicy analizatorów: SLR (prosty LR) – najłatwiejsza w implementacji ale najsłabsza, dla niektórych gramatyk dla których pozostałe zadziałają ta może nie dać rezultatów; Podglądający LR (LALR) – średnia pod względem możliwości, jak i kosztów; Metoda kanoniczna LR – najskuteczniejsza, ale też najdroższa; 39

40 TABLICA ANALIZATORA LR Tablica analizatora składa się z dwóch części : Funkcji wyznaczającej akcje, akcja; Funkcji wyznaczającej przejście, przejście; Funkcja przejście bierze jako argument stan i symbol z gramatyki, a zwraca stan; 40

41 ANALIZATOR LR Program analizatora LR sprawdza stan s m, stan leżący na wierzchołku stosu oraz aktualny symbol na wejściu a i ; Odczytuje następnie wartość akcja[s m,a i ] w tablicy analizatora dla stanu s m i wejścia a i ; Wartość akcja[s m,a i ] może być:  przesuń s, gdzie s jest stanem;  redukuj zgodnie z produkcja A->  ;  akceptuj;  błąd; 41

42 ANALIZATOR LR Konfiguracją analizatora LR nazywamy parę, której pierwszym elementem jest zawartość stosu, a drugim niewykorzystane wejście; Konfiguracją analizatora LR nazywamy parę, której pierwszym elementem jest zawartość stosu, a drugim niewykorzystane wejście; (s 0 X 1 s 1 X 2 s 2...X m s m, a i a i+1...a n $) Powyższa konfiguracja przedstawia formę zdaniowa: X 1 X 2...X m a i a i+1...a n 42

43 ANALIZATOR LR Konfiguracje, które mogą wystąpić po każdym z czterech typów akcji:  akcja[s m,a i ]=przesuń s – analizator wykonuje przesunięcie przechodząc do konfiguracji: (s 0 X 1 s 1 X 2 s 2...X m s m a i s, a i+1...a n $)  akcja[s m,a i ]=redukuj wg A->  - analizator wykonuje redukcje przechodząc do konfiguracji: (s 0 X 1 s 1 X 2 s 2...X m-r s m-r A s, a i+1...a n $), (s 0 X 1 s 1 X 2 s 2...X m-r s m-r A s, a i+1...a n $), gdzie s=przejście[s m-r,A], a r jest długością  ; 43

44 akcja[s m,a i ]=redukuj wg A->  Analizator zdejmuje ze stosu 2r symboli (po r symboli stanu i gramatyki), odkrywając stan s. Następnie wstawia na stos A – lewa stronę użytej produkcji i s – wartość przejście[s, A]. Aktualny symbol wejściowy w wyniku redukcji nie jest zmieniany;  akcja[s m,a i ]=akceptuj – analiza jest zakończona;  akcja[s m,a i ]= błąd- analizator wykrył błąd i wywołuje procedurę obsługi błędu; 44

45 ANALIZA LR Podsumujmy krótko algorytm analizy LR:  Wejście: ciąg wejściowy w i tablica analizatora LR z funkcjami akcja i przejście dla gramatyki G;  Wyjście jeśli w jest w L(G) –występuje wyprowadzenie dla w, w przeciwnym przypadku – informacja o błędzie;  Metoda: początkowo na stosie analizatora jest s 0, czyli stan początkowy, a na wejściu jest w$. Dalsze kroki analizatora zaobserwujmy na przykładzie; 45

46 Przykład Rozważmy następującą gramatykę bezkontekstową, daną zbiorem produkcji: E -> E+T; E->T;T->T*F;T->F;F->(E);F->id; 46

47 Przykład W naszym algorytmie wprowadźmy następujące oznaczenia: s i oznacza przesuniecie i wstawiany na stos stan i; r j oznacza redukcję według produkcji o numerze j; akc oznacza akceptuj; Puste miejsce oznacza błąd;

48 Przykład ST AN akcjaprzejście Id+*()$ETF 0s5s4123 1s6akc 2r2s7r2R2 3r4r4r4r4 4s5s4823 5r6r6r6R6 6s5s493 48

49 Przykład akcjaprzejście Id+*()$ETF 7s5s410 8s6s11 9r1s7r1r1 10r3r3r3r3 11r5r5r5r5 49

50 DZIAŁANIA ANALIZATORA NrSTOSWEJŚCIEAKCJA id *id+id$ przesunięcie 0 id 5 *id+id$ *id+id$ redukcja wg F->id 0 F 3 *id+id$ *id+id$ redukcja wg T->F 0 T 2 *id+id$ *id+id$przesunięcie 0 T 2 * 7 id+id$ id+id$ przesunięcie 0 T 2 * 7 id 5 +id$ +id$ redukcja wg F->id 0 T 2 * 7 F 10 +id$ +id$ redukcja wg T->T*F 50

51 DZIAŁANIA ANALIZATORA NrSTOSWEJŚCIEAKCJA T 2 * 7 F 10 +id$ +id$ 0 T 2 +id$ +id$ redukcja wg E->T 0 E 1 +id$ +id$ 0 E id$ id$przesunięcie 0 E id 5 $ akceptacja 0 E F 3 $ redukcja wg F->id 0 E T 9 $ redukcja wg E->E+T redukcja wg T->T*F przesunięcie redukcja wg T->F 0 E 1 $ 51

52 KONIEC KONIEC WYKŁADU SIÓDMEGO


Pobierz ppt "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;"

Podobne prezentacje


Reklamy Google