Gramatyki regularne i automaty skoczone

Podobne dokumenty
Wprowadzenie do kompilatorów

Syntactic Pattern Recognition. Anna Kuchna Maciej arnowski

Maszyny Turinga i problemy nierozstrzygalne. Maszyny Turinga i problemy nierozstrzygalne

Wprowadzenie do analizy składniowej. Bartosz Bogacki.

Języki formalne i automaty Ćwiczenia 9

Języki formalne i automaty Ćwiczenia 1

Równowano modeli oblicze

JĘZYKI FORMALNE I METODY KOMPILACJI

Efektywna analiza składniowa GBK

Języki formalne i automaty Ćwiczenia 7

JAO - Wprowadzenie do Gramatyk bezkontekstowych

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

JĘZYKIFORMALNE IMETODYKOMPILACJI

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

Sposoby przekazywania parametrów w metodach.

Matematyczne Podstawy Informatyki

Gramatyki, wyprowadzenia, hierarchia Chomsky ego. Gramatyka

2.2. Gramatyki, wyprowadzenia, hierarchia Chomsky'ego

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

Podstawy Informatyki Gramatyki formalne

Teoretyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki

Języki formalne i automaty Ćwiczenia 4

Języki i gramatyki formalne

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

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

Języki formalne i automaty Ćwiczenia 3

Zadanie analizy leksykalnej

10. Translacja sterowana składnią i YACC

Projektowanie algorytmów rekurencyjnych

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

GRAMATYKI BEZKONTEKSTOWE

Plan wykładu. Kompilatory. Literatura. Translatory. Literatura Translatory. Paweł J. Matuszyk

Języki programowania zasady ich tworzenia

JĘZYKI FORMALNE I METODY KOMPILACJI

Generatory analizatorów

Języki formalne i automaty Ćwiczenia 2

Optymalizacja oprogramowania - wprowadzenie

Języki formalne i automaty Ćwiczenia 8

Gramatyki atrybutywne

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

Relacj binarn okre±lon w zbiorze X nazywamy podzbiór ϱ X X.

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

Obliczenia inspirowane Naturą

Metody Kompilacji Wykład 1 Wstęp

Gramatyki rekursywne

Logika dla matematyków i informatyków Wykªad 1

Imię, nazwisko, nr indeksu

Języki, automaty i obliczenia

Włączenie analizy leksykalnej do analizy składniowej jest nietrudne; po co więc jest wydzielona?

Obiektowa implementacja parsera klasy LL(1)

MODELOWANIE I PROGRAMOWANIE PRACY

Jaki język zrozumie automat?

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

Analiza semantyczna. Gramatyka atrybutywna

A = n. 2. Ka»dy podzbiór zbioru sko«czonego jest zbiorem sko«czonym. Dowody tych twierdze«(elementarne, lecz nieco nu» ce) pominiemy.

Bazy danych. Plan wykładu. Metody organizacji pliku rekordów. Pojcie indeksu. Wykład 11: Indeksy. Pojcie indeksu - rodzaje indeksów

Hierarchia Chomsky ego Maszyna Turinga

Temat: Geometria obliczeniowa cz II. Para najmniej odległych punktów. Sprawdzenie, czy istnieje para przecinajcych si odcinków.

Analiza leksykalna 1. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

KLASYCZNE ZDANIA KATEGORYCZNE. ogólne - orzekaj co± o wszystkich desygnatach podmiotu szczegóªowe - orzekaj co± o niektórych desygnatach podmiotu

Temat: Programowanie zdarzeniowe. Zdarzenia: delegacje, wykorzystywanie zdarze. Elementy Windows Application (WPF Windows Presentation Foundation).

Semantyka i Weryfikacja Programów - Laboratorium 6

Języki, automaty i obliczenia

Podstawy generatora YACC. Bartosz Bogacki.

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

Temat: Liniowe uporzdkowane struktury danych: stos, kolejka. Specyfikacja, przykładowe implementacje i zastosowania. Struktura słownika.

Metody Kompilacji Wykład 7 Analiza Syntaktyczna

Wyrażenie nawiasowe. Wyrażenie puste jest poprawnym wyrażeniem nawiasowym.

