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

Slides:



Advertisements
Podobné prezentace
GRAMATIKY Bori · Brkos 2011.
Advertisements

J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
Lekce - Automaty a regularní výrazy
Dynamické systémy.
7. Přednáška limita a spojitost funkce
Dualita úloh lineárního programování a analýza citlivosti
1 – Informatika Nauka (tj. věda) o informacích, tj. o zápisu (kódování (angl.)), přenosu (transfer (angl.)), zpracování (procesování (angl.)) informací.
Fakulta elektrotechniky a informatiky
Varianty Turingova stroje Výpočet funkcí pomocí TS
Principy překladačů Mezikód Jakub Yaghob.
Implementace konečného automatu v Prologu Tato část popisuje strukturu konkrétního automatu a bude se lišit pro každý automat. 1.Definice přechodové funkce:
Lexikální a syntaktická analýza Jakub Yaghob
RoBla Číselné soustavy.
TRIGONOMETRIE OBECNÉHO TROJÚHELNÍKU
Fakulta životního prostředí Katedra informatiky a geoinformatiky
Příklady použití zásobníkového automatu
SWI072 Algoritmy komprese dat1 Algoritmy komprese dat Statistické metody komprese dat a Shannon-Fanův kód.
Výukový materiál zpracován v rámci projektu EU peníze školám
Church-Turingova teze Univerzální Turingův stroj Diagonalizace
Jednoduché datové typy
ORIENTOVANÉ GRAFY V této části se seznámíme s následujícími pojmy:
Formální jazyky a gramatiky
Abeceda a formální jazyk
Sémantická analýza Jakub Yaghob
Příklady jazyků Příklad 1: G=({S}, {0,1}, P, S)
Syntaxí řízený překlad
Jazyk vývojových diagramů
Matice.
Cvičení.
3. Příkazy  Příkazy dělíme na jednoduché a strukturované.  Jednoduché příkazy - žádnou jejich dílčí částí neni příkaz - přiřazovací, vstupu a výstupu,
Výroková logika.
AUTOMATY Bori · Brkos Formální jazyk {a, b, aa, ab, ba, bb, aaa, aab, aba, abb, baa, bab, bba, bbb} nad abecedou {a, b}
Úvod do předmětu Opakování
Vztah bezkontextových jazyků a ZA
Regulární výrazy Regulární výrazy představují další možnost popisu regulárních jazyků (právě od nich dostaly své jméno). Definice: Množina všech regulárních.
Vztah mezi koloniemi s paralelním přepisováním Šárka Vavrečková
Konečné automaty Vít Fábera.
Formální modely výpočtu Tomáš Vaníček Katedra inženýrské informatiky Stavební fakulta ČVUT Thákurova 7, Praha 6 Dejvice, b407
Srovnání Petriho sítí a HDA David Ježek. Vícedimensionální automaty Klasické automaty –nemají metodu jak vyjádřit „pravou“ souběžnost událostí A, B 0.
Zpracování neurčitosti Fuzzy přístupy RNDr. Jiří Dvořák, CSc.
Konečné automaty V rámci předmětu Řízení v komplexních systémech
Turingův stroj.
Úvod do teorie konečných automatů
Automaty a gramatiky.
Konečné automaty a vyhledávání
Příklady v jazyku C – část 1. Výstupy pomocí printf. printf(" Tisk textu \n v apostrofech \n ") ; p=10; printf("%d\n", p) ; /* tisk konstanty */ printf("Tisk.
ZÁKLADNÍ POJMY. ZDROJOVÝ TEXT PROGRAMU Tvoří: klíčová slova komentáře identifikátory.
String-distributing systems Top-Down / Bottom-Up Ing. Zbyněk Křivka Školitel: Doc. Alexander Meduna.
Formální definice Konečná množina vnitřních stavů Q Konečná vstupní abeceda A Počáteční stav q 0 Množina přijímacích stavů K.
Podprogramy (subroutines) Pojmenované kousky programu, které –tvoří logicky ucelené části –se v programu opakují Jsou zapsány na jednom místě a v případě.
Miroslav Beneš Dušan Kolář
© Institut biostatistiky a analýz INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ ANALÝZA A KLASIFIKACE DAT prof. Ing. Jiří Holčík, CSc.
Projekt MŠMTEU peníze středním školám Název projektu školyICT do života školy Registrační číslo projektuCZ.1.07/1.5.00/ ŠablonaIII/2 Sada08 AnotaceVysvětlení.
Matice Přednáška č.4. Definice: Soubor prvků nazýváme maticí typu i-tý řádek j-tý sloupec prvky matice.
Překladače 4. Lexikální analýza © Milan Keršlágerhttp:// Obsah: ● vstupní formáty,symboly.
Překladače 5. Syntaktická analýza
Výukový materiál zpracován v rámci projektu
MATEMATIKA Obsah přednášky. Opakování, motivační příklady Funkce.
Překladače 5. Syntaktická analýza
ZAL – 3. cvičení 2016.
MATEMATIKA Obsah přednášky. Opakování, motivační příklady Funkce.
Funkce výstupu (2) Funkce printf: deklarována v: stdio.h
Řetězce (24) Funkce strchr: deklarována v: string.h
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Překladače Syntaktická analýza
Zásobníkový automat Konečný automat i nedeterministický konečný automat umí řešit tytéž úlohy, akorát s různou efektivitou. Nazývají se regulární úlohy.
Modelování Transportních Procesů 2
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
Proměnné (1) Proměnná: Definice proměnných:
Predikátová logika.
Transkript prezentace:

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í

Č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í

Č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í

Č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í

Č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í

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í

Příklad jednoduché gramatiky příklad generovaného řetězce (věty): S  0A1  00A11  000A111  000111 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í

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

Č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í

Č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í

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í

Č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í

Č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í

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í

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í

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í

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í

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í

Č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í

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í

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

Č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í

Č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í

Č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í

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

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ě.

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)

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í

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í

Č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í

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

Č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í

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í

Č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í

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í

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í

Č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í

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í

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í

Analýza bezkontextového jazyka Bezkontextový jazyk je analyzován zásobníkovým automatem Č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 Č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) Č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ě Č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 České vysoké učení technické v Praze Fakulta dopravní

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í

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í

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

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í

Č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í

Č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í

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í

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

Č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í

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