Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech

Podobné prezentace


Prezentace na téma: "Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech"— Transkript prezentace:

1 Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech
České vysoké učení technické v Praze Fakulta dopravní

2 České vysoké učení technické v Praze
Jazyk Jazyk L je množina řetězců nad abecedou T abeceda = neprázdná konečná množina symbolů Příklad: T = {a,b,c} L = {abc, abbc, ab} České vysoké učení technické v Praze Fakulta dopravní

3 České vysoké učení technické v Praze
Gramatiky Gramatika je čtveřice: kde: N - množina neterminálních symbolů T - množina terminálních symbolů P - množina pravidel S - startovací symbol gramatiky SN České vysoké učení technické v Praze Fakulta dopravní

4 České vysoké učení technické v Praze
Pravidla množina pravidel: levá strana pravidla pravá strana pravidla je libovolný řetězec z terminálních a neterminálních symbolů České vysoké učení technické v Praze Fakulta dopravní

5 České vysoké učení technické v Praze
Pravidla pravidlo (,)P zapisujeme jako    pravidlo má význam: „ přepiš na “ na levé straně pravidla je vždy neterminální symbol (tj. pomocí pravidla lze vždy přepsat nějaký neterminální symbol) České vysoké učení technické v Praze Fakulta dopravní

6 Příklad jednoduché gramatiky
gramatika generující symetrické řetězce nul a jedniček 0000…01…11111 G = (N,T,P,S) N = { S, A } T = { 0, 1 } P = { S  0A1, A  0A1, A   } (symbol  představuje prázdný symbol) České vysoké učení technické v Praze Fakulta dopravní

7 Příklad jednoduché gramatiky
příklad generovaného řetězce (věty): S  0A1  00A11  000A111  Terminologie:  = γ1αγ2 přímo generuje  =γ1βγ2, jestliže existuje pravidlo α  β značíme    příklad: 00A11  000A111 České vysoké učení technické v Praze Fakulta dopravní

8 České vysoké učení technické v Praze
Terminologie  generuje , jestliže existuje posloupnost α1, α2,…, αn tak, že  = α1,  = αn a αi  αi+1, i = 1 … n píšeme  *  posloupnost řetězů je derivace příklad: 0A1 * popis derivace posloupnost pravidel – viz dříve derivační strom České vysoké učení technické v Praze Fakulta dopravní

9 České vysoké učení technické v Praze
Derivační strom S A 1 A 1 A 1 České vysoké učení technické v Praze Fakulta dopravní

10 České vysoké učení technické v Praze
Jazyky a gramatiky gramatika G generuje jazyk LG gramatika G a jazyk LG generovaný gramatikou jsou ekvivalentní Poznámka: věty jazyka jsou tvořeny jen z terminálních symbolů České vysoké učení technické v Praze Fakulta dopravní

11 Chomského klasifikace gramatik
podle tvaru pravidel se rozlišují gramatiky neomezené kontextové bezkontextové regulární České vysoké učení technické v Praze Fakulta dopravní

12 České vysoké učení technické v Praze
Klasifikace gramatik neomezené - L(0) pravidla jsou obecná kontextové – L(1) γ1Aγ2  γ1βγ2, AN, γ1,γ2 je kontext, γ1,γ2 (N  T)*, β (N  T)+ bezkontextové A  β, AN, β  (N  T)+ regulární viz dále České vysoké učení technické v Praze Fakulta dopravní

13 České vysoké učení technické v Praze
Klasifikace gramatik neomezené gramatiky generují neomezený jazyk - L(0) kontextové gramatiky generují kontextový jazyk bezkontextové gramatiky generují bezkontextový jazyk regulární gramatiky generují regulární jazyk České vysoké učení technické v Praze Fakulta dopravní

14 Příklad neomezené gramatiky
G = { N, T, P, S } N = { S, B } T = { a, b, c } P = { S  abc, S  aSBc, cB  Bc, bB  bb } gramatika generuje jazyk České vysoké učení technické v Praze Fakulta dopravní

15 Příklad kontextové gramatiky
v příkladu neomezené gramatiky neodpovídá pravidlům kontextové gramatiky pouze pravidlo č. 3: cB  Bc upravíme gramatiku na kontextovou pravidlo typu AB  BA lze nahradit množinou pravidel kontextové gramatiky: kontext je vyznačen modře AB  XB XB  XA XA  BA České vysoké učení technické v Praze Fakulta dopravní

