Gramatyki regularne i automaty skończone
Transkrypt
Gramatyki regularne i automaty skończone
J zyki formalne i kompilatory Modyfikacja: 2004-11-22 Gramatyki regularne i automaty sko czone Alfabet, j zyk, gramatyka - podstawowe poj cia Co to jest gramatyka regularna, co to jest automat sko czony? Gramatyka regularna Gramatyka bezkontekstowa Analizator PobieranieZnaków Analizator Leksykalny PobieranieSymboli Translacja Analizator Składniowy Komunikaty TablicaSymboli GeneracjaKodu TablicaSymboli J zyki formalne i kompilatory, © by Michał miałek Gdzie jeste my? Gramatyka okre la poprawne zdania w danym j zyku. J zyk dla analizatora leksykalnego okre la wszystkie poprawne ci gi znaków tworz cych pojedyncze leksemy. J zyk dla analizatora składniowego okre la wszystkie poprawne ci gi leksemów. Gramatyki regularne słu przede wszystkim do definiowania j zyków dla analizatorów leksykalnych. J zyki formalne i kompilatory Gramatyki regularne i automaty sko czone PobieranieZnaków :char :char :char :char Analizator Leksykalny :char :char Zdanie w j zyku analizatora leksykalnego PobieranieSymboli Zdanie w j zyku analizatora składniowego :Leksem :Leksem :Leksem :Leksem :Leksem Analizator Składniowy © by Michał miałek 1 J zyki formalne i kompilatory Modyfikacja: 2004-11-22 Alfabety i zdania Podstawowe definicje: Alfabet (słownik) to nie uporz dkowany zbiór symboli. Zdanie (ci g symboli) to sko czona sekwencja zło ona z symboli alfabetu (symboli terminalnych). Zdanie puste (ozn. ) to zdanie nie zawieraj ce adnych symboli. Długo zdania (ozn. | |) to liczba symboli, z których si ono składa. Zbiór wszystkich mo liwych zda alfabetu oznaczamy przez +. Zbiór + wraz ze zdaniem pustym oznaczamy przez * ( * = + U ). Wa ne pytania: Jaki jest alfabet dla analizatora leksykalnego? Jaki jest alfabet dla analizatora składni? J zyki formalne i kompilatory © by Michał miałek J zyki i gramatyki J zyk L okre lony dla alfabetu * L stanowi podzbiór zboru *: Zło eniem (konkatenacj ) dwóch j zyków L1 i L2 jest zbiór napisów : L1L2 = { | L1 i L2} Gramatyka G definiuje j zyk L(G) nad alfabetem . Definicja ta polega na okre leniu wszystkich mo liwych napisów j zyka (zda ). Nie wypisujemy jednak wszystkich mo liwych napisów (mo e ich by niesko czenie du o). Zamiast tego opisujemy proces „wyprowadzania” napisów j zyka. Wa ne pytania: Co opisuje j zyk dla analizatora leksykalnego? Co opisuje j zyk dla analizatora składni? J zyki formalne i kompilatory Gramatyki regularne i automaty sko czone © by Michał miałek 2 J zyki formalne i kompilatory Modyfikacja: 2004-11-22 Alfabety i j zyki a struktura kompilatora Wa ne: alfabet i j zyk dla analizatora leksykalnego (a.l.) i składniowego (a.s.) s ró ne: Symbole terminalne dla a.l. to znaki ze strumienia wej ciowego. Symbole terminalne dla a.s. to leksemy produkowane przez a.l. :Leksem :char Analizator PobieranieZnaków Analizator Leksykalny PobieranieSymboli Translacja Analizator Składniowy Komunikaty TablicaSymboli GeneracjaKodu TablicaSymboli J zyki formalne i kompilatory © by Michał miałek Definicja gramatyki Gramatyka G to uporz dkowana czwórka G=( , , S, P), gdzie: to zbiór symboli terminalnych (symboli alfabetu, z których składaj si napisy j zyka L(G)) to zbiór symboli nieterminalnych (zmiennych składniowych), przy czym =O S jest symbolem startowym nale cym do zbioru P jest zbiorem tzw. produkcji (reguł przepisywania) J zyk L(G) zdefiniowany gramatyk G jest zbiorem napisów składaj cych si z symboli terminalnych. Napisy te mo na wyprowadzi z symbolu startowego przy pomocy szeregu „przepisa ” zdefiniowanych przez zbiór produkcji. Zbiór symboli nieterminalnych stanowi zbiór „zmiennych” umo liwiaj cych zdefiniowanie reguł przepisywania (produkcji), czyli zdefiniowanie składni j zyka. J zyki formalne i kompilatory Gramatyki regularne i automaty sko czone © by Michał miałek 3 J zyki formalne i kompilatory Modyfikacja: 2004-11-22 Produkcje Produkcja to uporz dkowana para napisów (s, t), nale cych do zbioru ( U )*. Produkcje zapisujemy z postaci s t. Napis ten oznacza, e napis „s” mo na przepisa w napis „t”. Generowanie (lub sprawdzanie poprawno ci składniowej) napisu j zyka z symbolu startowego S polega na stosowaniu kolejnych produkcji zawartych w definicji gramatyki. Taki ci g produkcji nazywamy wyprowadzeniem (sekwencj wyprowadzenia) dla tego napisu j zyka. Napis g jest bezpo rednio wyprowadzalny z napisu p (p=>g) je eli 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), je eli istnieje sekwencja r0...rn, takich, e p=>r0=> ... =>rn=>g. Dodatkowo, je li p=>+g lub p=g to piszemy p=>*g. J zyki formalne i kompilatory © by Michał miałek © by Michał miałek Przykłady gramatyk Jakie j zyki 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} J zyki formalne i kompilatory Gramatyki regularne i automaty sko czone 4 J zyki formalne i kompilatory Modyfikacja: 2004-11-22 Gramatyki regularne Druga z powy szych gramatyk jest gramatyk regularn . Gramatyka regularna jest to taka gramatyka, dla której ka da produkcja jest postaci A v lub postaci A vB, gdzie A,B nale do zbioru , a v nale y do zbioru (lub do zbioru U dla postaci A v). Pierwsza gramatyka z poprzedniego slajdu jest gramatyk bezkontekstow (patrz nast pne wykłady). Czy zdefiniowany w ten sposób j zyk 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ło one i kosztowne. Niestety, nie wszystkie j zyki da si w ten sposób opisa . J zyki formalne i kompilatory © by Michał miałek Gramatyki i automaty Analizuj c zdania jakiego j zyka, kompilator dokonuje rozbioru gramatycznego. Rozbiór ten nast puje zgodnie z gramatyk , któr mo emy opisa w sposób formalny jak na poprzednich slajdach. Fragment kompilatora dokonuj cy rozbioru gramatycznego jest pewnego rodzaju automatem rozpoznaj cym zdania. Postulat: opracowa technik automatycznego generowania takich automatów rozpoznaj cych. Rozwi zanie: algorytmy przekształcania gramatyk regularnych w automaty sko czone oraz gramatyk bezkontekstowych w automaty ze stosem. J zyki formalne i kompilatory Gramatyki regularne i automaty sko czone a+b*7 Rozbiór gramatyczny (np. drzewo) © by Michał miałek 5 J zyki formalne i kompilatory Modyfikacja: 2004-11-22 Automaty sko czone Automat sko czony to uporz dkowana pi tka A=(T, Q, R, q0, F), gdzie: Q jest niepustym zbiorem stanów wewn trznych; 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 nale y do T; q0 jest stanem pocz tkowym nale cym do Q; F jest zbiorem stanów ko cowych nale cych do Q (jest podzbiorem Q). Automat sko czony jest maszyn , która czyta wej ciowy napis po jednym znaku i zmienia swój wewn trzny stan po przetworzeniu ka dego symbolu (zgodnie ze zbiorem produkcji). Uwaga: dla ka dej gramatyki regularnej G istnieje automat sko czony A taki, e L(A) = L(G). J zyki formalne i kompilatory © by Michał miałek Przykładowy automat sko czony 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, SU, Un q} q0 = C; F = {q} Ten automat (jak równie ten z nast pnego 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... Wa ne pytanie: Czy automat sko czony (np. taki jak powy ej) da si narysowa graficznie? J zyki formalne i kompilatory Gramatyki regularne i automaty sko czone © by Michał miałek 6 J zyki formalne i kompilatory Modyfikacja: 2004-11-22 Automat deterministyczny Automat jest deterministyczny, je eli ka de wyprowadzenie mo e by kontynuowane w co najwy ej jednym ruchu. Automat deterministyczny dla tego samego j zyka co poprzednio: Q = {q0, q1, q2, q3, q4, q5, q6}; T = {n, ., +, -, E} R = {q0n q1, q0. q2, q1. q2 , q1E q3 , q2n q 4, q5 , q3+ q6 , q3q6 , q4E q3 , q6n q5 } q3n F = {q1, q4, q5} Automaty sko czone mog by przedstawiane graficznie za pomoc grafu skierowanego. W w złach grafu umieszczamy stany automatu, a na kraw dziach - symbole terminalne powoduj ce odpowiednie zmiany stanów (okre lone w zbiorze R). Taki graf nazywamy diagramem stanów. Wa ne pytanie: Jak zrealizowa automat sko czony w strukturze kompilatora? J zyki formalne i kompilatory © by Michał miałek Struktura automatu sko czonego Automat sko czony ma w zły (stany automatu) i przej cia (produkcje). Wa ne: Porównaj struktur automatu w j zyku UML z definicj automatu podan trzy slajdy temu. Zarz dcaAnalizatoraLeksykalnego -pocz tkowy Graf 1 + + PodajSymbol() : LekSem Rozpocznij(nazwa :String) : void + + od_pocz tku() : void przejd (z :char) : int 1 -aktualny W zełGrafu - 1 + 1 typ: int przejd (z :char) : int +docelowy 1 0..* 1 -wychodz ce 0..* Kraw d Grafu J zyki formalne i kompilatory Gramatyki regularne i automaty sko czone - opis_kraw dzi: String + czy_mo na_przej (znak :char) : W zeł © by Michał miałek 7 J zyki formalne i kompilatory Modyfikacja: 2004-11-22 wiczenie Prosz narysowa jeden lub kilka diagramów sekwencji ilustruj cych działanie automatu sko czonego. Ka dy diagram sekwencji powinien uwzgl dnia konkretn sekwencj symboli terminalnych na wej ciu (np. „0.5E6”). Prosz uwzgl dni pobieranie znaków ze strumienia wej ciowego i przechodzenie pod wpływem tych znaków przez graf. Prosz krótko opisa diagram. Uwaga: mo na przyj (własny). J zyki formalne i kompilatory Gramatyki regularne i automaty sko czone automat pokazany dwa slajdy temu lub inny © by Michał miałek 8