ANALIZA METOD ZSTEPUJC ANALIZA ZSTPUJCA Dla danej gramatyki
- Slides: 33
ANALIZA METODĄ ZSTEPUJĄCĄ
ANALIZA ZSTĘ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 formą zdaniową, która nie zawiera nieterminali; 2
ANALIZA ZSTĘPUJĄCA Analiza metoda zstępującą polega na poszukiwaniach mających na celu, znalezienie lewostronnego wyprowadzenia dla zdania będącego ciągiem wejściowym; W metodzie tej 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; 3
ANALIZA ZSTĘPUJĄCA Sprawdźmy, czy zdanie z poprzedniego wykładu „Szybki pies przeskoczył płot” należy do języka generowanego przez tę gramatykę. Rozpoczniemy od korzenia: zdanie 4
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 podmiot przymiotnik rzeczownik orzeczenie czasownik dopełnienie rzeczownik Szybki pies przeskoczył płot
ANALIZA ZSTĘPUJĄCA W następnym przykładzie dana jest gramatyka z produkcjami: S->(S), S->W, gdzie W jest wyrażeniem. Czy zdanie (((W))) należy do języka generowanego przez tę gramatykę; S =>(S) => ((S)) =>(((S))) =>((( W ))) 7
ANALIZA ZSTĘPUJĄCA Rozważmy jeszcze jeden przykład. Niech będzie dana gramatyka dana przez produkcje: S -> a. Ad; S -> a. B; A -> b; A -> c; B -> ddc; B -> ccd; 8
ANALIZA ZSTĘPUJĄCA Sprawdźmy, czy do języka generowanego, przez tę gramatykę należy zdanie =accd? S->a. Ad S S->a. B A->b a A d A->c B->dcc b B->ccd 9
ANALIZA ZSTĘPUJĄCA Sprawdźmy, czy do języka generowanego, przez tę gramatykę należy zdanie =accd? S->a. Ad S S->a. B A->b a A d A->c B->ddc c B->ccd 10
ANALIZA ZSTĘPUJĄCA Sprawdźmy, czy do języka generowanego, przez tę gramatykę należy zdanie =accd? S->a. Ad S S->a. B A->b a B A->c B->ddc d d c B->ccd 11
ANALIZA ZSTĘPUJĄCA Sprawdźmy, czy do języka generowanego, przez tę gramatykę należy zdanie =accd? S->a. Ad S S->a. B A->b a B A->c B->ddc c c d B->ccd 12
ANALIZA ZSTĘPUJĄCA Sprawdźmy, czy do języka generowanego, przez tę gramatykę należy zdanie =accd? S->a. Ad S S->a. B A->b a B A->c B->ddc c c d B->ccd 13
GRAMATYKI LL(1) Gramatykę bezkontekstową, która nie zawiera pustych produkcji (S-> ) oraz prawe strony dowolnego nieterminala A rozpoczynają się od różnych symboli terminalnych nazywamy prostą gramatyką LL(1); Prosta gramatyka LL(1) jest klasą gramatyk, które mogą być automatycznie przetwarzane poprzez analizatory działające na bazie metody zstępującej; 14
METODA ZEJŚĆ REKURENCYJNYCH Implementacja metody zstępującej jest metoda zejść rekurencyjnych. Opiera się ona na: Dla każdego nieterminala musi być stworzona osobna funkcja; Symbol znajdujący się na wejściu jest podstawą decyzji o wyborze produkcji; Dla nieterminala następuje wywołanie funkcji związanej z tym nieterminalem; Dla terminala następuje sprawdzenie jego zgodności z symbolami, których funkcja oczekuje na wejściu; . . . 15
Przykład Prześledźmy jeszcze jeden przykład. Niech gramatyka będzie zdefiniowana za pomocą produkcji: A->Ba, B->b. B i B->c; W tym przypadku produkcja rozpoczyna się od nieterminala; W przypadkach takich gramatyk można sobie poradzić wykorzystując zbiór FIRST; 16
ZBIÓR FIRST Zbiór FIRST(X) tworzymy w oparciu o poniższe reguły: Jeśli X T, to FIRST(X)={X}; Jeśli X-> , to FIRST(X); Jeśli X N i X->Y 1 Y 2. . . Yn, to w FIRST(Yi), jeśli istnieje i {1, 2, . . . n} takie, że w FIRST(Yi) i FIRST(Yk) dla wszystkich k {1, 2, . . . i-1}; Jeśli FIRST(Yi) dla wszystkich i, to FIRST(X); 17
Przykład 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 18
Przykład FIRST(przeskoczył)={przeskoczył}; FIRST(pies)={pies}; FIRST(zdanie) =FIRST(podmiot orzeczenie) =FIRST(przymiotnik rzeczownik orzeczenie) =FIRST(szybki rzeczownik orzeczenie) ={szybki} 19
Przykład Rozważmy gramatykę zadaną produkcjami: S->S+P, S->P, P->P*Q, P->Q, Q->(S), Q->id; FIRST(P) =FIRST(P*Q) FITRST(Q) =FIRST((S)) FIRST(id) ={ ( , id } 20
METODA ZEJŚĆ REKURENCYJNYCH Zasady w oparciu o które pisze się analizator wykorzystujący metodę rekurencyjnych zejść: Dla każdego nieterminala tworzymy oddzielną funkcję; O wyborze produkcji analizator decyduje w oparciu o symbol znajdujący się na wejściu. Produkcja jest wybrana, jeśli symbol na wejściu należy do zbioru FIRST od prawej strony tej produkcji; 21
METODA ZEJŚĆ REKURENCYJNYCH Zasady w oparciu o które pisze się analizator wykorzystujący metodę rekurencyjnych zejść: Dla każdego nieterminala wywoływana jest funkcja związana z tym nieterminalem; Dla każdego treminala, sprawdzana jest jego zgodność z symbolami, których funkcja oczekuje na wejściu; 22
Przykład Wróćmy do naszego wcześniejszego przykładu, gdzie gramatyka była zdefiniowana za pomocą produkcji: A->Ba, B->b. B i B->c; Implementacja funkcji odpowiadającej nieterminalowi B jest prosta; Problem pojawia się przy implementacji funkcji odpowiadającej nieterminalowi A. Z pomocą przychodzi zdefiniowany wcześniej zbiór FIRST; . . . 23
Przykład Zmieńmy nieco gramatykę, wprowadzając do niej pusta produkcję. Czyli rozważmy gramatykę o produkcjach: A-> B a, B->b B, B-> ; Zmiana ta spowoduje zmianę zbioru FIRST (B a) (poprezdnio FIRST(B a)={b, c} teraz FIRST(B a)={b, a}), a to z kolei wymusi niewielka modyfikację kodu; . . . 24
LEWOSTRONNA REKURENCJA Rozważmy gramatykę zadaną produkcjami: A-> a B a, B-> B b; void B(){ if (biezacy == ‘b’){ B(); Wczytaj(‘b’); } else{ /*epsilon*} } FIRST(B b)={ , b} 25
ELIMINACJA LEWOSTRONNEJ REKURENCJI Metoda eliminacji lewostronnej rekurencji; Załóżmy że dane są produkcje: A->A , A->A A-> A’ A’-> 26
Przykład W naszej gramatyce były produkcje: A->a B a, B->B b; Po eliminacji lewostronnej rekurencji: A-> a B-> B b A-> a B-> b B B-> A -> a B -> B’ B’ -> b B’ B’-> 27
LEWOSTRONNA REKURENCJA Zatem implementacja funkcji nieterminala B może wyglądać teraz: A-> a B a, B-> b B, B-> , ; void B(){ if (biezacy == ‘b’){ Wczytaj(‘b’); } B(); else{ /*epsilon*} } A-> a B-> b B B-> 28
LEWOSTRONNA FAKTORYZACJA Metoda lewostronnej faktoryzacji; Załóżmy że dane są produkcje: A-> 1, A-> 2 A-> 1 A-> 2 A -> A’ A’ -> 1 A’-> 2 29
LEWOSTRONNA FAKTORYZACJA Rozważmy gramatykę zadaną produkcjami: A-> a B a, B->b, B-> b B; void B( ){ if (biezacy == ‘b’){ Wczytaj(‘b’); } else if (biezacy == ‘b’){ Wczytaj(‘b’); B ( ); } else{ Sygnalizuj_blad(); } } 30
Przykład W naszej gramatyce były produkcje: A->a B a, B->b, B->B b; Po eliminacji lewostronnej faktoryzacji: A-> a B-> b B A -> a B -> b B 1 -> B 1 -> B 31
LEWOSTRONNA FAKTORYZACJA Zatem po lewostronnej faktoryzacji implementacja funkcji nieterminala B może wyglądać teraz: A-> a B a, B-> b B 1, B 1 ->B; void B( ){ if (biezacy == ‘b’){ Wczytaj(‘b’); } B 1( ); else{ Sygnalizuj_blad(); } } void B 1( ){ if (biezacy == ‘b’){ Wczytaj(‘b’); } B( ); else{ /*epsilon*/} } 32
KONIEC WYKŁADU CZWARTEGO
- Množiny bodov danej vlastnosti
- Množiny bodov s danou vlastnosťou
- Antrenman planlaması ve periyotlaması
- Lagtolkningsmetoder
- Metody aktywizujące podział
- Ta'lim metodlari klassifikatsiyasi
- Vrste nastavnih metoda
- Metodtriangulering
- Kramerov metod
- Homogen sistem jednacina
- Chronometraż pracy przykład
- Vanliga intervjufr�gor
- Fiskbensdiagram exempel
- Metoda triangulace
- Metod sociologije
- Walidacja metod analitycznych
- Gausov metod
- Hypotetisk-deduktiv metod
- Kvantitativ metod
- Oilada bolalarni ma'naviy axloqiy tarbiyalash
- Kimyo o'qitish metodikasi
- Classroom direct
- Gausova
- Fenomenografisk metod
- Testimplikation
- Toifalash jadvali
- Ped kengash bayonnomasi
- Metoda suprotnih koeficijenata antonija horvatek
- Naucno posmatranje
- Komparativ metod exempel
- Ta‘lim metodlari va vositalari
- Degresivni
- Metod bild
- 6 kapeluszy