Osob prowdząc wykłd i ćwiczeni: dr inż. Mrek werwin Instytut terowni i ystemów Informtycznych Uniwersytet Zielonogórski e-mil : M.werwin@issi.uz.zgor.pl tel. (prc) : 68 328 2321, pok. 328 A-2, ul. prof. Z.zfrn 2, 65-246 Zielon Gór Osttni zmin: 10.12.2012 V1.0 1/ 45 pis treści Wprowdzenie Pln wykłdu ystem przepisywni Definicj Wyprowdznie ystem przepisywni język Klsyfikcj Chomsky ego Grmtyk bezkontekstow Drzew wyprowdzeń Jednoznczność grmtyki Notcj BNF Grmtyk regulrn Prktyk A z tydzień n wykłdzie V1.0 2/ 45 Wprowdzenie Pln wykłdu Pln wykłdu spotkni tydzień po tygodniu (1) Informcje o wykłdzie, poprwność lgorytmów (2) Poprwność lgorytmów logik Horego (3) Anliz złożoności kodu wysokiego i niskiego poziomu (4) Modele lgorytmiczne mszyny proste, obwody logiczne (5) Modele lgorytmiczne mszyn Turing orz rchunek-λ (6) Automty (nie)deterministyczne część I (7) Automty (nie)deterministyczne część II (8) V1.0 3/ 45 Wprowdzenie Pln wykłdu Pln wykłdu spotkni tydzień po tygodniu (9) i utomty ze stosem (10) Algorytmy równoległe (11) Klsy złożoności obliczeniowej (12) Pmięć logrytmiczn i wielominow (13) Problemy NP-zupełne (14) Wstęp do obliczeń kwntowych (15) Wybrne lgorytmy kwntowe V1.0 4/ 45
Wprowdzenie Pln wykłdu Pln wykłdu 1. system przepisywni 1.1 definicj 1.2 przykłd 1.3 język 2. grmtyki 2.1 ogóln definicj grmtyki, 2.2 definicj formln, 2.3 równowżność grmtyk, 2.4 klsyfikcj Chomskiego, 2.5 grmtyk bezkontekstow 3. klkultor RPN i normlny V1.0 5/ 45 Wprowdzenie Pln wykłdu Mteriły wykorzystne podczs tworzeni tego wykłdu, tkże przydtne do dlszych studiów: 1. John E.Hopcroft, Jeffrey D.Ullmn: Wprowdzenie do teorii utomtów, języków i obliczeń, Wydwnictwo Nukowe PWN 2003 Wydnie 1 orz Wydnie 2 z roku 2006, 2. przedmiot Języki utomty i obliczeni z Wżnik, 3. dokumentcj progrmów Flex orz Bison, 4. wykłd M.Kubicy, Języki formlne i utomty, http://www.mimuw.edu.pl/~kubic/ug/index-frmes.html V1.0 6/ 45 ystem przepisywni ystem przepisywni V1.0 7/ 45 ystem przepisywni Definicj ystem przepisywni definicj ystem przepisywni (ng. rewrite system R): ystem przepisujący definicj ystem przepisujący jest to pr R = (A, P), gdzie A jest dowolnym skończonym lfbetem, P A A - skończoną relcją inczej zbiorem prw. Ogólnie fkt, że pr (u, v) P, będzie zpisywne jko u v P i nzywć to będziemy prwem przepisywni lub produkcją w systemie R. Jeśli R = (A, P) jest dowolnym systemem przepisującym, x, y A dowolnymi słowmi, to system R przepisuje słowo x n słowo y (generuje y ze słow x) bezpośrednio, co ozncz się symbolem x y, jeśli istnieją tkie słow x 1, x 2 A orz prwo u v P tkie, że x = x 1 ux 2, y = x 1 vx 2. V1.0 8/ 45
ystem przepisywni Wyprowdznie ystem przepisywni wyprowdznie Przepisnie słow pośrednie (symbol reprezentuje relcję, ntomist, domknięcie przechodnio-zwrotne tej relcji): ystem R przepisuje słowo x n słowo y (generuje y ze słow x), co ozncz się symbolem x y, jeśli istnieją słow w 0, w 1,..., w k A orz k 0 tkie, że w 0 = x, w k = y, w i w i+1 dl i = 0, 1,..., k 1. Ciąg (w 0, w 1,..., w k ) nzyw się wyprowdzeniem w systemie R. Liczb k określ długość wyprowdzeni. Wyprowdzenie możn również oznczyć w nstępujący sposób: w 0 w 1... w k Dl R = ({, b, c}, {(b, b), (c, c), (cb, bc)}) możn wyprowdzić ze słow cbbc słowo bbcc: cbbc (c,c) cbbc (cb,bc) bcbc (cb,bc) bbcc (c,c) bbcc (b,b) bbcc (b,b) bbcc V1.0 9/ 45 ystem przepisywni ystem przepisywni język ystem przepisywni język Niech R = (A, P) będzie dowolnym systemem przepisującym, B dowolnym, ustlonym podzbiorem A. językiem generownym przez R nzywmy zbiór L gen (R, B) = {w A : x w, x B}, językiem rozpoznwnym przez R nzywmy zbiór: L cc (R, B) = {w A : w x, x B}. Dl poprzedniego przykłd, gdy B = {cb}, to otrzymuje się L gen (R, B) = {bc, cb, cb} L cc (R, B) = {cb, cb} V1.0 10/ 45 Grmtyk V1.0 11/ 45 Grmtyk Grmtyczny opis język L zwier cztery wżne skłdowe: 1. Istnieje skończony zbiór symboli tworzących łńcuchy definiownego język. ymbole te nzywmy terminlmi lub symbolmi końcowymi. 2. Istnieje skończony zbiór zmiennych, nzywnych nieterminlmi lub ktegorimi syntktycznymi. Kżd ze zmiennych przedstwi język, tj. zbiór łńcuchów. 3. Jednk ze zmiennych reprezentuje definiowny język i zwn jest on symbolem początkowym. Inne zmienne reprezentują pomocnicze klsy łńcuchów używne przy definiowniu język symbolu początkowego. V1.0 12/ 45
Grmtyk 4. Istnieje skończony zbiór produkcji lub reguł, przedstwijących rekurencyjną definicję język. Kżd produkcj skłd się z: 4.1 zmiennej (częściowo) definiownej przez tę produkcję. Zmienn t jest często nzywn głową produkcji. 4.2 symbolu produkcji np.: 4.3 Łńcuch złożonego z zer lub więcej terminli i zmiennych. Łńcuch ten, zwny jest ciłem produkcji, przedstwi jeden ze sposobów tworzeni łńcuchów w języku zmiennej będącej głową produkcji. W trkcie tego pozostwimy terminle bez zmin i podstwimy z kżdą zmienną cił produkcji dowolny łńcych, o którym widomo, że nleży do jezyk tej zmiennej. (wg. J.E. Hopcroft, R.Motwni, J.D. Ullmn, Wprowdzenie do teorii utomtów, języków i obliczeń, PWN 2005) V1.0 13/ 45 Grmtyk definicj Grmtyk jest to system G = (V, T, P, ), w którym V - skończony zbiór symboli nieterminlnych (lfbet nieterminlny), T - skończony zbiór symboli terminlnych (lfbet terminlny), P (V T ) + (V T ) - skończon relcj, zbiór produkcji (prw), V - symbol początkowy (strtowy). Alfbet terminlny orz lfbet nieterminlny są rozłącznymi zbiormi, słowo u występujące po lewej stronie produkcji zwier co njmniej jeden symbol nieterminlny. Fkt, że pr (u, v) P, zpisujemy: u v P lub u G v. Definicj język Językiem generownym przez grmtykę G = (V, V, P, ) nzywmy zbiór: L(G) = {x V T : G x}. V1.0 14/ 45 Równowżność grmtyk Niestety, pomiędzy językiem generującą go grmtyką nie możn wskzć wzjemnie jednozncznej odpowiedniości. Dny język może być generowny przez wiele różnych grmtyk (dość często o brdzo różnej strukturze i włsnościch). Dltego, nleży wprowdzić i określić pojęci równowżności językowej dl wskznych grmtyk. G 1 i G 2 są równowżne językowo wtedy i tylko wtedy, gdy L(G 1 ) = L(G 2 ). Przykłdy równowżnych grmtyk: 1. grmtyk o postci G 1 = (V, T, P, ), w której V = {}, T = {}, P = {, }, generuje język określony jko: L(G 1 ) = { n : n = 1, 2,...}, 2. Grmtyk G 2 = (V, T, P, ), w której V = {}, T = {}, P = {, }, generuje język określony jko: L(G 2 ) = { n : n = 1, 2,...}, V1.0 15/ 45 Równowżność grmtyk 3. Grmtyk G 3 = (V, T, P, v 0 ), w której V = {v 0, v 1, w, w 1, w 2, z, z 1, z 2, z 3 }, T = {, b, c}, P = {v 0 v 0 z 1, v 0 v 1 z 1, v 1 w 1, v 1 v 1 w 1, w 1 z 1 w 1 z 3, w 1 z 3 wz 3, wz 3 wz, w 1 w w 1 w 2, w 1 w 2 ww 2, z 2 z z 1 z, ww 2 ww 1, zz 1 z 2 z 1, z 2 z 1 z 2 z, w b, z c} generuje język L(G 3 ) = { n b n c n : n = 1, 2,...}. 4. Grmtyk G 4 = (V, T, P, v 0 ), w której V = {v 0, v 1, v 2 }, T = {, b, c}, P = {v 0 bc, v 0 v 1 bc, v 1 b bv 1, v 1 c v 2 bcc, bv 2 v 2 b, v 2 v 1, v 2 } generuje język L(G 4 ) = { n b n c n : n = 1, 2,...}. V1.0 16/ 45
Klsyfikcj Chomsky ego Możn wskzć cztery typy grmtyk określonych przez Nom Chomsky ego. Hierrchi Chomsky ego Grmtyk G = (V, T, P, ) jest typu (i) dl i = 0, 1, 2, 3 wtedy i tylko wtedy, gdy spełnione są nstępujące wrunki: typ(0): kżd grmtyk, spełnijąc definicję umieszczoną n sljdzie (14), typ(1): tzw. grmtyk kontekstow, czyli grmtyk, w której kżde prwo ze zbioru P m postć u 1 vu 2 u 1 xu 2, gdzie u 1, u 2 (V T ), v V, x (V T ) + lub v 0 1, przy czym, jeśli v 0 1 P, to v 0 nie występuje po prwej stronie w żdnym prwie produkcji określonym w P, typ(2): bezkontekstow, czyli grmtyk, w której kżde prwo ze zbioru P m postć v x, gdzie v V, x (V T ), typ(3): regulrn, czyli grmtyk, w której kżde prwo ze zbioru P m postć v v x lub v x, gdzie v, v V, x T. V1.0 17/ 45 Klsyfikcj Chomsky ego W oprciu o wprowdzone klsyfikcję typu grmtyk możn określić odpowidjące im rodziny (lbo klsy) języków: L 0 rodzinę wszystkich języków typu 0, L 1 rodzinę wszystkich języków typu 1, czyli języków kontekstowych, L 2 rodzinę wszystkich języków typu 2, czyli języków bezkontekstowych, L 3 rodzinę wszystkich języków typu 3, czyli języków regulrnych. Pomiędzy wprowdzonymi klsmi języków zchodzą nstępujące zleżności: L 3 L 2 L 1 L 0. Język L jest typu (i) dl i = 0, 1, 2, 3 wtedy i tylko wtedy, gdy jest rozpoznwny przez utomt z odpowiedniej rodziny. V1.0 18/ 45 Klsyfikcj Chomsky ego Przykłdy równowżnych grmtyk i ich przynleżność do odpowiednich typów: 1. grmtyk o postci G 1 = (V, T, P, ), w której V = {}, T = {}, P = {, }, generuje język określony jko: L(G 1 ) = { n : n = 1, 2,...}, grmtyk typu (3), 2. grmtyk G 2 = (V, T, P, ), w której V = {}, T = {}, P = {, }, generuje język określony jko: L(G 2 ) = { n : n = 1, 2,...}, grmtyk typu (2), 3. grmtyk G 3 = (V, T, P, v 0 ), w której V = {v 0, v 1, w, w 1, w 2, z, z 1, z 2, z 3 }, T = {, b, c}, P = {v 0 v 0 z 1, v 0 v 1 z 1, v 1 w 1, v 1 v 1 w 1, w 1 z 1 w 1 z 3, w 1 z 3 wz 3, wz 3 wz, w 1 w w 1 w 2, w 1 w 2 ww 2, z 2 z z 1 z, ww 2 ww 1, zz 1 z 2 z 1, z 2 z 1 z 2 z, w b, z c} generuje język L(G 3 ) = { n b n c n : n = 1, 2,...}, grmtyk typu (1), 4. grmtyk G 4 = (V, T, P, v 0 ), w której V = {v 0, v 1, v 2 }, T = {, b, c}, P = {v 0 bc, v 0 v 1 bc, v 1 b bv 1, v 1 c v 2 bcc, bv 2 v 2 b, v 2 v 1, v 2 } generuje język L(G 4 ) = { n b n c n : n = 1, 2,...}, grmtyk typu (0). V1.0 19/ 45 Grmtyk bezkontekstow Grmtyk bezkontekstow V1.0 20/ 45
Grmtyk bezkontekstow Grmtyk bezkontekstow definicj Grmtyk bezkontekstow (GBK), to dowoln tk czwórk G = (V, T, P, ), gdzie: V to (skończony) lfbet symboli nieterminlnych, T to (skończony) lfbet symboli terminlnych, V T =, P to skończony zbiór produkcji, reguły posidją nstępującą postć A α dl A V, α (V T ), V to wyróżniony symbol nieterminlny, symbol strtowy. Zzwyczj podje się tylko zbiór produkcji. Gdyż, w sposób niejwny z produkcji wynik zbiór nieterminli i terminli. Jeżeli nie będzie to oczywiste, jki nieterminl jest symbolem strtowym, będzie to dodtkowo zznczone. V1.0 21/ 45 Grmtyk bezkontekstow Grmtyk bezkontekstow przykłdy Przykłd grmtyki dl plindromów, przy wykorzystniu indukcyjnej definicji: podstw: λ, 0, 1 są plindrommi, krok indukcyjny: jeśli w jest plindromem, to 0w0, 1w1 są też plindrommi. Żden inny łńcuch nie jest plindromem zbudownym z zer orz jedynek, jeśli nie wynik to z podstwy i kroku indukcyjnego. Grmtyk o postci G m postć: G = ({P}, {0, 1}, A, P) Postć produkcji: P λ P 0 P 1 P 0P0 P 1P1 V1.0 22/ 45 Grmtyk bezkontekstow Grmtyk bezkontekstow przykłdy Grmtyk generując słow dl język: { n b n : n 0}: A Ab λ łowo bbb jest generowne w nstępujący sposób: A Ab Abb Abbb bbb Grmtyk generując plindromy nd lfbetem, b, c: bb cc b c λ łowo bbcbb jest generowne w nstępujący sposób: bb bbbb bbcbb V1.0 23/ 45 Grmtyk bezkontekstow Grmtyk bezkontekstow włsności Niech G = (V, T, P, ) będzie ustloną grmtyką bezkontekstową. Przez będziemy oznczć zbiór produkcji P trktowny jko relcj,? V (V T ). Znczenie możn rozszerzyć n npisy: (V T ) (V T ) A β αaγ αβγ Domknięcie przechodnio-zwrotne będzie relcji będzie oznczne przez, i nturlnie (V T ) (V T ). Relcj opisuje pojedyncze zstosownie produkcji, czyli jko relcję między nieterminlem, zstępującym go słowem. Relcj opisuje co możn zrobić stosując dowolną liczbę (łącznie z zerem) dowolnych produkcji. Inczej mówiąc relcj to wielokrotnego iterowni relcji. Jeśli x y, to istnieje ciąg słów (z i ) tki, iż: x = z 0 z 1... z k = y. V1.0 24/ 45
Grmtyk bezkontekstow Grmtyk bezkontekstow włsności Grmtyk opisuje język złożony ze wszystkich słów (nd lfbetem terminlnym), które możemy uzyskć stosując produkcje począwszy od symbolu strtowego: Język generowny przez GBK Niech G = (V, T, P, ) będzie ustloną grmtyką bezkontekstową. Język L generowny przez grmtykę G, to: L(G) = {x T : x} Nieco inczej, możn powiedzieć że L(G) to zbiór tkich słów x T, dl których istnieją ciągi słów (z i ) orz z i (V T ) tki, iż: = z 0 z 1... z k = x. O ciągu (z i ) powiemy, iż jest to wyprowdzenie słow x w grmtyce G. Język L jest bezkontekstowy, jeżeli istnieje generując go grmtyk G. V1.0 25/ 45 Drzew wyprowdzeń Drzew wyprowdzeń Drzewo wyprowdzeni, to ilustrcj jk określone słowo może być wyprowdzone w dnej grmtyce, w postci drzew. Drzewo wyprowdzeni spełni nstępujące wrunki: w korzeniu drzew znjduje się symbol strtowy, w węzłch wewnętrznych drzew znjdują się nieterminle, w liścich terminle lub słow puste λ, jeśli w dnym węźle mmy nieterminl X, w jego kolejnych pod węzłch mmy x 1, x 2,..., x k, to musi zchodzić: X x 1x 2... x k, terminle umieszczone w liścich, czytne od lewej do prwej, tworzą wyprowdzone słowo. Język { n b n : n 0}, b λ, dl słow bbb, wyprowdzenie jest nstępujące: A Ab Abb Abbb bbbb A A A A b b b λ V1.0 26/ 45 Drzew wyprowdzeń Drzew wyprowdzeń Język dl npisów zbudownych z nwisów. Poprwne wyrżeni nwisowe, to tkie ciągi nwisów, w których: 1. łączn liczb nwisów otwierjących orz zmykjących jest tk sm, 2. kżdy prefiks wyrżeni nwisowego zwier przynjmniej tyle smo nwisów otwierjących, co zmykjących. Grmtyk m nstępującą postć: () λ Drzewo wyprowdzeń dl słow (()(())): ( ) ( ) λ ( ) ( ) λ V1.0 27/ 45 Jednoznczność grmtyki Jednoznczność grmtyki Grmtyk G jest jednoznczn, gdy dl kżdego słow x L(G) istnieje tylko jedno drzewo wyprowdzeni słow x w rmch grmtyki G. Jeśli grmtyk G jest grmtyką jednoznczn, to drzew wyprowdzeń określją strukturę (skłdniową) słów z język w sposób jednoznczny. Co prwd słow mogą mieć wiele wyprowdzeń, le różnią się one tylko kolejnością stosownych produkcji, nie strukturą wyprowdzonego słow. Poniższ grmtyk tworząc wyrżeni rytmetyczne niestety nie jest jednoznczn: + / L () L C CL C 0 1 2 3 4 5 6 7 8 9 V1.0 28/ 45
Jednoznczność grmtyki Dw drzew wyprowdzeń dl wyrżeni 42 + 5 2: V1.0 29/ 45 Jednoznczność grmtyki Poniższ grmtyk tworząc wyrżeni rytmetyczne jest już jednoznczn: E E + E F /F F F L (E) L C CL C 0 1 2 3 4 5 6 7 8 9 V1.0 30/ 45 Notcj BNF BNF definicj Poszczególne konstrukcje skłdniowe w notcji BNF są definiowne w nstępujący sposób: < nzw konstrukcji >::= wyrżenie opisujące konstrukcję ymbole ujęte w nwisy ostre reprezentują symbole nieterminlne, czyli zmienne leksykogrficzne. Wyrżenie po znku przypisni ::= może zwierć sekwencje innych symboli zwierjących zrówno symbole nieterminlne orz terminlne. Do kżdej zmiennej możn przypisć kilk wyrżeń rozdzielonych z pomocą pionowej kreski. A dokłdnej podstwowe elementy w definicji są nstępujące: < konstrukcj > - nzwy konstrukcji, w tym również definiownej, co ozncz że zleżności rekurencyjne są dozwolone, tekst, ujęty w cudzysłów, to tekst który pojwi się dosłownie w dnej konstrukcji,...... - oddziel różne lterntywne postci dnej konstrukcji, [...] - frgment ujęty w kwdrtowe nwisy jest opcjonlny. V1.0 31/ 45 Notcj BNF Przykłdem zstosowni notcji BNF może być np.: poniższy opis grmtyki dresu domu/mieszkni jki jest stosowny w tnch Zjednoczonych: <postl ddr> ::= <nme prt><street ddr ><zip prt > <personl prt> ::= <first nme> <initil >. <nme prt> ::= <personl prt><lst nme > [<jr prt >] <EOL > <personl prt><nme prt > <street ddr> ::= [<pt>] <house num ><street nme >< EOL > <zip prt> ::= <town nme>, <stte code ><ZIP code ><EOL > Jeszcze jeden opis grmtyki dresu zmieszkni: <dres> ::= <drest> <dres loklu> <dres mist> <dres krju> <drest> ::= ["W.P." "z.pn."] <npis> "," <dres loklu>::=<ulic> <numer> ["/" <numer> ] ["m" <numer> "/" <numer> ]"," <dres mist>::=[ <kod> ] <npis> <dres krju>::=["," <npis> ] <kod>::=<cyfr> <cyfr> " " <cyfr> <cyfr> <cyfr> <cyfr>::="0" "1" "2" "3" "4" "5" "6" "7" "8" "9" <numer>::=<cyfr> [ <numer> ] V1.0 32/ 45
Notcj BNF Zsdy notcji BNF możn zpisć z pomocą smej notcji BNF, co przedstwi się nstępująco: <syntx> ::= < rule > [< syntx >] <rule> ::= < whitespce > < < rule nme > > < whitespce > ::= < expr ><whitespce>< line end > <expr> ::= < whitespce >< or expr > <or expr> ::= < whitespce >< list expr > [ < or expr >] <list expr> ::= < whitespce > ( < < rule nme > > < QUOTE >< text ><QUOTE> ( < expr > ) [ < expr > ] )[<list expr>] <whitespce> ::= [ _ < whitespce >] <line end> ::= [< whitespce >] < EOL > [< line end >] Istnieją tkże inne wrinty zpisu notcji BNF, gdzie stosowne są oznczeni krotności orz +. Jednkże, zprezentown powyżej notcj jest njczęściej spotykn i bezpośrednio odnosi się do grmtyki bezkontekstowej. V1.0 33/ 45 Grmtyk regulrn Język regulrny i grmtyk bezkontekstow Wszystkie języki regulrne, są tkże językmi bezkontekstowmi, jednk stwierdzenie odwrotne nie jest prwdziwe np.: L : n b n język jest bezkontekstowy le nie jest regulrny. Grmtyk liniow Grmtyk (prwostronnie) liniow, to tk, w której wszystkie produkcje mją postć: A αb lub A λ, dl A, B V orz α T. Grmtyk silnie liniow Grmtyk silnie (prwostronnie) liniow, to tk, w której wszystkie produkcje mją postć: A αb lub A λ, dl A, B V orz α T. Twierdzenie (silnie) liniowe opisują klsę języków regulrnych. V1.0 34/ 45 Grmtyk regulrn Przeksztłcenie grmtyki liniowej n silnie liniową Reguły przeksztłcni: Nleży zstąpić produkcje postci A 1... k B (dl k > 1) orz produkcje postci A B, równowżnymi produkcjmi odpowiednimi dl grmtyki silnie liniowej. Jeśli mmy w grmtyce produkcję postci A B, to dl kżdej produkcji o postci B α dodjemy do grmtyki produkcję A α. Krok ten powtrzmy tk długo, jk długo wprowdz on nowe produkcje. Nstępnie usuwmy wszystkie produkcje postci A B. W ten sposób uzyskujemy grmtykę generującą ten sm język, le nie zwierjącą produkcji postci A B. Dl kżdej produkcji postci: A 1... k B, dl (k > 1), dodje się nowe symbole terminlne A 1,..., A k 1 w nstępujący sposób: A 1 A 1 A 1 2 A 2. A k 1 k B V1.0 35/ 45 Grmtyk regulrn Przeksztłcenie grmtyki liniowej n silnie liniową Reguły przeksztłcni, cd: Podobnie postępuje się dl kżdej produkcji postci: A 1... k, dl (k > 1): A 1 A 1 A 1 2 A 2 Ogólnie, zwsze możn:. A k 1 k A k A k λ 1. grmtykę liniową przeksztłcić do silnie liniowej, 2. grmtykę silnie liniową przeksztłcić n utomt niedeterministyczny, 3. utomt niedeterministyczny przeksztłcić n grmtykę silnie liniową. V1.0 36/ 45
Grmtyk regulrn Automt niedeterministyczny kceptujący język (b) () : P b Q R T Grmtyk liniow: bq T λ Q bq λ T T λ Wyprowdzenie: bq bbq bb. Grmtyk silnie liniow: P R λ P bq Q P λ R T T R λ Wyprowdzenie: P bq bp bbq bb. V1.0 37/ 45 Prktyk Czs n trochę prktyki: YACC lbo BION Bison, to nrzędzie do tworzeni prser ów, nliztorów skłdniowych oprtych o grmtykę bezkontekstową. Ogóln postć jest podobn do progrmy LEX/FLEX: %{ %} Prologue Bison declrtions %% %% Grmmr rules Epilogue V1.0 38/ 45 Prktyk Klkultor RPN Przykłdy w RPN dl pkietu Bison: 4 9 + 13 3 7 + 3 4 5 * + - -13 3 7 + 3 4 5 * + - n Note the unry minus, n 13 5 6 / 4 n + -3.166666667 3 4 ^ Exponentition 81 ^D End-of-file indictor V1.0 39/ 45 Prktyk Progrm dl Bison Początek pliku dl Bison: %{ #include <stdio.h> #include <mth.h> #include <ctype.h> #define YYTYPE double int yylex (void); void yyerror (chr const *); %} %token NUM V1.0 40/ 45
Prktyk Grmtyk dl Bison Grmtyk dl wyrżeń w odwrotnej notcji polskiej (ng. reverse polish nottion RPN): input: /* empty */ input line ; line: \n exp \n { printf ("%.10g\n", $1); } ; exp: NUM { $$ = $1; } exp exp + { $$ = $1 + $2; } exp exp - { $$ = $1 - $2; } exp exp * { $$ = $1 * $2; } exp exp / { $$ = $1 / $2; } exp exp ^ { $$ = pow ($1, $2); } exp n { $$ = -$1; } ; V1.0 41/ 45 Prktyk Anliz leksykln Anliz leksykln z pomocą włsnej funkcji yylex: int yylex (void) { int c; while ((c = getchr ()) == c == \t ) continue; if (c ==. isdigit (c)) { ungetc (c, stdin); scnf ("%lf", &yylvl); return NUM; } if (c == EOF) return 0; } return c; V1.0 42/ 45 Prktyk Normlny klkultor Początek pliku dl Bison w klkultorze infinixowym : %{ #define YYTYPE double #include <mth.h> #include <stdio.h> int yylex (void); void yyerror (chr const *); %} %token NUM %left - + %left * / %left NEG /* negtion--unry minus */ %right ^ /* exponentition */ V1.0 43/ 45 Prktyk Grmtyk normlnego klkultor 2 + 3 = 5 input: /* empty */ input line ; line: \n exp \n { printf ("\t%.10g\n", $1); } ; exp: NUM { $$ = $1; } exp + exp { $$ = $1 + $3; } exp - exp { $$ = $1 - $3; } exp * exp { $$ = $1 * $3; } exp / exp { $$ = $1 / $3; } - exp %prec NEG { $$ = -$2; } exp ^ exp { $$ = pow ($1, $3); } ( exp ) { $$ = $2; } ; V1.0 44/ 45
A z tydzień n wykłdzie W nstępnym tygodniu między innymi 1. postć normln Chomsky ego, 2. lgorytm CYK, 3. utomty stosowe, 4. interpreter język. Dziękuje z uwgę!!! V1.0 45/ 45