Obliczenia inspirowane Naturą

Testy zgodnoci w diagnozowaniu systemów alarmowych

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

Języki formalne i gramatyki

Wykład 10. Translacja sterowana składnią

Planowanie adresacji IP dla przedsibiorstwa.

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

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

Wprowadzenie do algorytmów. START

Programowanie Obiektowe

Problem decyzyjny naley do klasy NP. (Polynomial), jeeli moe by rozwizany w czasie conajwyej wielomianowym przez algorytm A dla DTM.

Metodologie programowania

3.4. Przekształcenia gramatyk bezkontekstowych

Bazy danych Podstawy teoretyczne

Podstawowe obiekty AutoCAD-a

Podstawy Kompilatorów

ZADANIA Z AUTOMATU SKOŃCZONEGO SPRAWOZDANIE NR 4

Paradygmaty i języki programowania. Analiza leksykalna Skaner, RE, DAS, NAS, ε- NAS

{Opracowała Małgorzata Roguska} Tematy lekcji:

JIP. Analiza składni, gramatyki

L E X. Generator analizatorów leksykalnych

Uniwersytet Warszawski Wydziaª Matematyki, Informatyki i Mechaniki

Języki formalne i automaty Ćwiczenia 6

Proces tworzenia programu:

Program We Kompilator Wy Źródłowy

Bazy danych. Plan wykładu. Podzapytania - wskazówki. Podzapytania po FROM. Wykład 5: Zalenoci wielowartociowe. Sprowadzanie do postaci normalnych.

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

Temat: Problem najkrótszych cieek w grafach waonych, cz. I: Algorytmy typu label - setting.

0.1 Lewostronna rekurencja

Teoria układów logicznych

Programowanie C# mgr in. Dariusz Ku. p. 119A

Transkrypt:

Gramatyki regularne i automaty skoczone Alfabet, jzyk, gramatyka - podstawowe pojcia Co to jest gramatyka regularna, co to jest automat skoczony? Gramatyka regularna Gramatyka bezkontekstowa Translacja PobieranieZnaków Leksykalny PobieranieSymboli Składniowy Komunikaty TablicaSymboli GeneracjaKodu TablicaSymboli, Gdzie jestemy? Gramatyka okrela poprawne zdania w danym jzyku. Jzyk dla analizatora leksykalnego okrela wszystkie poprawne cigi znaków tworzcych pojedyncze leksemy. PobieranieZnaków Leksykalny Jzyk dla analizatora składniowego okrela wszystkie poprawne cigi leksemów. Gramatyki regularne słu przede wszystkim do definiowania jzyków dla analizatorów leksykalnych. Zdanie w jzyku analizatora leksykalnego Zdanie w jzyku analizatora składniowego PobieranieSymboli Składniowy skoczone 1

Alfabety i zdania Podstawowe definicje: Alfabet (słownik) to nie uporzdkowany zbiór symboli. Zdanie (cig symboli) to skoczona sekwencja złoona z symboli alfabetu (symboli terminalnych). Zdanie puste (ozn. ) to zdanie nie zawierajce adnych symboli. Długo zdania (ozn. ) to liczba symboli, z których si ono składa. Zbiór wszystkich moliwych zda alfabetu oznaczamy przez +. Zbiór + wraz ze zdaniem pustym oznaczamy przez * ( * = + U). Wane pytania: Jaki jest alfabet dla analizatora leksykalnego? Jaki jest alfabet dla analizatora składni? Jzyki i gramatyki Jzyk L okrelony dla alfabetu stanowi podzbiór zboru * : L * Złoeniem (konkatenacj) dwóch jzyków L 1 i L 2 jest zbiór napisów : L 1 L 2 = { L 1 i L 2 } Gramatyka G definiuje jzyk L(G) nad alfabetem. Definicja ta polega na okreleniu wszystkich moliwych napisów jzyka (zda). Nie wypisujemy jednak wszystkich moliwych napisów (moe ich by nieskoczenie duo). Zamiast tego opisujemy proces wyprowadzania napisów jzyka. Wane pytania: Co opisuje jzyk dla analizatora leksykalnego? Co opisuje jzyk dla analizatora składni? skoczone 2

