2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

Podobne dokumenty
Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

Gramatyki rekursywne

Języki formalne i automaty Ćwiczenia 1

Hierarchia Chomsky ego

Hierarchia Chomsky ego Maszyna Turinga

Matematyczne Podstawy Informatyki

JAO - Wprowadzenie do Gramatyk bezkontekstowych

3.4. Przekształcenia gramatyk bezkontekstowych

Języki, automaty i obliczenia

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

Języki formalne i automaty Ćwiczenia 3

GRAMATYKI BEZKONTEKSTOWE

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

Wprowadzenie do analizy składniowej. Bartosz Bogacki.

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

Języki formalne i automaty Ćwiczenia 2

Języki formalne i automaty Ćwiczenia 9

Efektywna analiza składniowa GBK

Matematyczne Podstawy Informatyki

Języki, automaty i obliczenia

Gramatyka operatorowa

Języki formalne i automaty Ćwiczenia 4

Lingwistyka Matematyczna Języki formalne i gramatyki Analiza zdań

0.1 Lewostronna rekurencja

JAO - lematy o pompowaniu dla jezykow bezkontekstowy

Symbol, alfabet, łańcuch

JIP. Analiza składni, gramatyki

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

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

JĘZYKI FORMALNE I METODY KOMPILACJI

Maszyna Turinga języki

Języki i gramatyki formalne

Obliczenia inspirowane Naturą

Języki formalne i automaty Ćwiczenia 7

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

Analizator syntaktyczny

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

Imię, nazwisko, nr indeksu

JĘZYKIFORMALNE IMETODYKOMPILACJI

Języki, automaty i obliczenia

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, δ)

Obliczenia inspirowane Naturą

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

Jaki język zrozumie automat?

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

Obliczenia inspirowane Naturą

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

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

(j, k) jeśli k j w przeciwnym przypadku.

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

10. Translacja sterowana składnią i YACC

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

Przykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11}

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

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

złożony ze słów zerojedynkowych o długości co najmniej 3, w których druga i trzecia litera od końca sa

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

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

Języki formalne i automaty Ćwiczenia 8

11 Probabilistic Context Free Grammars

AUTOMATY SKOŃCZONE. Automat skończony przedstawiamy formalnie jako uporządkowaną piątkę:

1 X-gramatyki, Hierarchia Chomsky ego

JĘZYKI FORMALNE I METODY KOMPILACJI

Języki formalne i automaty Ćwiczenia 6

Zadanie analizy leksykalnej

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

Języki, automaty i obliczenia

Klasyczne i kwantowe podejście do teorii automatów i języków formalnych p.1/33

Obliczenia inspirowane Naturą

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

Paradygmaty dowodzenia

1 Zbiory. 1.1 Kiedy {a} = {b, c}? (tzn. podać warunki na a, b i c) 1.2 Udowodnić, że A {A} A =.

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

- Dla danego zbioru S zbiór wszystkich jego podzbiorów oznaczany symbolem 2 S.

Rekurencyjna przeliczalność

Gramatyki regularne i automaty skoczone

Obliczanie. dr hab. inż. Joanna Józefowska, prof. PP 1

Lista 5 Gramatyki bezkontekstowe i automaty ze stosem

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

Schematy Piramid Logicznych

1 Zbiory i działania na zbiorach.

Wykład 5. Jan Pustelnik

Układy równań liniowych

JĘZYKI FORMALNE I METODY KOMPILACJI

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

Złożoność obliczeniowa

Analiza semantyczna. Gramatyka atrybutywna

1. Maszyna Turinga, gramatyki formalne i ONP

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

Bisymulacja. Niezawodność systemów współbieżnych i obiektowych. Grzegorz Maj Grzegorz Maj Bisymulacja

Ciągłość funkcji f : R R

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)

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

Języki formalne i automaty Ćwiczenia 5

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

Niech X bȩdzie dowolnym zbiorem. Dobry porz adek to relacja P X X (bȩdziemy pisać x y zamiast x, y P ) o w lasnościach:

Zadania z analizy matematycznej - sem. I Granice funkcji, asymptoty i ciągłość

Algorytmy genetyczne w automatycznym generowaniu gramatyk bezkontekstowych dla potrzeb syntaktycznej interpretacji wzorców

Języki regularne, rozpoznawanie wzorców regularnych, automaty skończone, wyrażenia regularne

Ćwiczenia: Ukryte procesy Markowa lista 1 kierunek: matematyka, specjalność: analiza danych i modelowanie, studia II