16 Příklad kontextové gramatiky
prohození nelze aplikovat na pravidlo č. 3 Proč? Protože terminální symbol nemohu přepsat. přidáme do gramatiky další neterminální symbol C, pravidlo cC  cc a upravíme ostatní pravidla České vysoké učení technické v Praze Fakulta dopravní

17 Příklad kontextové gramatiky
G = { N, T, P, S } N = { S, B, C, X } T = { a, b, c } P = { S  abC, S  aSBC, CB  XB, XB  XC, XC  BC, bB  bb, bC  bc, cC  cc } gramatika generuje stejný jazyk České vysoké učení technické v Praze Fakulta dopravní

18 Využití gramatik v programování
lexikální elementy programovacích jazyků (klíčová slova, příkazy, konstanty, proměnné) jsou definovány regulární gramatikou programovací jazyky jsou většinou definovány bezkontextovou gramatikou České vysoké učení technické v Praze Fakulta dopravní

19 České vysoké učení technické v Praze
Regulární gramatiky pravidla mají tvar: A  aB nebo A  a, kde A, B  N, a T Poznámka: pravidla ve tvaru A  aB má pravá regulární gramatika pravidla ve tvaru A  Ba má levá regulární gramatika České vysoké učení technické v Praze Fakulta dopravní

20 Příklad regulární gramatiky
gramatika generující celočíselné kladné konstanty používané v jazyce C desítkové konstanty začínají 1-9 osmičkové konstanty začínají 0 šestnáctkové konstanty začínají 0x G = (N, T, P, S) N = { S, X, D, H, O } T = { 0,...,9,x,A,..., F } České vysoké učení technické v Praze Fakulta dopravní

21 Příklad regulární gramatiky
České vysoké učení technické v Praze Fakulta dopravní

22 České vysoké učení technické v Praze
Konečné automaty regulární jazyk generovaný regulární gramatikou lze přijímat konečným automatem KA je model lexikálního analyzátoru, který rozhoduje, zda je přijímaný řetězec z daného jazyka KA je ekvivalentní regulární gramatice České vysoké učení technické v Praze Fakulta dopravní

23 České vysoké učení technické v Praze
Konečné automaty konečný automat je pětice kde T je konečná množina vstupních písmen Q je konečná množina vnitřních stavů  je stavově přechodová: funkce : Q  T  Q pro deterministický automat relace   Q  T  Q pro nedeterministický automat České vysoké učení technické v Praze Fakulta dopravní

24 České vysoké učení technické v Praze
Konečné automaty K je množina koncových stavů q0  je počáteční stav automatu Poznámka: automat nemá výstupní funkci po přijetí vstupního slova nás zajímá, zda automat skončil v nějakém stavu s K automat nemusí být deterministický lze jej převést na deterministický České vysoké učení technické v Praze Fakulta dopravní

25 České vysoké učení technické v Praze
Konečné automaty České vysoké učení technické v Praze Fakulta dopravní

26 Konstrukce konečného automatu z regulární gramatiky
množina vstupních písmen automatu X = T množina vnitřních stavů automatu Q = N  {U}, U N každé pravidlo A  aB implikuje přechod (A,a)=B, každé pravidlo A  a implikuje přechod (A,a)=U množina koncových stavů K = {U}, resp. K={U,S}, pokud existuje pravidlo S   České vysoké učení technické v Praze Fakulta dopravní

27 Příklad 4 Lexikální symboly v programovacích jazycích jsou konstanty, proměnné, operátory atd. V programovacím jazyce C je možné celočíselné konstanty zapsat v desítkové, osmičkové nebo šestnáctkové soustavě. Číslo zapsané v desítkové soustavě začíná cifrou 1 až 9, číslo zapsané v osmičkové soustavě začíná cifrou 0, číslo zapsané v šestnáctkové soustavě začíná 0x nebo 0X. Příklad: desítkově: 12, 25, 95 osmičkově: 05, 0123 šestnáctkově: 0x2F, 0X11 Navrhněte automatový model části lexikálního analyzátoru, který rozpozná, zda je číslo na vstupu zapsáno v desítkové, osmičkové nebo šestnáctkové soustavě.

28 navržený automat bude bez výstupní funkce; po zpracování vstupního čísla nás zajímá, ve kterém stavu automat končí; nejsou uvažovány chyby (doplňte sami příslušné stavy a přechody)

29 KA ekvivalentní regulární gramatice z příkladu
automat je nedeterministický S U počáteční stav koncový stav České vysoké učení technické v Praze Fakulta dopravní

