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;

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

Lingwistyka Matematyczna
Programowanie w PMC.
Sortowanie przez scalanie
Schemat blokowy M START KONIEC
Grażyna Mirkowska PJWSTK, 10 stycznia 2001
Badania operacyjne. Wykład 2
WEKTORY Każdy wektor ma trzy zasadnicze cechy: wartość (moduł), kierunek i zwrot. Wartością wektora nazywamy długość odcinka AB przedstawiającego ten wektor.
Sztuczna Inteligencja 2.1 Metody szukania na ślepo
Analiza Składniowa Wstępująca
Lingwistyka Matematyczna
Generator analizatorów składniowych
Metoda pierwszeństwa operatorów
ALGORYTMY GEOMETRYCZNE.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Języki formalne i gramatyki
Zapis informacji Dr Anna Kwiatkowska.
Strategia skutecznego szukania informacji w Internecie
Podstawy programowania
ZASTOSOWANIE FUNKCJI W EXCELU
ADRESOWANIE WZGLĘDNE I BEZWZGLĘDNE Ćwiczenia
Podstawy układów logicznych
ANALIZA LEKSYKALNA. Zadaniem analizatora leksykalnego jest przetwarzanie danych pochodzących ze strumienia wejściowego a także rozpoznawanie ciągów znaków.
ANALIZA METODĄ WSTĘPUJĄCĄ
Elementy Rachunku Prawdopodobieństwa i Statystyki
IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM
Gramatyki Lindenmayera
Obserwatory zredukowane
A. Sumionka. Starodawna gra marynarska; Gra dwu i wieloosobowa; Gracze wykonują ruchy naprzemian; Złożona ze stosów, w których znajduje się pewna ilość
Zadanie programowania liniowego PL dla ograniczeń mniejszościowych
Edytor Vi.
Zadanie programowania liniowego PL dla ograniczeń mniejszościowych
Języki i automaty część 5.
Systemy wspomagania decyzji
Języki i automaty część 3.
Jak tworzyć algorytmy.? Sposób krok po kroku..
Gramatyki i translatory
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Spis treści W świecie algortmów -Budowa algorytmu
II Zadanie programowania liniowego PL
Podstawy Techniki Cyfrowej
ZAPIS BLOKOWY ALGORYTMÓW
Algorytmika.
ALGORYTMY Co to jest algorytm ? Cechy algorytmu Budowa algorytmów
Obliczalność czyli co da się policzyć i jak Model obliczeń maszyna licznikowa dr Kamila Barylska.
Gramatyki Lindenmayera
Wyszukiwanie maksimum funkcji za pomocą mrówki Pachycondyla Apicalis.
Metody numeryczne szukanie pierwiastka metodą bisekcji
RAR jako format kompresji bezstratnej.. RAR został stworzony przez Rosjanina Eugene Roshala. Do kompresji danych używa odmiany kompresji LZSS. Jest wolniejszym.
Algorytmy- Wprowadzenie do programowania
Języki formalne Copyright, 2006 © Jerzy R. Nawrocki Wprowadzenie do informatyki Wykład.
ANALIZA SKŁADNIOWA.
Y A C C Generator analizatorów składniowych. GENERATOR YACC Zadaniem generatora YACC jest wygenerowanie kodu źródłowego analizatora składniowego (domyślnie)
Systemy wspomagające dowodzenie twierdzeń
Warstwowe sieci jednokierunkowe – perceptrony wielowarstwowe
Listy Listy w Prologu mogą przechowywać dane dowolnego typu [alpha,beta,gamma,delta] [1,2,3] Sama lista również może zawierać listę: [[a,list,within],a,list]
Wstęp do programowania Wykład 9
1. Adres względny 2. Adres bezwzględny 3. Adres mieszany.
Zarządzanie projektami
Gramatyki Lindenmayera Powstanie Deterministyczny L-system.
 Formuła to wyrażenie algebraiczne (wzór) określające jakie operacje ma wykonać program na danych. Może ona zawierać liczby, łańcuchy znaków, funkcje,
Co to jest algorytm? Uporządkowany i uściślony sposób rozwiązania danego problemu, zawierzający szczegółowy opis wykonywanych czynności w skończonej.
Algorytmy, sposoby ich zapisu.1 Algorytm to uporządkowany opis postępowania przy rozwiązywaniu problemu z uwzględnieniem opisu danych oraz opisu kolejnych.
Liczbami naturalnymi nazywamy liczby 0,1,2,3,..., 127,... Liczby naturalne poznaliśmy już wcześniej; służą one do liczenia przedmiotów. Zbiór liczb.
Rozpatrzmy następujące zadanie programowania liniowego:
Wstęp do Informatyki - Wykład 6
Haskell Składnia funkcji.
ALGORYTMY I STRUKTURY DANYCH
POJĘCIE ALGORYTMU Wstęp do informatyki Pojęcie algorytmu
SHA1 – Secure Hash Algorithm
Zapis prezentacji:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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$

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

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

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

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

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

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

Przykład $ ( S )$ $ ) 26

Przykład $ S $ sukces analizy-akceptacja 27

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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;

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

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

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

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

KONIEC KONIEC WYKŁADU SIÓDMEGO