Transkrypt:

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego Gramatyka Gramatyką G nazywamy czwórkę uporządkowaną G = <N, T, P, Z> gdzie: N zbiór symboli nieterminalnych, T zbiór symboli terminalnych, P zbiór produkcji, z których każda ma postać α β Z N wyróżniony symbol początkowy (nieterminal) przy czym P (N T) + (N T) * P = { α β α (N T) +, β (N T) * } Wyprowadzalność Słowo ψ jest wyprowadzalne bezpośrednio ze słowa ω w gramatyce G, co zapisujemy jeżeli: ω G ψ ω = γαδ ψ = γβδ (α β) P α, β, γ, δ, ψ, ω (N T) * Słowo ψ jest wyprowadzalne ze słowa ω w gramatyce G, co zapisujemy ω + G ψ jeżeli istnieją φ 0, φ 1,...,φ n (N T) * takie, że: φ 0 = ω φ n = ψ φ i-1 G φ i dla i = 1, 2,..., n Sekwencję φ 0, φ 1,...,φ n nazywamy wyprowadzeniem o długości n. Definiujemy ponadto: ( ω * G ψ ) ( ω + G ψ ) ( ω = ψ ) Relacje + G oraz * G są odpowiednio przechodnim oraz przechodnim i zwrotnym domknięciem relacji bezpośredniej wyprowadzalności G. Jeżeli wiadomo, o jaką gramatykę chodzi, pomijamy dolny indeks G w oznaczeniu tych relacji pisząc po prostu: +, * oraz.

Język generowany przez gramatykę Gramatyka jest jednym ze sposobów definiowania języka formalnego. Mając daną gramatykę G oznaczamy przez L(G) zbiór wszystkich słów, które mogą być w tej gramatyce wyprowadzone z symbolu początkowego Z. Zbiór ten nazywamy językiem generowanym przez daną gramatykę. L(G) = { x T * Z * G x } Forma zdaniowa Łańcuch x (N T) * nazywamy formą zdaniową gramatyki G, jeśli można go wyprowadzić z symbolu początkowego Z. x (N T) * jest formą zdaniową Z * G x Uwaga: terminu słowo używamy w rozumieniu łańcucha zbudowane wyłącznie z symboli terminalnych x T * jest słowem Z * G x Hierarchia Chomsky ego Noam Chomsky zdefiniował cztery klasy gramatyk oraz cztery klasy języków formalnych. Klasy te numerowane są od 0 do 3. Klasa 0 Gramatykę G = <N, T, P, Z>, w której produkcje mają postać α β, gdzie α i β są dowolnymi łańcuchami symboli tej gramatyki, przy czym α ε nazywamy semi-gramatykami Thuego, gramatykami bez ograniczeń, gramatykami struktur frazowych, gramatykami kombinatorycznymi lub gramatykami klasy 0. Definicja gramatyk klasy 0, jak widać, nie nakłada żadnych ograniczeń na postać produkcji gramatyki w stosunku do ogólnej definicji gramatyki. Języki generowane przez gramatyki tego typu noszą nazwę języków rekurencyjnie przeliczalnych. Przez G KOMB oznaczymy klasę gramatyk kombinatorycznych, a przez L RP klasę języków rekurencyjnie przeliczalnych. Fundamentalny problem, który będzie później naszym głównym przedmiotem zainteresowania, mianowicie: czy słowo x należy do języka generowanego przez daną gramatykę, jest nierozstrzygalny dla języków generowanych przez gramatyki kombinatoryczne. Termin problem w uproszczeniu oznacza pytanie związane z jakimś wystąpieniem pewnych obiektów z pewnych klas (u nas tymi obiektami są dowolne gramatyki pewnego typu oraz dowolne słowa nad alfabetem definiowanym przez te gramatyki, zaś wystąpieniem obiektu będzie konkretne słowo i konkretna gramatyka), na które to pytania można udzielić odpowiedzi: TAK lub NIE. Termin nierozstrzygalny w uproszczeniu znaczy tyle: nie istnieje jednoznaczny deterministyczny algorytm, który dla każdego wystąpienia danego problemu w skończonej liczbie kroków dałby odpowiedź TAK,