Alfabety i jzyki a struktura kompilatora Wane: alfabet i jzyk dla analizatora leksykalnego (a.l.) i składniowego (a.s.) s róne: Symbole terminalne dla a.l. to znaki ze strumienia wejciowego. Symbole terminalne dla a.s. to leksemy produkowane przez a.l. Translacja PobieranieZnaków Leksykalny PobieranieSymboli Składniowy Komunikaty TablicaSymboli GeneracjaKodu TablicaSymboli Definicja gramatyki Gramatyka G to uporzdkowana czwórka G=(,, S, P), gdzie: to zbiór symboli terminalnych (symboli alfabetu, z których składaj si napisy jzyka L(G)) to zbiór symboli nieterminalnych (zmiennych składniowych), przy czym = O S jest symbolem startowym nalecym do zbioru P jest zbiorem tzw. produkcji (reguł przepisywania) Jzyk L(G) zdefiniowany gramatyk G jest zbiorem napisów składajcych si z symboli terminalnych. Napisy te mona wyprowadzi z symbolu startowego przy pomocy szeregu przepisa zdefiniowanych przez zbiór produkcji. Zbiór symboli nieterminalnych stanowi zbiór zmiennych umoliwiajcych zdefiniowanie reguł przepisywania (produkcji), czyli zdefiniowanie składni jzyka. skoczone 3

Produkcje Produkcja to uporzdkowana para napisów (s, t), nalecych do zbioru ( U)*. Produkcje zapisujemy z postaci s t. Napis ten oznacza, e napis s mona przepisa w napis t. Generowanie (lub sprawdzanie poprawnoci składniowej) napisu jzyka z symbolu startowego S polega na stosowaniu kolejnych produkcji zawartych w definicji gramatyki. Taki cig produkcji nazywamy wyprowadzeniem (sekwencj wyprowadzenia) dla tego napisu jzyka. Napis g jest bezporednio wyprowadzalny z napisu p (p=>g) jeeli istnieje produkcja A b, taka, e istniej napisy t,u takie, e p=tau i g=tbu. Napis g jest wyprowadzalny z napisu p (p=>+g), jeeli istnieje sekwencja r 0...r n, takich, e p=>r 0 =>... =>r n =>g. Dodatkowo, jeli p=>+g lub p=g to piszemy p=>*g. Przykłady gramatyk Jakie jzyki opisuj te gramatyki? Podaj przykładowe wyprowadzenia. Gramatyka pierwsza: = {+, *, (, ), i} = {E, T, F} S = E P = {E T, E E+T, T F, T T*F, F i, F (E)} Gramatyka druga: = {n,., +, -, E} = {C, F, I, X, S, U} S = C P = {C n, C nf, C.I, F.I, F ES, I n, I nx, X ES, S n, S +U, S -U, U n} skoczone 4

Gramatyki regularne Druga z powyszych gramatyk jest gramatyk regularn. Gramatyka regularna jest to taka gramatyka, dla której kada produkcja jest postaci A v lub postaci A vb, gdzie A,B nale do zbioru, a v naley do zbioru (lub do zbioru U dla postaci A v). Pierwsza gramatyka z poprzedniego slajdu jest gramatyk bezkontekstow (patrz nastpne wykłady). Czy zdefiniowany w ten sposób jzyk da si przedstawi za pomoc gramatyki regularnej? Gramatyki regularne s szczególnym przypadkiem gramatyk bezkontekstowych. Wyrónia je si dlatego, e metody analizy przy pomocy gramatyk regularnych s znacznie mniej złoone i kosztowne. Niestety, nie wszystkie jzyki da si w ten sposób opisa. Gramatyki i automaty Analizujc zdania jakiego jzyka, kompilator dokonuje rozbioru gramatycznego. Rozbiór ten nastpuje zgodnie z gramatyk, któr moemy opisa w sposób formalny jak na poprzednich slajdach. Fragment kompilatora dokonujcy rozbioru gramatycznego jest pewnego rodzaju automatem rozpoznajcym zdania. Postulat: opracowa technik automatycznego generowania takich automatów rozpoznajcych. Rozwizanie: algorytmy przekształcania gramatyk regularnych w automaty skoczone oraz gramatyk bezkontekstowych w automaty ze stosem. a+b*7 Rozbiór gramatyczny (np. drzewo) skoczone 5