30 KA ekvivalentní regulární gramatice z příkladu
odpovídající deterministický automat (minimalizovaný) S počáteční stav koncové stavy České vysoké učení technické v Praze Fakulta dopravní

31 České vysoké učení technické v Praze
Regulární výrazy je dána konečná abeceda T regulární výrazy generují regulární jazyk, definují se rekurzivně, pomocí operací „*“ (iterace), „·“ (zřetězení) a „+“ (sjednocení) Definice: 1) Každé písmeno x  T je regulární výraz. 2) Jsou-li E1, E2 regulární výrazy, pak E1 · E2, E1+ E2, E1 *, (E1) jsou také regulární výrazy. 3) Žádné jiné řetězce za regulární výrazy nepovažujeme. České vysoké učení technické v Praze Fakulta dopravní

32 Regulární výraz generující konstanty jazyka C
( )( )*+0( )*+ +0x( A+...+F)( A+...+F)* České vysoké učení technické v Praze Fakulta dopravní

33 České vysoké učení technické v Praze
Ekvivalence regulární gramatiky, regulární výrazy a konečné automaty jsou vzájemně ekvivalentní a převoditelné Regulární gramatiky Konečné automaty Regulární výrazy České vysoké učení technické v Praze Fakulta dopravní

34 Příklad bezkontextové gramatiky
gramatika generující jednoduchý ukázkový programovací jazyk G = {N,T,P,S} N = {S,Posl,Blok,Příkaz,Podm} T = { main,{,},;,cti_x,pis_x,x,++,--, if,(,),else,==,<,>,0,!= } České vysoké učení technické v Praze Fakulta dopravní

35 České vysoké učení technické v Praze
Pravidla gramatiky S  main { Posl }, Posl  Příkaz, Posl  Příkaz Posl Blok  Příkaz, Blok  { Posl } Příkaz  cti_x;, Příkaz  pis_x; Příkaz  x++;, Příkaz  x—-; Příkaz  if(Podm) Blok Příkaz  if(Podm) Blok else Blok Podm  x==0, Podm  x>0, Podm  x<0, Podm  x!=0 České vysoké učení technické v Praze Fakulta dopravní

36 Příklad generované věty
S  main { Posl }  main { Příkaz } main { if(Podm) Blok }  main { if(x!=0) Blok }  main { if(x!=0) Příkaz }  main { if(x!=0)if(Podm)Blok else Blok }  main { if(x!=0)if(x<0)Příkaz else Příkaz}  main { if(x!=0)if(x<0)x++; else Příkaz}  main { if(x!=0)if(x<0)x++; else x--;} České vysoké učení technické v Praze Fakulta dopravní

37 Jiný příklad generované věty
S  main { Posl }  main { Příkaz } main { if(Podm) Blok else Blok }  main { if(Podm) Příkaz else Blok }  main { if(x!=0) Příkaz else Příkaz }  main { if(x!=0)if(Podm)Blok else Příkaz }  main { if(x!=0)if(x<0)Příkaz else Příkaz}  main { if(x!=0)if(x<0)x++; else Příkaz}  main { if(x!=0)if(x<0)x++; else x--;} přepisuji vždy levý neterminální symbol, jde o levou derivaci České vysoké učení technické v Praze Fakulta dopravní

38 České vysoké učení technické v Praze
Nejednoznačnost Všimněte si: pomocí dvou různých derivací byly vygenerovány dvě stejné věty jazyka, tj. mají stejnou syntaxi, ale různou sémantiku (význam) takové jazyky se nazývají nejednoznačné řešení: definování dodatečných pravidel v programovacích jazycích, např. else se vždy vztahuje k nejbližšímu if České vysoké učení technické v Praze Fakulta dopravní

39 Scénka Felixe Holzmanna a Františka Budína o vaření
H: „Já podle kuchařky moc rád nevařím.“ B: „Proč ne, když je to dobrá kuchařka…“ H: „Já jednou dělal podle kuchařky knedlíky, tam stálo: krájejte tři dny starý housky. Já už jich měl nakrájenou plnou vanu a ještě jsem nekrájel ani den.“ České vysoké učení technické v Praze Fakulta dopravní

40 Krájejte tři dny starý housky
příslovečné určení času přívlastek předmět Krájejte tři dny starý housky přívlastek předmět České vysoké učení technické v Praze Fakulta dopravní

41 Analýza bezkontextového jazyka
Bezkontextový jazyk je analyzován zásobníkovým automatem České vysoké učení technické v Praze Fakulta dopravní

