Instytut Informatyki Stosowanej Teoretyczne Podstawy Informatyki Wykªad 2. J zyki i gramatyki formalne Zdzisªaw Spªawski Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 1
J zyki formalne denicje Alfabet A jest sko«czonym zbiorem symboli. Sªowem lub napisem (ªa«cuchem) nad alfabetem A nazywamy sko«czony ci g symboli z tego alfabetu. Sªowem jest równie» ci g pusty oznaczany przez ε. Dªugo±ci w sªowa w nazywamy liczb symboli w sªowie. Przez A oznaczamy zbiór wszystkich sªów nad alfabetem A, za± przez A + zbiór wszystkich niepustych sªów nad tym alfabetem. W zbiorze A deniujemy dwuargumentow relacj konkatenacji (zªo»enia) sªów: je±li x = a 1... a m oraz y = b 1... b n, gdzie a i, b j A to ich konkatenacj jest sªowo xy = a 1... a m b 1... b n. Operacja konkatenacji jest ª czna ((w 1 w 2 )w 3 = w 1 (w 2 w 3 ) i posiada element neutralny ε (wε = εw = w). J zykiem (formalnym) nad alfabetem A nazywamy dowolny zbiór sªów nad tym alfabetem, czyli dowolny podzbiór zbioru A. Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 2
Denicja j zyka programowania (wymagania) Opisy j zyków programowania powinny z jednej strony uªatwia programi±cie pisanie programów (generowanie sªów nale» cych do j zyka), z drugiej za± umo»liwia automatyczne sprawdzanie (rozpoznawanie), czy program istotnie nale»y do j zyka Denicja j zyka programowania zawiera: (i) opis skªadni (syntaktyki), czyli denicj zbioru napisów, b d cych poprawnymi programami; (ii) opis semantyki, czyli znaczenia programów; (iii) ewentualnie system wnioskowania, sªu» cy do dowodzenia poprawno±ci programów, tj. ich zgodno±ci ze specykacj. Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 3
Wyra»enia i zbiory regularne Niech A b dzie alfabetem i niech L, L 1, L 2 A. Konkatenacj j zyków L 1 i L 2 nazywamy zbiór L 1 L 2 = {xy A x L 1 y L 2 }. Niech L 0 = ε i L i = LL i 1 dla i 1. Domkni ciem Kleene'ego j zyka L nazywamy zbiór L wszystkich sªów otrzymanych w wyniku konkatenacji dowolnej liczby sªów z L. Wyra»enia regularne (w.r.) nad A i zbiory przez nie reprezentowane deniujemy nast pujaco: (i), ε i ka»dy symbol a A s w.r. reprezentuj cymi, odpowiednio, zbiory {}, {ε} i {a}; (ii) je±li r i s s w.r. reprezentuj cymi j zyki R i S, to (r s), (rs) i (r ) s w.r. reprezentuj cymi zbiory R S, RS i R. W celu zmniejszenia liczby nawiasów przyjmujemy nast puj ce priorytety operacji (malej co): *, konkatenacja,. Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 4
Przykªady j zyków regularnych (0 1) opisuje zbiór wszystkich sªów zªo»onych z zer i jedynek; (0 1) 00(0 1) reprezentuje zbiór wszystkich sªów zªo»onych z zer i jedynek, zawieraj cych przynajmniej dwa kolejne zera; (1 10) opisuje zbiór wszystkich sªów zªo»onych z zer i jedynek, które rozpoczynaj si od jedynki i nie zawieraj dwóch kolejnych zer; (0 ε)(1 10) opisuje zbiór wszystkich sªów zªo»onych z zer i jedynek, nie zawieraj cych dwóch kolejnych zer; ((a b)a) reprezentuje zbiór {ε, aa, ba, aaaa, aaba, baaa, baba,...} sªów o parzystej dªugo±ci, w których na parzystych pozycjach wyst puje symbol a. J zyka {( n ) n n 1} nie mo»na opisa za pomoc wyra»e«regularnych! Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 5
Gramatyki bezkontekstowe motywacja i przykªad Fragment j zyka polskiego mo»na opisa za pomoc nast puj cych produkcji, w których kategorie syntaktyczne s uj te w nawiasy k towe. zdanie ::= grupa podmiotu grupa orzeczenia grupa podmiotu ::= rzeczownik przymiotnik rzeczownik grupa orzeczenia ::= czasownik rzeczownik ::= samolot chªopiec pies czasownik ::= fruwa biegnie przymiotnik ::= du»y maªy okr gªy kwadratowy Powy»sze produkcje pozwalaj generowa proste zdania: zdanie grupa podmiotu grupa orzeczenia przymiotnik rzeczownik grupa orzeczenia maªy rzeczownik grupa orzeczenia maªy chªopiec grupa orzeczenia maªy chªopiec czasownik maªy chªopiec biegnie Lecz analogicznie: zdanie... kwadratowy chªopiec fruwa. Gramatyka opisuje tylko skªadni j zyka, a nie jego semantyk! Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 6
Gramatyki formalne Gramatyk nazywamy czwórk G = (N, T, P, S), gdzie: N sko«czony zbiór symboli nieterminalnych (zmiennych syntaktycznych, kategorii syntaktycznych); T sko«czony zbiór symboli terminalnych (alfabet), rozª czny z N; P sko«czony zbiór produkcji postaci a b, gdzie a (N T ) +, b (N T ) ; S wyró»niony symbol nieterminalny, nazywany symbolem pocz tkowym. Nieformalnie: J zyk L(G), generowany przez gramatyk G jest zbiorem wszystkich sªów zbudowanych z symboli terminalnych, które da si otrzyma z symbolu pocz tkowego za pomoc przeksztaªce«, okre±lonych przez reguªy produkcji. Zasada stosowania produkcji a b : je±li a jest podsªowem ju» wygenerowanego sªowa, to a mo»na zast pi w tym sªowie przez b. Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 7
J zyk generowany przez gramatyk Produkcje gramatyki G okre±laj relacj bezpo±redniego wyprowadzania na sªowach nad alfabetem N T. x y wtw, gdy istniej sªowa x 0 i x 1 oraz reguªa a b gramatyki G, takie»e x = x 0 ax 1 i y = x 0 bx 1. Wywodem (wyprowadzeniem) sªowa y ze sªowa x w gramatyce G nazywa si ka»dy taki ci g sªów x 0,..., x n (n > 0),»e x i x i+1 dla i = 0,..., n 1 oraz x 0 = x i x n = y. Relacja wyprowadzalno±ci jest zwrotnym i przechodnim domkni ciem relacji. J zyk L(G) generowany przez gramatyk G = (N, T, P, S) jest zbiorem tych wszystkich sªów nad alfabetem T, dla których istniej wywody rozpoczynaj ce si od symbolu pocz tkowego S. Czyli: L(G) = {w w T S w}. Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 8
Hierarchia Chomsky'ego I Niech G = (N, T, P, S) i V = N T. Gramatyka G jest gramatyk typu 0 (bez ogranicze«), je±li ka»da produkcja jest postaci u w, u V +, w V ; typu 1 (kontekstow ), je±li ka»da produkcja jest postaci uaw uzw, u, w V, A N, z V + ; typu 2 (bezkontekstow GBK), je±li ka»da produkcja jest postaci A z, A N, z V + ; typu 3 (regularn ), je±li ka»da produkcja jest postaci A bb (gramatyka prawostronnie regularna), lub ka»da produkcja jest postaci A Bb (gramatyka lewostronnie regularna), A N, B N {ε}, b T +. Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 9
Hierarchia Chomsky'ego II Gramatyki typu 1,2,3 s gramatykami nieskracaj cymi, z czego wynika ich rozstrzygalno±. Ka»da gramatyka typu i jest jednocze±nie gramatyk typu j, dla 0 j i, ale nie odwrotnie. Je±li gramatyka G generuj ca j zyk L(G) jest kontekstowa (bezkontekstowa, regularna) to j zyk L(G) te» jest nazywany kontekstowym (odpowiednio bezkontekstowym lub regularnym). Twierdzenie. J zyk L ma gramatyk regularn wtw kiedy L jest zbiorem regularnym. Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 10
Przykªady gramatyk Przykªad 1. Gramatyka regularna (typu 3) Niech L 3 = {a k b l c m k, l, m 1}. G 3 = ({S, V, U}, {a, b, c}, P, S), gdzie P = {S as av, V bv bu, U cu c}. Przykªad 2. Gramatyka bezkontekstowa (typu 2) Niech L 2 = {a k b l c m k, l, m 1 k = m}. G 2 = ({S, V }, {a, b, c}, P, S), gdzie P = {S asc av c, V V b b}. Przykªad 3. Gramatyka kontekstowa (typu 1) Niech L 1 = {a k b l c m k, l, m 1 k = l = m}. G 1 = ({S, V }, {a, b, c}, P, S), gdzie P = {S abc asv c, cv V c, bv bb}. Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 11
Drzewa wywodu (wyprowadzenia, rozbioru) denicja Niech G = (N, T, P, S) b dzie GBK. Drzewo jest drzewem wywodu dla G, je±li: Ka»dy w zeª drzewa ma etykiet, b d c symbolem z N T {ε}; Etykiet korzenia jest S; Je±li w zeª nie jest li±ciem i ma etykiet A, to A N; Je±li w zeª x ma etykiet A i w zªy x 1, x 2,..., x n s nast pnikami w zªa x, w kolejnosci od lewej do prawej, z etykietami A 1, A 2,..., A n to A A 1 A 2... A n musi by produkcj gramatyki G; Je±li w zeª x ma etykiet ε, to x jest li±ciem i jest jedynym nast pnikiem swego poprzednika. Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 12
Drzewa wywodu dla GBK I Przykªad. G n = ({S}, {a, b, c, +,,, /, (, )}, P, S), gdzie P = {S a b c S + S S S S S S/S (S)} S S S a S a S+S a b+s a b + c wywód lewostronny S S S a S + S b c S S + S S S c a b S S + S S + c S S +c S b + c a b + c wywód prawostronny Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 13
Drzewa wywodu dla GBK II Ka»demu drzewu wywodu odpowiada dokªadnie jeden wywód lewostronny i dokªadnie jeden wywód prawostronny. Sposób generowania sªowa jest bez znaczenia z punktu widzenia j zyka jako zbioru sªów, ale jest istotny, je±li wpªywa na semantyk. Z wywodami zwi zane s zwykle okre±lone dziaªania semantyczne. Wskazane jest, aby symbole nieterminalne gramatyki odpowiadaªy konstrukcjom semantycznie znacz cym. Gramatyka bezkontekstowa dopuszczaj ca dwa lub wi cej drzew wywodu (czyli dwa lub wi cej wywodów lewostronnych) tego samego sªowa jest nazywana wieloznaczn. Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 14
Drzewa wywodu dla GBK III J zyk bezkontekstowy, dla którego ka»da gramatyka jest wieloznaczna jest ±ci±le wieloznaczny. Niejednoznaczno± jest przeszkod przy ±cisªym formuªowaniu semantyki j zyka. J zyki etniczne s niejednoznaczne. Porównaj: Piotr wszedª do pokoju z pianinem. Piotr wszedª do pokoju z ide. Piotr wszedª do pokoju z lamp. Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 15
Drzewa wywodu dla GBK IV Gramatyka G n dla j zyka wyra»e«z poprzedniego przykªadu jest wi c niejednoznaczna. Dla a = 3, b = 2, c = 1 warto± wyra»enia a b + c zinterpretowanego zgodnie z lewym drzewem rozbioru jest równa 3 (2 + 1) = 9, a dla prawego drzewa rozbioru jest równa (3 2) + 1 = 7. Dla tego j zyka istnieje gramatyka jednoznaczna G j pokazana w nast pnym przykªadzie, taka»e L(G n ) = L(G j ). Wyst puj w niej trzy semantycznie znacz ce symbole nieterminalne: W (wyra»enie), S (skªadnik) i C (czynnik). Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 16
Przykªad gramatyka jednoznaczna Przykªad. G j = ({W, S, C}, {a, b, c, +,,, /, (, )}, P, W ), gdzie P = {W S W + S W S, S C S C S/C, C a b c (W )} W W + S S + S S C + S C C +S a C + S a b + S a b + C a b + c wywód lewostronny W W + S S C S C c C a b W W + S W + C W + c S + c S C + c S b + c C b + c a b + c wywód prawostronny Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 17
Notacja Backusa-Naura (BNF) G = ({W, S, C}, {a, b, c, +,,, /, (, )}, P, W ), gdzie BNF P = { W S W + S W S, S C S C S/C, C a b c (W ) }. 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 ) Istnieje wiele wariantów i rozszerze«notacji BNF. Jeden z wariantów jest u»yty do opisu skªadni j zyka C++ (patrz B.Stroustrup, J zyk C++, WNT, Warszawa 2000, Dodatek A.Gramatyka). Do opisu skªadni j zyków bezkontekstowych u»ywane s tak»e diagramy syntaktyczne (skªadniowe). Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 18
Zadania kontrolne I 1. Opisz j zyk, generowany przez gramatyk G = ({Q, X, Y, Z}, {n, o, s, w}, P, Z), gdzie P = {Z ny, Y osx, X wsq, Q osz, Q os}. Podaj najprostsz gramatyk regularn generuj c ten sam j zyk. 2. Zbuduj gramatyk bezkontekstow, generuj ca zbiór wszystkich palindromów nad alfabetem {a, n}. Palindrom jest niepustym sªowem, które czyta si jednakowo w obu kierunkach, np. anna, kajak. 3. Zbuduj gramatyki regularne dla nast puj cych j zyków: 3.1 zbiór sªów nad alfabetem {b, c}, w których wyst puj kolejno trzy litery c; 3.2 zbiór sªów nad alfabetem {b, c, d}, w których po ka»dej literze b pojawia si litera c; Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 19
Zadania kontrolne II 3.3 zbiór sªów nad alfabetem {b, c, d}, w których nie wyst puj podsªowa bc. 4. Podaj gramatyk bezkontekstow, generuj c nad alfabetem {a, b, c, d} j zyk {b n+k a n d k+m c m+1 k, m 0, n 1}. Zdzisªaw Spªawski: Teoretyczne Podstawy Informatyki, Wykªad 2. J zyki i gramatyki formalne 20