Automaty skoczone Automat skoczony to uporzdkowana pitka A=(T, Q, R, q 0, F), gdzie: Q jest niepustym zbiorem stanów wewntrznych; T (rozłczny z Q) jest zbiorem symboli terminalnych; R jest zbiorem produkcji o postaci qt q, gdzie q i q nale do Q, a t naley do T; q 0 jest stanem pocztkowym nalecym do Q; F jest zbiorem stanów kocowych nalecych do Q (jest podzbiorem Q). Automat skoczony jest maszyn, która czyta wejciowy napis po jednym znaku i zmienia swój wewntrzny stan po przetworzeniu kadego symbolu (zgodnie ze zbiorem produkcji). Uwaga: dla kadej gramatyki regularnej G istnieje automat skoczony A taki, e L(A) = L(G). Przykładowy automat skoczony Przedstawiony tu automat odpowiada przykładowej gramatyce regularnej pokazanej kilka slajdów temu. Q = {C, F, I, X, S, U, q}; T = {n,., +, -, E} R = {Cn q, Cn F, C. I, F. I, FE S, In q, In X, XE S, Sn q, S+ U, S- U, Un q} q 0 = C; F = {q} Ten automat (jak równie ten z nastpnego slajdu) został przekształcony z przykładowej gramatyki w sposób automatyczny (istnieje odpowiedni algorytm, którego opis tu pominiemy). Automat ten jest niezbyt przydatny w praktyce, gdy jest niedeterministyczny... Wane pytanie: Czy automat skoczony (np. taki jak powyej) da si narysowa graficznie? skoczone 6

Automat deterministyczny Automat jest deterministyczny, jeeli kade wyprowadzenie moe by kontynuowane w co najwyej jednym ruchu. Automat deterministyczny dla tego samego jzyka co poprzednio: Q = {q 0, q 1, q 2, q 3, q 4, q 5, q 6 }; T = {n,., +, -, E} R = {q 0 n q 1, q 0. q 2, q 1. q 2, q 1 E q 3, q 2 n q 4, q 3 n q 5, q 3 + q 6, q 3 - q 6, q 4 E q 3, q 6 n q 5 } F = {q 1, q 4, q 5 } Automaty skoczone mog by przedstawiane graficznie za pomoc grafu skierowanego. W wzłach grafu umieszczamy stany automatu, a na krawdziach - symbole terminalne powodujce odpowiednie zmiany stanów (okrelone w zbiorze R). Taki graf nazywamy diagramem stanów. Wane pytanie: Jak zrealizowa automat skoczony w strukturze kompilatora? Struktura automatu skoczonego Automat skoczony ma wzły (stany automatu) i przejcia (produkcje). Wane: Porównaj struktur automatu w jzyku UML z definicj automatu podan trzy slajdy temu. ZarzdcaaLeksykalnego + PodajSymbol() : LekSem + Rozpocznij(nazwa :String) : void Graf + od_pocztku() : void + przejd(z ) : int -pocztkowy WzełGrafu 1 1 - typ: int -aktualny 1 1 + przejd(z ) : int 1 1 +docelowy 0..* -wychodzce 0..* KrawdGrafu - opis_krawdzi: String + czy_mona_przej(znak ) : Wzeł skoczone 7

wiczenie Prosz narysowa jeden lub kilka diagramów sekwencji ilustrujcych działanie automatu skoczonego. Kady diagram sekwencji powinien uwzgldnia konkretn sekwencj symboli terminalnych na wejciu (np. 0.5E6 ). Prosz uwzgldni pobieranie znaków ze strumienia wejciowego i przechodzenie pod wpływem tych znaków przez graf. Prosz krótko opisa diagram. Uwaga: mona przyj automat pokazany dwa slajdy temu lub inny (własny). skoczone 8