42 Překladové regulární gramatiky
překladová regulární gramatika G = (N,T,D,P,S) kde: N - množina neterminálních symbolů T - množina terminálních symbolů D- množina výstupních symbolů P - množina pravidel S - startovací symbol gramatiky SN České vysoké učení technické v Praze Fakulta dopravní

43 Pravidla překladové regulární gramatiky
pravidla mají tvar: A  aB nebo A  a, kde A, B  N, a T,   D* (D* je množina všech řetězů nad abecedou D) České vysoké učení technické v Praze Fakulta dopravní

44 Příklad překladové regulární gramatiky
G= {N,T,D,P,S} N = {S,A,K,X} T = {a,+,*} D = {,,} P = { S  aA, A  +K, A *X, K  a, X  a } příklad: S  aA a+K  a+a gramatika přeloží vstupní výraz a+a v infixové formě na výst. výraz  v postfixové formě České vysoké učení technické v Praze Fakulta dopravní

45 Konečný překladový automat
konečný překladový automat je šestice kde T je konečná množina vstupních písmen D je konečná množina výstupních písmen Q je konečná množina vnitřních stavů K je konečná množina koncových stavů q0 je počáteční stav České vysoké učení technické v Praze Fakulta dopravní

46 Konečný překladový automat
 je zobrazení: : Q  T  { Mi: Mi  Q  D* } pokud má překladová gramatika pravidla ve tvaru A  ayB, resp. A  ay, kde y D (pravidlo obsahuje pouze jedno výstupní písmeno) a neexistují dvě pravidla taková, že A  ayB a A  ayC , pak je překladový automat deterministický a zachovává při překladu vlastnosti sekvenčního zobrazení České vysoké učení technické v Praze Fakulta dopravní

47 Konečný překladový automat
zobrazení lze pak „rozdělit“ na: stavově přechodovou funkci : Q  T  Q výstupní funkci : Q  T  D automat je „klasický“ Mealyho automat Poznámka: konečné automaty, které se používají v jiné oblasti než překladů (např. jako modely sekvenčních logických systémů), nemají v definici automatu množinu koncových stavů K České vysoké učení technické v Praze Fakulta dopravní

48 Konečný překladový automat k příkladu
automat je deterministický České vysoké učení technické v Praze Fakulta dopravní

49 Regulární překladové gramatiky Konečné překladové automaty
Ekvivalence existuje ekvivalence Regulární překladové gramatiky Konečné překladové automaty České vysoké učení technické v Praze Fakulta dopravní

50 České vysoké učení technické v Praze
Příklady k zamyšlení Navrhněte regulární gramatiku, která generuje desetinná čísla se znaménkem Navrhněte bezkontextovou gramatiku, která generuje logické výrazy v součtové formě pomocí spojek and (*), or (+), negace (-) a vstupních proměnných a,b,c, výstupní proměnná je y. Výraz je zakončen středníkem. České vysoké učení technické v Praze Fakulta dopravní

51 České vysoké učení technické v Praze
Doplnění gramatiky neslouží pouze jazykům gramatikou mohou být definovány obecně jakékoliv generativní systémy např. gramatika „přírody“ L – systémy (Lindenmayerovy systémy) skupina fraktálů definovaných pomocí přepisovacích gramatik České vysoké učení technické v Praze Fakulta dopravní

52 Sierpinského trojúhelník
G = (V,P,S) V = {S,G,F,+,-} konečná množina symbolů P = {S  FGF + +FF + +FF, F  FF, G  + + FGF − −FGF − −FGF + +} interpretace pomocí „želví grafiky“ "F" – posun želvy vpřed (nakreslí čáru) "G" – ignoruje "+" – otočení želvy doleva o zadaný úhel "–" – otočení želvy doprava o zadaný úhel České vysoké učení technické v Praze Fakulta dopravní

53 České vysoké učení technické v Praze
pro úhel 60 stupňů vzniknou trojúhelníky České vysoké učení technické v Praze Fakulta dopravní

54 České vysoké učení technické v Praze
Kochova křivka G = (V,P,S) V = {S, F,+,-} konečná množina symbolů P = {S  F +F − − F + F, F  F +F − − F + F} „želví grafika“ "F" – posun želvy vpřed (nakreslí čáru) "+" – otočení želvy doleva o zadaný úhel "–" – otočení želvy doprava o zadaný úhel České vysoké učení technické v Praze Fakulta dopravní

55 České vysoké učení technické v Praze
úhel = 60 stupňů České vysoké učení technické v Praze Fakulta dopravní


Stáhnout ppt "Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech"

Podobné prezentace


Reklamy Google