Wprowadzenie do programowania języki i gramatyki formalne. dr hab. inż. Mikołaj Morzy



Podobne dokumenty
Języki i gramatyki formalne

GRAMATYKI BEZKONTEKSTOWE

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Języki formalne i automaty Ćwiczenia 1

Gramatyki (1-2) Definiowanie języków programowania. Piotr Chrząstowski-Wachjtel

Programowanie w Logice Gramatyki metamorficzne. Przemysław Kobylański na podstawie [CM2003] i [SS1994]

Teoretyczne Podstawy Informatyki

Wprowadzenie do analizy składniowej. Bartosz Bogacki.

JAO - Wprowadzenie do Gramatyk bezkontekstowych

Matematyczne Podstawy Informatyki

Hierarchia Chomsky ego Maszyna Turinga

Wprowadzenie: języki, symbole, alfabety, łańcuchy Języki formalne i automaty. Literatura

Lingwistyka Matematyczna Języki formalne i gramatyki Analiza zdań

JIP. Analiza składni, gramatyki

Języki formalne i automaty Ćwiczenia 2

JAO - lematy o pompowaniu dla jezykow bezkontekstowy

Języki formalne i automaty Ćwiczenia 3

JĘZYKIFORMALNE IMETODYKOMPILACJI

Hierarchia Chomsky ego

Definiowanie języka przez wyrażenie regularne(wr)

Gramatyki rekursywne

JĘZYKI FORMALNE I METODY KOMPILACJI

Symbol, alfabet, łańcuch

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

Matematyczna wieża Babel. 4. Ograniczone maszyny Turinga o językach kontekstowych materiały do ćwiczeń

Języki, automaty i obliczenia

Lista 5 Gramatyki bezkontekstowe i automaty ze stosem

Wprowadzenie. Teoria automatów i języków formalnych. Literatura (1)

Gramatyki grafowe. Dla v V, ϕ(v) etykieta v. Klasa grafów nad Σ - G Σ.

Efektywna analiza składniowa GBK

Języki programowania zasady ich tworzenia

Podstawy Informatyki Gramatyki formalne

Języki formalne i automaty Ćwiczenia 4

Języki formalne i automaty Ćwiczenia 8

Automat ze stosem. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

Analiza semantyczna. Gramatyka atrybutywna

Metody Kompilacji Wykład 3

Języki, automaty i obliczenia

Metodologie programowania

Obliczenia inspirowane Naturą

Maszyna Turinga języki

Obliczenia inspirowane Naturą

3.4. Przekształcenia gramatyk bezkontekstowych

1. Maszyna Turinga, gramatyki formalne i ONP

0.1 Lewostronna rekurencja

Języki formalne i gramatyki

Wstęp do Programowania Obiektowego. Wykład 13 Paradygmaty. Składnia i semantyka.

Analizator syntaktyczny

Gramatyki atrybutywne

Parsery LL(1) Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Matematyczna wieża Babel. 3. Gramatyki o językach bezkontekstowych materiały do ćwiczeń

JĘZYKI FORMALNE I METODY KOMPILACJI

Gramatyki regularne i automaty skoczone

10. Translacja sterowana składnią i YACC

Wykład 11a. Składnia języka Klasycznego Rachunku Predykatów. Języki pierwszego rzędu.

Składnia rachunku predykatów pierwszego rzędu

Języki formalne i automaty Ćwiczenia 9

Monoidy wolne. alfabetem. słowem długością słowa monoidem wolnym z alfabetem Twierdzenie 1.

Języki i operacje na językach. Teoria automatów i języków formalnych. Definicja języka

Technologie informacyjne - wykład 12 -

Wprowadzenie do XML. Joanna Jędrzejowicz. Instytut Informatyki

Jaki język zrozumie automat?

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

Analiza leksykalna 1. Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Języki, automaty i obliczenia

Obliczenia inspirowane Naturą

Wyrażenia regularne.

Języki i gramatyki. Języki i gramatyki formalne. Języki i gramatyki formalne. Języki i gramatyki formalne. Gramatyki formalne

Zadanie 1. Czy prawdziwa jest następująca implikacja? Jeśli L A jest językiem regularnym, to regularnym językiem jest też. A = (A, Q, q I, F, δ)

Teoretyczne podstawy informatyki

JĘZYKI FORMALNE I METODY KOMPILACJI

RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią.

Semantyka i Weryfikacja Programów - Laboratorium 6

Efektywny parsing języka naturalnego przy użyciu gramatyk probabilistycznych

Metody Kompilacji Wykład 8 Analiza Syntaktyczna cd. Włodzimierz Bielecki WI ZUT

Teoretyczne podstawy informatyki. Wykład 12: Gramatyki. E. Richter-Was 1

Analiza metodą zstępującą. Bartosz Bogacki.

