Wykład3,str1 Definiowanie języka przez wyrażenie regularne(wr) DEFINICJA: (wyrażenia regularne) M(specjalneznakinienależącedoalfabetu:{,},, ) literyalfabetusąwr złożeniawrsąwr: jeśliw 1 iw 2 sąwr,to{w 1 W 2 }jestwr sumywrsąwr: jeśliw 1 iw 2 sąwr,to{w 1 W 2 }jestwr domkkleenego WR jest WR: jeśliwjestwr,to{w} jestwr Umowa notacyjna: opuszczamy zbędne klamry, przyjmując, że najsilniejłączy anajsłabiej, złożenieisumałącządolewej Naprzykład aba ac cb oznacza aba ac cb czyli {{{{ab}a} {a{c} }} {cb}} Wykład3,str2 Definiowanie języka przez wyrażenie regularne(wr) Każdemu wyrażeniu regularnemu odpowiada język: pojedynczej literze σ odpowiada jednowyrazowy język{σ} jeśliwyrażeniuw 1 odpowiadajęzykl 1 awyrażeniuw 2 odpowiadajęzykl 2, towyrażeniu{w 1 W 2 }odpowiadajęzykzłożeń { w1 w 2 w1 L 1 w 2 L 2 } jeśliwyrażeniuw 1 odpowiadajęzykl 1 awyrażeniuw 2 odpowiadajęzykl 2, towyrażeniu{w 1 W 2 }odpowiadasumajęzyków L 1 L 2 = { } w w L 1 w L 2 jeśli wyrażeniu W odpowiada język L, towyrażeniu{w }odpowiadanieskończonasumajęzyków {λ} L LL LLL LLLL
Wyrażenia regularne a języki regularne Wykład3,str3 TWIERDZENIE: MKażdy język regularny odpowiada jakiemuś wyrażeniu regularnemu Każdy język, który odpowiada jakiemuś wyrażeniu regularnemu, jest regularny gramatyki prawoliniowe wyrażenia regularne Czyli: Języki regularne można definiować przy pomocy gramatyk prawoliniowych, albo przy pomocy wyrażeń regularnych to wychodzi na jedno Wyrażenia regularne a języki regularne Wykład3,str4 Przykład: M S λ S abs S cs {ab c} Przykład: Ma c ba S A S ba A C A aa C λ C cc
Wyrażenia regularne Wykład3,str5 Wyrażenie regularne jest wzorcem słowa z języka: oznacza lub, oznaczapowtarzanie(0lubwięcejrazy) Przykład: M {0 1 2 3 4 5 6 7 8 9} do tego wzorca pasuje dowolna cyfra {a b} c a bc jednozesłówacibc jednozesłówaibc {a b} a b dowolne słowo napisane literami słowo z samych liter a lub aib(łączniezλ) słowozsamychliterb Wyrażenia regularne Wykład3,str6 Wyrażenie regularne jest wzorcem słowa z języka: oznacza lub, oznaczapowtarzanie(0lubwięcejrazy) Przykład: M {ab} a b słowapostaci ababab słowapostaci aaabbb {a b} słowapostaci aabaabaab {0 9}{0 9} {0 9}{0 9}{0 9} dowolny kod pocztowy(dwie cyfry, myślnik, trzy cyfry)
Wyrażenia regularne Wykład3,str7 Zastosowania wyrażeń regularnych(zwykle z trochę wzbogaconą składnią): komendy systemu operacyjnego, mające działać na więcej niż jednym pliku; np w Uniksie: rm*~ usunąć wszystkie pliki, których nazwy kończą się falką; gwiazdka dowolny napis wyszukiwanie wzorca w tekście; np w Emacsie komenda Ctr-Alt-s: [0-9]+ znaleźć liczby, czyli niepuste ciągi cyfr; nawias prostokątny z kreską zakres znaków ASCII plus powtórzenieconajmniej1raz zastępowanie; np w Emacsie komenda Alt-x replace-regexp: liczba:\([0-9]+\) zastąpić napisy ze słowem liczba: i liczbą number:\1 przez napisy z number: i tą samą liczbą jeśli po słowie liczba nie ma liczby, to zastąpienia nie będzie Wyrażenia regularne w Emacsie Wykład3,str8 AlfabetΣ wzasadzieznakiascii;dzieląsięnaznaki specjalne: $^*+-?[]\ zwykłe: wszystkie inne Znaki zwykłe można wprost używać w wyrażeniach Znaki specjalne, o ile mają być wprost użyte, muszą być poprzedzone wtyłciachem \ W przeciwnym razie są traktowane jak niżej: (kropka) dowolny pojedynczy znak, np ac opisujesłowaaac,abc,a7c,a;c,itp *(gwiazdka) powtórzenie0lubwięcejrazy,np a* opisujesłowaλ,a,aa,aaa,itp +(plus) powtórzenie1lubwięcejrazy,np a+ opisujesłowaa,aa,aaa,itp -(minus) zakres(musi by wewnątrz nawiasu prostokątnego), np [a-z] opisuje pojedyncze małe litery [](nawiasyprostok) jedenzeznaków,np [abc] opisujea,bic;[0-9a-z] opisujepojedynczecyfryiduzelitery
Wykład3,str9 Umowa notacyjna dla gramatyk bezkontekstowych ponieważ nieterminale oznaczają pojęcia sugestywne nazwy np wyrażenie, liczba nieterminale ujmujemy w nawiasy kątowe: np, liczba wszystkie produkcje z pojedynczego nieterminalu grupujemy: piszemy cyfra ::=0 1 9 zamiast cyfra 0 cyfra 1 cyfra 9 liczba ::= cyfra liczba cyfra liczba cyfra liczba liczba cyfra Drzewa wywodu Wykład3,str10 ::=l () + () ( +) (l+) (l+l) () ( +) (+l) (l+l) ( l + l )
Drzewa wywodu Wykład3,str11 DEFINICJA: MDrzewo wywodu słowa w Σ w gramatyce bezkontekstowej G= Σ,N,P, S totakiedrzewo,którema: w liściach symbole terminalne składające się na słowo w, w pozostałych(wewnętrznych) węzłach nieterminale rozmieszczone wg takich zasad: jeśliwjakimśwęźleznajdujesięnieterminal A awjegodzieciach od lewej do prawej symbolea 1,a 2,,a n Σ N, to A a 1 a 2 a n musibyćprodukcjązp, w korzeniu znajduje się nieterminal początkowy S Przykład: MFragment drzewa + składnik jest legalny jeśli + składnik jest produkcją z gramatyki Drzewa wywodu Wykład3,str12 Drzewa wywodu słów w gramatyce prawoliniowej są przeważone w prawo tak, że stanowią prawie listy: E ::= a C b C C ::= λ a C b C 0 C 1 C E a C a C 1 C b C E a C aa C aa1 C aa1b C aa1b
Drzewa wywodu Wykład3,str13 Drzewa wywodu słów w gramatyce bezkontekstowej mogą być rozczapierzone we wszystkie strony zmienna ::=a b z cyfra ::=0 1 9 liczba ::= liczba cyfra cyfra atom ::= zmienna liczba () ::= składnik + składnik składnik ::= atom składnik atom Drzewa wywodu ciąg terminali: 34 (x+11) aksjomat Wykład3,str14 zmienna ::=a b z cyfra ::=0 1 9 liczba ::= liczba cyfra cyfra atom ::= zmienna liczba () ::= składnik + składnik składnik ::= atom składnik atom składnik atom składnik składnik atom atom liczba składnik liczba liczba atom liczba cyfra cyfra zmienna cyfra cyfra 3 4 * ( x + 1 1 )
Drzewo wywodu a struktura słowa 2 + 5 3 Wykład3,str15 ::=0 1 9 () + Niejednoznaczność wywodu: istnieją dwa różne drzewa wywodu danego słowa W tym przypadku sugerują one kolejność działań: drzewo górne odpowiada wykonaniu dodawania przed mnożeniem drzewo dolne odpowiada wykonaniu mnożenia przed dodawaniem Drzewo wywodu a struktura słowa Wykład3,str16 Gramatyka fragmentu języka polskiego: zdanie ::= grpodmiotu grorzeczenia grpodmiotu ::= podmiot przydawka grpodmiotu grorzeczenia ::= orzeczenie orzeczenie dopełnienie grorzeczenia okolicznik podmiot ::= Anka Basia Czesiek przydawka ::= gruby stary orzeczenie ::= bije kocha dopełnienie ::= Ankę Basię Cześka okolicznik ::= wdomu nocą
Drzewo wywodu a struktura słowa Wykład3,str17 zdanie grorzeczenia grpodmiotu grpodmiotu grorzeczenia grorzeczenia grpodmiotu przydawka przydawka podmiot orzeczenie dopełnienie okolicznik okolicznik stary gruby Czesiek bije Ankę wdomu nocą Drzewo wywodu a struktura słowa Wykład3,str18 zdanie grupa podmiotu grupa orzeczenia podmiot orzeczenie okolicznik = CZASLECI JAK STRZAŁA TIMEFLIESLIKEANARROW przydawka podmiot orzeczenie dopełnienie grupa podmiotu grupa orzeczenia = CZASOWEMUCHY LUBIĄ STRZAŁĘ zdanie Znaczenie zależy od drzewa rozbioru również w językach naturalnych
Drzewo wywodu a struktura słowa Wykład3,str19 Z punktu widzenia należenia słowa do języka postać drzewa wywodu nie ma znaczenia Z punktu widzenia przekazywanego sensu postać drzewa wywodu jest bardzo ważna Przykład: jak policzyć wartość wczytywanej liczby? M liczba ::= cyfra cyfra liczba To sugeruje, że trzeba osobno znaleźć wartość pierwszej cyfry i osobno całej resztyanastępniejakośtewartościpołączyć:3 456=3 10 3 +456 aleskądzgórywiedzieć,dojakiejpotęgipodnieść10? liczba ::= cyfra liczba cyfra To sugeruje, że trzeba osobno znaleźć wartość ostatniej cyfry i osobno całej resztyanastępniejakośtewartościpołączyć:345 6=345 10+6 tak jest łatwiej zaprogramować Rozumienie słowa oraz operacje na nim odbywają się faktycznie na jego drzewie wywodu