Lingwistyka Matematyczna wykład 3
Agenda Wyprowadzanie zdań Analiza zdań Gramatyki klasy LL(1) Podsumowanie Q&A 2008-03-30 Mgr inż. Michał Jaros
W gramatyce Chomsky’ego: Matematyczna definicja języka; Wyprowadzanie zdań W gramatyce Chomsky’ego: Matematyczna definicja języka; Wyprowadzanie ciągów symboli; Bezpośrednie wyprowadzanie ciągów symboli; 2008-03-30 Mgr inż. Michał Jaros
Przykładowa gramatyka: Wyprowadzanie zdań Praktyka Przykładowa gramatyka: S ::= A B A ::= a | b B ::= c | d Symbol początkowy: S Symbole pomocnicze: N = {S, A, B} Symbole końcowe (słownik): T = {a, b, c, d} 2008-03-30 Mgr inż. Michał Jaros
Wyprowadzanie zdań Gramatyka: Zdania z gramatyki: Wyprowadzanie zdań S ::= A B A ::= a | b B ::= c | d Zdania z gramatyki: ac ad bc bd Wyprowadzanie zdań S → AB → aB → ac S → AB → aB → ad S → AB → bB → bc S → AB → bB → bd 2008-03-30 Mgr inż. Michał Jaros
Wyprowadzenie zdania: Ciąg wyprowadzeń: Wyprowadzanie zdań Wyprowadzenie zdania: dc Ciąg wyprowadzeń: S → AB → Błąd ! Wyprowadzanie zdań – sprawdzanie poprawności. S ::= A B A ::= a | b B ::= c | d 2008-03-30 Mgr inż. Michał Jaros
Analiza polega na rozbiorze struktur zdaniowych i zdań; Analiza zdań Analiza polega na rozbiorze struktur zdaniowych i zdań; Celem rozbioru zdania jest sprawdzenie poprawności zdania; Zadaniem teorii analizy składniowej jest opracowywanie algorytmów rozbioru języka; 2008-03-30 Mgr inż. Michał Jaros
Rozbiór zstępujący (ang. Top-down); Analiza zdań Rozbiór zdania Rozbiór zstępujący (ang. Top-down); Rozbiór wstępujący (ang. Bottom-up); 2008-03-30 Mgr inż. Michał Jaros
Rozbiór zstępujący (Top-down): Wyjście z symbolu początkowego; Analiza zdań Rozbiór zstępujący (Top-down): Wyjście z symbolu początkowego; Dopasowywanie do symbolu z lewej strony zdania; Rozbiór z powrotami lub bez powrotów; 2008-03-30 Mgr inż. Michał Jaros
Rozbiór wstępujący (Bottom-up) (Shift-Reduce): Analiza zdań Rozbiór wstępujący (Bottom-up) (Shift-Reduce): Wychodzimy ze zdania i próbujemy otrzymać symbol początkowy; Odnajdywanie i zastępowanie najbardziej podstawowych elementów w zdaniu; 2008-03-30 Mgr inż. Michał Jaros
Analiza zdań – Top-down Gramatyka: S ::= A B A ::= a | b B ::= c | d Czy zdanie ac należy do języka ? Rozbiór S A B a B B c -- a c 2008-03-30 Mgr inż. Michał Jaros
Zdania należące do gramatyki: Rekurencja Rekurencja (rekursja) – symbol pomocniczy powtarza się z lewej i prawej strony produkcji S::=xA A::=z|yA Zdania należące do gramatyki: xz xyz xyyz xyyyz … 2008-03-30 Mgr inż. Michał Jaros
Gramatyka dla liczb naturalnych: Rekurencja Gramatyka dla liczb naturalnych: S::=N N::=C|NC C::=0|1|2|3|4|5|6|7|8|9 Przykładowe zdanie: S → N → C → 5 S → N → NC → 15 S → N → NC → NCC → NCCC → CCCC → 1542 2008-03-30 Mgr inż. Michał Jaros
Analiza zdań – Top-down Gramatyka: S::=N N::=C|NC C::=0|1|2|3|4|5|6|7|8|9 Czy zdanie 15 należy do języka ? Rozbiór S N C 1 -- 1 5 5 Błąd ? 2008-03-30 Mgr inż. Michał Jaros
Podzbiór gramatyk bezkontekstowych; Gramatyki klasy LL(1) Podzbiór gramatyk bezkontekstowych; Rozbieralne analizatorami zstępującymi; Dwie reguły gramatyczne dla gramatyk klasy LL(1) 2008-03-30 Mgr inż. Michał Jaros
Gramatyki klasy LL(1) – Reguła 1 Dla zadanej gramatyki zawierającej produkcję postaci zbiory symboli pierwszych które mogą być wyprowadzone z A muszą być rozłączne 2008-03-30 Mgr inż. Michał Jaros
Gramatyki klasy LL(1) – Reguła 2 Dla każdego symbolu A N, z którego można wyprowadzić pusty ciąg symboli zbiór jego pierwszych symboli musi być rozłączny ze zbiorem symboli, które mogą następować po dowolnym ciągu wyprowadzonym z A, tzn. 2008-03-30 Mgr inż. Michał Jaros
Zbiór symboli pierwszych Gramatyki klasy LL(1) Zbiór symboli pierwszych pierw(ξ) – zbiór wszystkich symboli końcowych, które mogą wystąpić na pierwszej pozycji w zdaniach wyprowadzonych z ξ. Pierwszy symbol argumentu to symbol końcowy: pierw(aξ) = {a} Pierwszy symbol argumentu to symbol pomocniczy: A ::= α1 | α2 | α3 | … | αn pierw(Aξ) = pierw(α1) pierw(α2) pierw(α3) … pierw(αn) 2008-03-30 Mgr inż. Michał Jaros
Gramatyki klasy LL(1) Zbiór symboli następnych nast(A) – dla każdej produkcji postaci X ::= ξAη do zbioru nast(A) dołączamy zbiór pierw(η). Jeżeli z η można wyprowadzić pusty ciąg symboli to do nast(A) musimy dołączyć również nast(X). 2008-03-30 Mgr inż. Michał Jaros
Gramatyki klasy LL(1) Lewostronna faktoryzacja Produkcję postaci: A ::= αξ1 | αξ2 | αξ3 | … | αξn | β1 | β2 | β3 | … | βn Należy zastąpić produkcjami: A ::= αA’ | β1 | β2 | β3 | … | βn A’ ::= ξ1 | ξ2 | ξ3 | … | ξn 2008-03-30 Mgr inż. Michał Jaros
Gramatyki klasy LL(1) Przed poprawieniem Po poprawieniu S::=A+A|A-A|A|x A::=y|z Po poprawieniu S ::=AS’|x S’::=+A|-A|ε A ::=y|z 2008-03-30 Mgr inż. Michał Jaros
Gramatyki klasy LL(1) Eliminacja lewostronnej rekurencji Produkcję postaci: A ::= Aα1 | Aα2 | Aα3 | … | Aαn | β1 | β2 | β3 | … | βn Należy zastąpić produkcjami: A ::= β1A’ | β2A’ | β3A’ | … | βnA’ A’ ::= α1A’ | α2A’ | α3A’ | … | αnA’ | ε 2008-03-30 Mgr inż. Michał Jaros
Gramatyki klasy LL(1) Przed poprawieniem Po poprawieniu S::=N N::=C|NC 2008-03-30 Mgr inż. Michał Jaros
Podsumowanie Wyprowadzanie zdań Analiza zdań Gramatyki klasy LL(1) 2008-03-30 Mgr inż. Michał Jaros
Q&A 2008-03-30 Mgr inż. Michał Jaros
KONIEC 2008-03-30 Mgr inż. Michał Jaros