Stefan Sokołowski JĘZYKI FORMALNE I METODY KOMPILACJI Inst Informatyki Stosowanej, PWSZ Elbląg, 2012/2013 JĘZYKI FORMALNE reguły gry Wykład1i2,str1 Zasadnicze informacje: http://iispwszelblagpl/ stefan/dydaktyka/jezform http://iispwszelblagpl/ ssokolowski/dydaktyka/jezform slajdy do wykładów można(należy) robić notatki ale nie warto przepisywać slajdów z ekranu szkicowy program wykładu i laboratorium zadania z laboratorium spis literatury itd Uwaga: przeczytanie tych materiałów nie wystarczy do zaliczenia!
JĘZYKI FORMALNE reguły gry Kontakt ze mną: konsultacje: piątki, 17:15 18:00 w pok 322 e-mail: ssokolowski@infugedupl antyspam: unikać frikoprowajderów; najlepiej używać konta mailowego w IIS PWSZ Wymaganie wstępne: zaliczone Podstawy programowania JĘZYKI FORMALNE reguły gry Wykład1i2,str3 Zaliczenie przedmiotu: laboratorium:min56pktna100 wykład:min56pktna100(doliczamewpunktydodatkowezaaktywność w trakcie wykładu i za znalezienie błędów w slajdach) NIE MA ZWOLNIEŃ! ocenaostateczna:04 laboratorium+06 wykład Skala ocen: 2 0 55 5662 63 7273 82 83 91 92 100 3 3+ 4 4+ 5
Język formalny (nieformalny) M {a,aback,abandon,abase,,zoom} język(skończony) składający się ze słów języka angielskiego {0,1,10,11,100,101,} język(nieskończony) składający się z liczb binarnych { a n b n n 0 } ={λ,ab,aabb,aaabbb,} język(nieskończony) składający się z takich słów, w których występujątylkoliteryaib, liczbaliterajestrównaliczbieliterb, wszystkie litery a poprzedzają wszystkie litery b Język formalny Wykład1i2,str5 DEFINICJA: MΣ skończony niepusty alfabet, czyli zbiór tzw liter słowo dowolny ciąg skończonej długości o elementach z Σ Σ zbiórwszystkichsłów język dowolnyzbiórsłówl Σ nie mylić! Mλ słowopuste(ciągliterodługości0) Uwaga:toniejestlitera! def ={} język pusty(nie zawierający żadnego słowa) Λ def ={λ} język zawierający wyłącznie słowo puste M1 (2 1) (1 (2 1)) słowonadalfabetemσ def ={(,),,,1,2} {λ,a,b,ab,ba} języknadalfabetemσ def ={a,b}zawierającypięćsłów { } a n n 0 ={λ,a,aa,aaa,} jęznieskończnadalfσ def ={a}
Jak porządnie opisać język nieskończony? {λ,ab,aabb,aaabbb,} cooznaczająkropeczki? { a n b n n 0 } lepiej,alesąniepożądaneelementyobce (liczby,zmienne,relacje,) Język definiujemy na dwa sposoby Przez generator cokolwiek wyprodukuje, uważamy za należące do języka akceptor cokolwiek zatwierdzi, uważamy za należące do języka Opis języka programowania przeznaczony dla programisty powinien być generatorem ma wyjaśniać, jak pisać poprawne programy Kompilator języka programowania powinien zawierać akceptor sprawdzający, czy program na jego wejściu należy do języka Generatory: gramatyki bezkontekstowe Wykład1i2,str7 DEFINICJA: Gramatyka bezkontekstowa G M alfabetterminalnyσ; alfabet nieterminalny lub pomocniczy N(rozłączny z Σ); skończonyzbiórpprodukcjipostacia w, gdziea Niw (N Σ) ; wybrany nieterminal S N nazywany symbolem początkowym albo aksjomatem gramatyki MTerminale: a, b Nieterminale: A Produkcje: A λ A aaa A bab
Jak gramatyka definiuje język? DEFINICJA: Wywodliwość M jeśliwpjestprodukcjaa w,todladowolnychsłów u,v (N Σ),słowouwvnazywamybezpośredniowywodliwymze słowauav,cooznaczamyuav G uwv; jesliw 1 G w 2,w 2 G w 3,,w n 1 G w n,tosłowow n nazywamy wywodliwymzesłowaw 1,cooznaczamyw 1 Gw n DEFINICJA: Język L(G) generowany przez gramatykę G Mskłada się z tych słów{ wywodliwych z aksjomatu, które już nie zawierają nieterminali:l(g) def = w Σ S G w } MGramatyka: A λ A aaa A bab A bab bbabb bbaaabb bbaabb qq A bbaabb L(G) Fakt: ML(G)= { ww R w {a,b} } Jak gramatyka definiuje język? NIE MYLIĆ: Wykład1i2,str9 A λ A 0A1 formalny symbol w produkcji w gramatyce relacja bezpośredniej wywodliwości: jeślia wtoa w alenp0a1 00A11 anieprawda,że0a1 00A11 relacjawywodliwości: jeśliw 1 w 2 tow 1 w 2 alenpa 0011 anieprawda,żea 0011
Jak gramatyka definiuje język? MGramatykaG: E T E E+T T F T T F F a F (E) E E+T T+T F+T a+t a+t F a+f F a+a F a+a a F+T F F+F F Jak gramatyka definiuje język? Wykład1i2,str11 MGramatykaG: E T E E+T T F T T F F a F (E) E T F (E) (E+T) (T+T) (F+T) (a+t) (a+f) (a+a) F+T F F+F F L(G)=wyrażeniaarytmetycznezbudowaneza,+,,(i)
Gramatyki prawoliniowe DEFINICJA: MGramatyka bezkontekstowa G = Σ, N, P, S jest prawostronnie liniowa jeślikażdaprodukcjawpmapostać: albo A x (czyli: żadnych nieterminali) albo A xb (czyli: tylko jeden nieterminal po prawej) gdziex Σ aa,b N Mabc E ac E bc C λ C ac C bc C 0C C 1C prawoliniowa E a E (E) E E+E bezkontekstowa ale nie prawoliniowa Rodzaje gramatyk Wykład1i2,str13 G 1 : E ac E bc C λ C ac C bc C 0C C 1C G 2 : I a I b I Ia I Ib I I0 I I1 L(G 1 )=językidentyfikatorów=l(g 2 ) G 1 jestprawostronnieliniowa G 2 jestbezkontekstowa ale nie prawostronnie liniowa dwie gramatyki różnych typów mogą określać ten sam język DEFINICJA: MJęzyk L jest regularnyjeśliistgramprawostronnieliniowagtaka,żel=l(g); bezkontekstowy jeśli ist gram bezkontekstowa G taka, że L = L(G) JęzykidentyfikatorówL(G 2 )jestregularny
Hierarchia języków(n Chomsky) języki { ww w Σ } { a n b n c n n 0 } j bezkontekstowe j regularne IDENTYFIKATORY E ac E bc C λ C ac C bc C 0C C 1C LICZBY NATURALNE { a n b n n 0 } WYRAŻENIA E λ E aeb E a E (E) E E+E Wykład1i2,str15 Czy dany język jest bezkontekstowy lub regularny? Żeby dowieść, że język jest bezkontekstowy[ew regularny], należy znaleźć dla niego gramatykę bezkontekstową[prawoliniową] Żeby dowieść, że język nie jest bezkontekstowy[regularny], należy udowodnić, że nie posiada gramatyki bezkontekstowej[prawoliniowej] to jest na ogół trudne Bardzo nieformalne kryteria negatywne: 1 Rozpoznanie słowa języka regularnego nie wymaga porównywania liczby liter Npjęzyk { a n b n n 0 } niejestregularny 2 Rozpoznanie słowa języka bezkontekstowego może wymagać porównania liczby liter ale tylko w dwóch blokach Np { a n b n n 0 } jesta { a n b n a n n 0 } niejestbezkontekstowy 3 Rozpoznanie słowa języka bezkontekstowego może wymagać porównania liczby liter{ jw, ale nie może wymagać obliczeń arytmetycznych } Np a n b n2 n 0 nie jest bezkontekstowy 4 Rozpoznanie słowa języka bezkontekstowego nie może wymagać pamiętania słów bez ograniczenia długości Np { ww R w Σ } jesta { ww w Σ } niejestbezkontekstowy