Wykład 1 Wiadomości wstępne

Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne

Zadanie analizy leksykalnej

11 Probabilistic Context Free Grammars

Algorytmy zapisywane w pseudojęzyku programowania. Klasa 2 Lekcja 6

Jerzy Nawrocki, Wprowadzenie do informatyki

Podstawy programowania w Pythonie

Języki, automaty i obliczenia

Zależności funkcyjne

MATEMATYKA DYSKRETNA, PODSTAWY LOGIKI I TEORII MNOGOŚCI

Rozwiązania około dwustu łatwych zadań z języków formalnych i złożoności obliczeniowej i być może jednego chyba trudnego (w trakcie tworzenia)

Definicje. Algorytm to:

Programowanie. Składnia języków programowania Dodatkowe notatki do zajęć

Imię, nazwisko, nr indeksu

Elementy kognitywistyki II: Sztuczna inteligencja. WYKŁAD IX: Agent przetwarza język naturalny

Matematyczne Podstawy Informatyki

Logika Matematyczna (1)

Algorytmy stochastyczne, wykład 05 Systemy Liendenmayera, modelowanie roślin

Wykład 5. Jan Pustelnik

Dopełnienie to można wyrazić w następujący sposób:

Nierówność Krafta-McMillana, Kodowanie Huffmana

R O Z D Z I A Ł I. Podstawowe pojęcia i ogólne twierdzenia lingwistyki matematycznej. 1. WyraŜenia, języki, gramatyki

Transkrypt:

Wprowadzenie do programowania języki i gramatyki formalne dr hab. inż. Mikołaj Morzy

plan wykładu wprowadzenie gramatyki podstawowe definicje produkcje i drzewa wywodu niejednoznaczność gramatyk hierarchia Chomsky'ego gramatyki kombinatoryczne gramatyki kontekstowe gramatyki bezkontekstowe gramatyki regularne notacja Backusa-Naura

język naturalny i język formalny język naturalny jest niejednoznaczny, elastyczny, pełen wyjątków, swobodny w konstrukcji zdań często znaczenie zależy od kontekstu lub odbiorcy język naturalny jest językiem zastanym komunikacja z komputerem musi być ścisła i jednoznaczna język programowania jest językiem formalnym język programowania jest językiem konstruowanym

Noam Chomsky językoznawca, filozof, działacz społeczny ojciec współczesnej lingwistyki twórca systematyki gramatyki angielskiej twórca hierarchii gramatyk i teorii gramatyki uniwersalnej wpłynął istotnie na informatykę, psychologię, socjologię, filozofię i językoznawstwo najczęściej cytowany żyjący naukowiec

co to jest gramatyka? nieformalnie, gramatyką możemy nazwać reguły generowania poprawnych i sensownych wyrażeń dla języka naturalnego może służyć do budowy zdań: <zdanie> <fraza rzeczownikowa> <fraza czasownikowa> <fraza rzeczownikowa> <przymiotnik> <fraza rzeczownikowa> <fraza rzeczownikowa> <rzeczownik> <fraza czasownikowa> <czasownik> <rzeczownik> chłopiec <przymiotnik> wysoki <przymiotnik> szczupły <czasownik> gwiżdże poprawne zdanie: niepoprawne zdanie: szczupły wysoki chłopiec gwiżdże gwiżdże szczupły chłopiec

do czego przydają się gramatyki? gramatyki są wykorzystywane powszechnie w informatyce do definiowania języków programowania do automatycznego sprawdzania poprawności składni do refaktoryzacji kodu źródłowego do upraszczania kodu źródłowego w trakcie translacji przykład użytecznej gramatyki język wyrażeń regularnych

podstawowe definicje alfabetem nazywamy dowolny skończony i niepusty zbiór symboli A={a 1,,a n } słowem nad alfabetem A nazywamy dowolny skończony ciąg złożony z elementów alfabetu A szczególnym przypadkiem jest słowo puste ε zbiór wszystkich słów nad alfabetem A oznaczamy przez A * język nad alfabetem A to dowolny podzbiór A * przykład A={a}, A * = ε, a, aa, aaa, aaaa, A={a,b}, A * = ε, a, b, aa, ab, ba, bb, aaa, aab, aba,

podstawowe definicje gramatyką nazywamy uporządkowaną czwórkę <N, T, P, S> N: zbiór symboli pomocniczych (nieterminalnych) T: zbiór symboli końcowych (terminalnych) P: zbiór produkcji, P: X w gdzie X N, w (N T) * S: wyróżniony symbol pomocniczy zwany aksjomatem gramatyki przykład G=<{S}, {a}, {S ε, S aas}, S> co generuje gramatyka G?