jeżeli poprawna odpowiedź na pytanie związane z wystąpieniem rozważanego problemu brzmi TAK, oraz NIE, gdy poprawna odpowiedź brzmi NIE. Termin rozstrzygalny w uproszczeniu znaczy tyle: istnieje jednoznaczny deterministyczny algorytm, który dla każdego wystąpienia danego problemu w skończonej liczbie kroków dałby odpowiedź TAK, jeżeli poprawna odpowiedź na pytanie związane z wystąpieniem rozważanego problemu brzmi TAK, oraz NIE, gdy poprawna odpowiedź brzmi NIE. Problem: czy x L(G) jest nierozstrzygalny dla G G KOMB. Klasa 1 Gramatykę G = <N, T, P, Z>, w której produkcje mają postać α β, gdzie α i β są takimi łańcuchami symboli tej gramatyki, że łańcuch β jest przynajmniej tak długi jak łańcuch α ( α β ) oraz dodatkowo dopuszczona jest produkcja Z ε, jeśli język zawiera słowo puste, nazywamy gramatykami kontekstowymi, gramatykami monotonicznym, gramatykami nieskracającymi lub gramatykami klasy 1. Termin kontekstowy pochodzi od tego, że dla każdej gramatyki monotonicznej można znaleźć równoważną jej (tzn. generującą ten sam język) gramatykę, której produkcje (z wyjątkiem ewentualnej produkcji Z ε) mają postać α 1 Aα 2 α 1 βα 2 gdzie A jest nieterminalem (A N), zaś α 1, α 2, β są dowolnymi łańcuchami symboli gramatyki, przy czym β ε. Produkcje o tej postaci pozwalają na zastąpienie nieterminala A łańcuchem β tylko w lewostronnym kontekście α 1 i prawostronnym kontekście α 2. Języki generowane przez gramatyki tego typu noszą nazwę języków kontekstowych. Przez G K oznaczymy klasę gramatyk kontekstowych, a przez L K klasę języków kontekstowych. Problem: czy x L(G) jest rozstrzygalny dla G G K. G K G KOMB L K L RP Klasa 2 Gramatykę G = <N, T, P, Z>, w której produkcje mają postać A β, gdzie A jest nieterminalem (A N), zaś łańcuch β jest dowolnym łańcuchem symboli tej gramatyki nazywamy gramatykami bezkontekstowymi lub gramatykami klasy 2. Termin bezkontekstowy pochodzi od tego, że produkcje takiej gramatyki pozwalają na bezwarunkowe (bez uwzględniania kontekstu) zastąpienie nieterminala A łańcuchem β. Języki generowane przez gramatyki tego typu noszą nazwę języków bezkontekstowych. Przez G BK oznaczymy klasę gramatyk kontekstowych, a przez L BK klasę języków kontekstowych. Problem: czy x L(G) jest rozstrzygalny dla G G BK. G BK G K G KOMB

L BK L K L RP Klasa gramatyk bezkontekstowych jest chyba najważniejszą (z naszego punktu widzenia) klasą gramatyk, gdyż za pomocą gramatyk tej klasy opisuje się składnię większości języków programowania. Klasa 3 Gramatykę G = <N, T, P, Z>, w której każda produkcja ma postać A xb lub A x gdzie A i B są nieterminalami (A,B N), zaś łańcuch x jest dowolnym łańcuchem symboli terminalnych tej gramatyki (x T * ) nazywamy gramatyką prawostronnie liniową. Gramatykę G = <N, T, P, Z>, w której każda produkcja ma postać A Bx lub A x gdzie A i B są nieterminalami (A,B N), zaś łańcuch x jest dowolnym łańcuchem symboli terminalnych tej gramatyki (x T * ) nazywamy gramatyką lewostronnie liniową. Gramatyki prawostronnie liniowe i lewostronnie liniowe nazywamy gramatykami liniowymi, gramatykami regularnymi lub gramatykami klasy 3. Języki generowane przez gramatyki tego typu noszą nazwę języków regularnych. Przez G RG oznaczymy klasę gramatyk regularnych, a przez L RG klasę języków regularnych. Problem: czy x L(G) jest rozstrzygalny dla G G RG. G RG G BK G K G KOMB L RG L BK L K L RP Klasa gramatyk regularnych jest także bardzo ważną (z naszego punktu widzenia) klasą gramatyk, gdyż za pomocą gramatyk tej klasy opisuje się składnię większości podstawowych elementów leksykalnych (słownikowych) języków programowania (takich jak identyfikatory, stałe numeryczne, stałe tekstowe, komentarze, operatory, itd. Przykład: Rozważymy gramatykę G = <N, T, P, Z>, w której: N = {S, A, B, C, D, E, F, G} T = {a, b, c} P = { } Z = S S AbC ad AE abc abc A a B b bc bc D bc ae abfcg F ε bcg bc

Ta gramatyka jest gramatyką kombinatoryczną (klasy 0 w lewych stronach produkcji występują dowolne łańcuchy symboli, są dwie produkcje skracające) i równocześnie nie jest gramatyką żadnej węższej klasy. Język przez nią generowany jest oczywiście językiem rekurencyjnie przeliczalnym. Zbadajmy, jakie słowa są generowane przez tę gramatykę. S AbC abc abc S ad abc S AE ae abfcg abcg abc S abc abc S abc Widać, że jedynym słowem generowanym przez tę gramatykę jest abc. Dla języka L = { abc } można zbudować znacznie prostszą gramatykę G 1 = <N 1, T, P 1, Z>, w której: N 1 = {S} T = {a, b, c} P 1 = { S abc } Z = S Gramatyka G 1 należy do klasy 3 gramatyk regularnych. Ponieważ L = L(G) = L(G 1 ) więc język L należy do klasy języków regularnych, mimo że może być wygenerowany przez gramatykę znacznie szerszej klasy (gramatykę bez ograniczeń). Uwaga: zawsze interesować nas będzie najwęższa klasa, do której należy badany język.