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

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

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

Podobné prezentace


Prezentace na téma: "České vysoké učení technické v Praze Fakulta dopravní Gramatiky a jazyky Přednáška z předmětu Řízení v komplexních systémech."— Transkript prezentace:

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

2 České vysoké učení technické v Praze Fakulta dopravní 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}

3 České vysoké učení technické v Praze Fakulta dopravní 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

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

5 České vysoké učení technické v Praze Fakulta dopravní 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)

6 České vysoké učení technické v Praze Fakulta dopravní 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  0 A 1, A  0 A 1, A   } (symbol  představuje prázdný symbol)

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

8 České vysoké učení technické v Praze Fakulta dopravní 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: 0 A 1  * popis derivace –posloupnost pravidel – viz dříve –derivační strom

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

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

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

12 České vysoké učení technické v Praze Fakulta dopravní Klasifikace gramatik neomezené - L(0) –pravidla jsou obecná kontextové – L(1) – γ 1 Aγ 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

13 České vysoké učení technické v Praze Fakulta dopravní 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

14 České vysoké učení technické v Praze Fakulta dopravní 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

15 České vysoké učení technické v Praze Fakulta dopravní 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

16 České vysoké učení technické v Praze Fakulta dopravní 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

17 České vysoké učení technické v Praze Fakulta dopravní 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

18 České vysoké učení technické v Praze Fakulta dopravní 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

19 České vysoké učení technické v Praze Fakulta dopravní 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

20 České vysoké učení technické v Praze Fakulta dopravní 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 }

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

22 České vysoké učení technické v Praze Fakulta dopravní 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

23 České vysoké učení technické v Praze Fakulta dopravní 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

24 České vysoké učení technické v Praze Fakulta dopravní Konečné automaty K je množina koncových stavů q 0 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ý

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

26 České vysoké učení technické v Praze Fakulta dopravní 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  

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 České vysoké učení technické v Praze Fakulta dopravní KA ekvivalentní regulární gramatice z příkladu automat je nedeterministický S počáteční stav U koncový stav

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

31 České vysoké učení technické v Praze Fakulta dopravní 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 E 1, E 2 regulární výrazy, pak E 1 · E 2, E 1 + E 2, E 1 *, (E 1 ) jsou také regulární výrazy. 3) Žádné jiné řetězce za regulární výrazy nepovažujeme.

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

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

34 České vysoké učení technické v Praze Fakulta dopravní 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, != }

35 České vysoké učení technické v Praze Fakulta dopravní 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

36 České vysoké učení technické v Praze Fakulta dopravní 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--; }

37 České vysoké učení technické v Praze Fakulta dopravní 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

38 České vysoké učení technické v Praze Fakulta dopravní 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

39 České vysoké učení technické v Praze Fakulta dopravní 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.“

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

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

42 České vysoké učení technické v Praze Fakulta dopravní 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

43 České vysoké učení technické v Praze Fakulta dopravní 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)

44 České vysoké učení technické v Praze Fakulta dopravní 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ě

45 České vysoké učení technické v Praze Fakulta dopravní 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

46 České vysoké učení technické v Praze Fakulta dopravní Konečný překladový automat  je zobrazení: –  : Q  T  { M i : M i  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í

47 České vysoké učení technické v Praze Fakulta dopravní 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

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

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

50 České vysoké učení technické v Praze Fakulta dopravní 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.

51 České vysoké učení technické v Praze Fakulta dopravní 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

52 České vysoké učení technické v Praze Fakulta dopravní 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

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

54 České vysoké učení technické v Praze Fakulta dopravní 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

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


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

Podobné prezentace


Reklamy Google