produkcje pojedyncza produkcja określa sposób zamiany symbolu pomocniczego X na słowo, w skład którego wchodzą symbole pomocnicze symbole końcowe proces wyprowadzania słów języka przez produkcje 1. rozpocznij od aksjomatu S gramatyki 2. zastosuj produkcję P do symbolu pomocniczego X 3. powtarzaj (2) aż w słowie występować będą jedynie symbole końcowe

gramatyka i język słowo uzyskane z aksjomatu S gramatyki G przez zastosowanie jednej lub wielu produkcji P nazywamy słowem wyprowadzalnym z gramatyki G zbiór wszystkich słów wyprowadzalnych z gramatyki G nazywamy językiem generowanym przez gramatykę G i oznaczamy za pomocą L(G)={w w T * S w} przykład G 1 =<{S},{a,b},{S ε, S asa, S bsb},s> język L(G 1 )= ε, aa, bb, abba, babbab, alternatywna notacja: S ε asa bsb G 2 =<{S},{a},{S ε, S aas},s> język L(G 2 )=???

drzewa wywodu korzeniem drzewa wywodu jest zawsze aksjomat gramatyki. jeśli do symbolu pomocniczego X zastosowano produkcję X x 1,,x n, to elementy x 1,,x n stają się potomkami węzła X każdy węzeł drzewa ma etykietę ze zbioru N T {ε} jeśli węzeł nie jest liściem i ma etykietę A, to A N etykietą korzenia jest aksjomat S jeśli węzeł ma etykietę A i węzły x 1,,x n są następnikami węzła x, w kolejności od lewej do prawej, z etykietami A 1,,A n to A A 1 A n musi być produkcją gramatyki G

przykład drzewa wywodu gramatyka G 1 =<{S},{a,b},{S ε, S asa, S bsb},s> słowo abba wywód liniowy S asa absba abεba abba drzewo wywodu S a S a b S b ε

zadanie samodzielne mając daną poniższą gramatykę i słowo wynikowe, zbuduj drzewo wywodu gramatyka G=<{S},{a,b,c,+,-,*,/,(,)}, P, S> produkcje słowo P={S a b c S+S S-S S*S S/S (S)} a * b + c

niejednoznaczność gramatyk prosta gramatyka generująca wszystkie naprzemienne sekwencje liter a i b kończące się literą b. G=<{S},{a,b},{S ε, S SaS, S b},s> pytanie: ile istnieje wywodów poprawności słowa babab? w notacji liniowej istnieje 12 sposobów, np. S SaS SaSaS SaSab basab babab S SaS Sab SaSab Sabab babab w notacji drzew wywodu istnieją tylko dwa drzewa (lewostronne i prawostronne) istnieje też gramatyka jednoznaczna G'=<{S},{a,b},{S ε, S bas, S b},s>

niejednoznaczność gramatyk każde drzewo wywodu posiada dokładnie jeden wywód lewostronny i jeden wywód prawostronny sposób generowania słowa wpływa na semantykę symbole nieterminalne gramatyki powinny odpowiadać konstrukcjom semantycznie znaczącym sposób generowania słowa nie wpływa na język jako zbiór słów niejednoznaczność jest dużą przeszkodą w formułowaniu semantyki języka Adam wszedł do pokoju z pianinem Adam wszedł do pokoju z pomysłem Adam wszedł do pokoju z kurtką

gramatyki jednoznaczne gramatyka G jest jednoznaczna, jeśli każde słowo wyprowadzalne z gramatyki G posiada jedno i tylko jedno drzewo wywodu jednoznaczność gramatyk pozwala definiować semantykę jako funkcję obliczaną na podstawie drzewa wywodu kompilatory języków programowania wymagają gramatyk ściśle jednoznacznych gramatyka G jest zgodna z językiem L T * jeśli każde słowo wyprowadzalne z G należy także do L gramatyka G jest pełna względem języka L, jeśli wszystkie słowa należące do L są wyprowadzalne z G

zadanie samodzielne podaj gramatykę jednoznaczną dla poprzedniego przykładu, posłuż się nieterminalnymi symbolami o znaczeniu semantycznym (aksjomatem jest W) S: składnik W: wyrażenie C: czynnik

hierarchia Chomsky'ego typ 0 (gramatyka bez ograniczeń) każda produkcja jest postaci u w, u (N T)+, w (N T) * typ 1 (gramatyka kontekstowa) każda produkcja jest postaci uaw uzw, u,w (N T) *, A N typ II (gramatyka bezkontekstowa) każda produkcja jest postaci A z, A N, z (N T) + typ III (gramatyka regularna) każda produkcja jest postaci A bb i A Bb, A N, B N {ε}, b T + gramatyki 1-3 są nieskracające i rozstrzygalne wyższe typy mają silniejsze ograniczenia na produkcje

