Lingwistyka Matematyczna wykład 5
Rozszerzenia notacji BNF Diagramy składniowe Agenda Rozszerzenia notacji BNF Diagramy składniowe Zamiana diagramów składniowych na kod analizatora Podsumowanie Q&A 2008-03-20 Mgr inż. Michał Jaros
Metody zapisu gramatyk Gramatyka Pāņini’ego Notacja BNF i jej rozszerzenia Notacja WSN Diagramy składniowe 2008-03-20 Mgr inż. Michał Jaros
Ashtadhyayi („Ośmioksiąg”) Gramatyka sanskrytu Gramatyka Pāņini’ego Autor Pāņini Powstał w V w.p.n.e. Ashtadhyayi („Ośmioksiąg”) Gramatyka sanskrytu 3959 reguł gramatycznych 2008-03-20 Mgr inż. Michał Jaros
Backus–Naur form (BNF) Notacja BNF Backus–Naur form (BNF) Metasymbole notacji BNF: <, >, ::=, | <składnia> ::= <produkcja> | <produkcja> <składnia> <produkcja> ::= "<" <sym-pom> ">" "::=" <wyrażenie> <EOL> <wyrażenie> ::= <lista> | <lista> "|" <wyrażenie> <lista> ::= <symbol> | <symbol> <lista> <symbol> ::= <sym-term> | "<" <sym-pom> ">" <sym-term> ::= """ <tekst> """ <zdanie> ::= <podmiot> <orzeczenie> <podmiot> ::= kwiaty | gwiazdy <orzeczenie> ::= kwitną | świecą 2008-03-20 Mgr inż. Michał Jaros
Wirth syntax notation (WSN) Notacja WSN Wirth syntax notation (WSN) SKŁADNIA = { PRODUKCJA } . PRODUKCJA = IDENTYFIKATOR "=" WYRAŻENIE "." . WYRAŻENIE = SKŁADNIK { "|" SKŁADNIK} . SKŁADNIK = CZYNNIK { CZYNNIK } . CZYNNIK = IDENTYFIKATOR | LITERAŁ | "(" WYRAŻENIE ")" | "[" WYRAŻENIE "]" | "{" WYRAŻENIE "}" . IDENTYFIKATOR = litera { litera } . LITERAŁ = """ znak { znak } """ . 2008-03-20 Mgr inż. Michał Jaros
Rozszerzenia notacji BNF (EBNF) Extended Backus–Naur form (EBNF) Zapis w BNF Zapis w EBNF Znaczenie ::= jest zdefiniowany przez | lub <EOL> zakończenie formuły brak { x } 0 lub wielokrotne powtórzenie symbolu x <symbol> symbol nie terminalny symbol symbol terminalny 2008-03-20 Mgr inż. Michał Jaros
Rozszerzenia notacji BNF (MBNF) Modified Backus–Naur form (MBNF) Zapis w EBNF Zapis w MBNF Znaczenie ::= = jest zdefiniowany przez | lub <EOL> . zakończenie formuły brak [ x ] 0 lub jednokrotne powtórzenie symbolu x { x } 0 lub wielokrotne powtórzenie symbolu x ( x | y | … | z ) dowolny z symboli x, y, … , z <symbol> symbol-nie-term symbol nie terminalny symbol "symbol" symbol terminalny 2008-03-20 Mgr inż. Michał Jaros
Diagram składni (diagram kolejowy) Diagramy składniowe Diagram składni (diagram kolejowy) Sposób prezentacji gramatyk formalnych Graficzna alternatywa dla BNF i innych Przejrzysty obraz struktury języka Bardziej czytelne dla człowieka Mniej czytelne dla komputera Dobry przy projektowaniu języka 2008-03-20 Mgr inż. Michał Jaros
Fragment diagramu składni JSON’a Diagramy kolejowe ? Fragment diagramu składni JSON’a 2008-03-20 Mgr inż. Michał Jaros
Diagramy składniowe - reguły konstrukcji A=B. A="x". 2008-03-20 Mgr inż. Michał Jaros
Diagramy składniowe - reguły konstrukcji A= α1 α2 … αn. 2008-03-20 Mgr inż. Michał Jaros
Diagramy składniowe - reguły konstrukcji A="α1" | "α2" | … | "αn". 2008-03-20 Mgr inż. Michał Jaros
Diagramy składniowe - reguły konstrukcji A= ["x"]. 2008-03-20 Mgr inż. Michał Jaros
Diagramy składniowe - reguły konstrukcji A= {"x"}. 2008-03-20 Mgr inż. Michał Jaros
Zamiana diagramów składniowych na kod analizatora Diagram składniowy ≈ schemat blokowy analizatora Reguły przejścia od diagramu do kodu analizatora Cel działania analizatora: Sprawdzenie poprawności składniowej Wygenerowanie komunikatów o błędach 2008-03-20 Mgr inż. Michał Jaros
Zamiana diagramów składniowych na kod analizatora procedure A; begin … end; 2008-03-20 Mgr inż. Michał Jaros
Zamiana diagramów składniowych na kod analizatora … if ch = "x" then read(ch) else błąd; … if ch in pierw(B) then B() else błąd; 2008-03-20 Mgr inż. Michał Jaros
Zamiana diagramów składniowych na kod analizatora … case ch of "x" : read(ch); "y" : read(ch); "z" : read(ch); else błąd; end; 2008-03-20 Mgr inż. Michał Jaros
Zamiana diagramów składniowych na kod analizatora … while ch = "x" do read(ch); 2008-03-20 Mgr inż. Michał Jaros
Rozszerzenia notacji BNF Diagramy składniowe Podsumowanie Rozszerzenia notacji BNF Diagramy składniowe Analizator składniowy z diagramu składni 2008-03-20 Mgr inż. Michał Jaros
Q&A 2008-03-20 Mgr inż. Michał Jaros
KONIEC 2008-03-20 Mgr inż. Michał Jaros