gramatyki typu 0: bez ograniczeń języki generowane przez gramatyki bez ograniczeń (gramatyki kombinatoryczne) to języki rekurencyjnie przeliczalne dla języków rekurencyjnie przeliczalnych problem określenia, czy dane słowo jest wyprowadzalne z gramatyki, jest nierozstrzygalny

gramatyki typu 1: kontekstowe dla każdej gramatyki kontekstowej można znaleźć odpowiadającą jej gramatykę, w której wszystkie produkcje mają postać a 1 Xa 2 a 1 βa 2, gdzie X N nieterminal X może zostać zamieniony na łańcuch β tylko w lewostronnym kontekście a 1 i prawostronnym kontekście a 2 dla gramatyk i języków kontekstowych problem wyprowadzalności słowa z gramatyki jest rozstrzygalny

gramatyki typu 2: bezkontekstowe gramatyki bezkontekstowe służą do opisywania praktycznie wszystkich języków programowania w gramatykach bezkontekstowych wszystkie produkcje mają postać X β, gdzie X N nieterminal X może zostać zamieniony na łańcuch β w dowolnym momencie, bez uwzględniania kontekstu dla gramatyk i języków bezkontekstowych problem wyprowadzalności słowa z gramatyki jest rozstrzygalny

gramatyki typu 3: regularne gramatyki regularne mogą być lewostronnie regularne: produkcje X by b, X,Y N, b T * prawostronnie regularne: produkcje X Yb b, X,Y N, b T * dla gramatyk i języków regularnych problem wyprowadzalności słowa z gramatyki jest rozstrzygalny

klasyfikacja Chomsky'ego (podsumowanie) każda gramatyka typu i jest jednocześnie typu j, j i każdy język generowany przez gramatykę typu i jest też generowany przez gramatyki niższych typów bez ograniczeń kontekstowe bezkontekstowe regularne

przykłady typów gramatyk zadanie: zbudowanie gramatyk generujących ciągi o postaci aaa bbb ccc, czyli a k b l c m typ 0 G=<{S,V,U}, {a,b,c}, {S as av, V bv bu, U cu c}, S> typ 1 G=<{S,V}, {a,b,c}, {S asc avc, V Vb b}, S> typ 2 G=<{S,U}, {a,b,c}, {S abc asuc, cu Uc, bu bb}, S>

zadanie samodzielne dana jest gramatyka G=<{S,X,Y}, {a,b,c}, {S c abxby, X cab YaX, Y aa Sb}, S> przedstaw wywód i drzewo wywodu słowa abcbacabbaa

zadanie samodzielne zdefiniuj gramatykę generującą liczby całkowite (dowolne ciągi cyfr dziesiętnych, które mogą być poprzedzone pojedynczym znakiem + lub dla zdefiniowanej gramatyki pokaż przykładowe wyprowadzenie liczby -100

zadanie samodzielne dana jest gramatyka G=<{S,X}, {a,b}, {S axs a, X sbx SS ba}, S> przedstaw wywód i drzewo wywodu słowa abcbacabbaa

notacja Backusa-Naura (BNF) notacja Backusa-Naura (ang. Backus Naur Form) została opracowana przez J. Backusa i P. Naura w trakcie prac nad językami Algol i Fortran jest to alternatywa dla notacji algebraicznej BNF upraszcza produkcje posiadające wspólny poprzednik elementy notacji symbole nieterminalne ujęte w nawiasy < > strzałka reprezentowana przez symbol ::= alternatywne wyprowadzenia oddzielone symbolem elementy opcjonalne ujęte w nawiasy [ ] powtórzenia ujęte w nawiasy { } n 0 i { } n 1

przykład notacji BNF gramatyka podstawowych wyrażeń algebraicznych G=<{S,W,C}, {a,b,c,+,-,*,/,(,)}, P, W> P={W S W+S W-S, S C S*C S/C, C a b c (W)} zapis w notacji BNF <wyrażenie> ::= <składnik> <wyrażenie> + <składnik> <wyrażenie> - <składnik> <składnik> ::= <czynnik> <składnik> * <czynnik> <składnik> / <czynnik> <czynnik> ::= a b c (<wyrażenie>)

zadanie samodzielne opisz język generowany przez poniższą gramatykę G = <{Q,X,Y,Z}, {n,o,s,w}, P, Z> P = { Z ny, Y osx, X wsq, Q osz, Q os } podaj najprostszą gramatykę regularną generującą ten język

zadanie samodzielne zbuduj gramatykę bezkontekstową generującą zbiór wszystkich palindromów nad alfabetem {a, n} zbuduj gramatykę regularną nad alfabetem {b, c} dla języka, w którego słowach występują kolejno trzy litery c zbuduj gramatykę regularną nad alfabetem {b, c, d} dla języka, w którego słowach po każdej literze b pojawia się litera c zbuduj gramatykę regularną nad alfabetem {b, c, d} dla języka, w którym nie występują podsłowa bc