Čísla značí použité pravidlo, šipka směr postupu Analýza shora. Analýza zdola A 2 B 3 B * C 2 C ( A ) 1 a A + B. A Derivace zleva:

Podobné dokumenty
Automaty a gramatiky

Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu / 43

Syntaxí řízený překlad

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory

Kapitola 6. LL gramatiky. 6.1 Definice LL(k) gramatik. Definice 6.3. Necht G = (N, Σ, P, S) je CFG, k 1 je celé číslo.

Vztah jazyků Chomskeho hierarchie a jazyků TS

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE.

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

Zásobníkový automat. SlovoaaaabbbbpatřídojazykaL={a i b i i 1} a a a a b b b b

Základy teoretické informatiky Formální jazyky a automaty

Fakulta informačních technologií. Teoretická informatika

Vlastnosti Derivační strom Metody Metoda shora dolů Metoda zdola nahoru Pomocné množiny. Syntaktická analýza. Metody a nástroje syntaktické analýzy

Jednoznačné a nejednoznačné gramatiky

Formální jazyky a gramatiky Teorie programovacích jazyků

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Implementace LL(1) překladů

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/31

Naproti tomu gramatika je vlastně soupis pravidel, jak

Formální jazyky a automaty Petr Šimeček

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

TURINGOVY STROJE. Doc. RNDr. Josef Kolář, CSc. Katedra teoretické informatiky, FIT České vysoké učení technické v Praze

Automaty a gramatiky. Uzávěrové vlastnosti v kostce R J BKJ DBKJ. Roman Barták, KTIML. Kvocienty s regulárním jazykem

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ PŘÍRODOVĚDECKÁ FAKULTA

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

Bezkontextové gramatiky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 6. května / 49

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

/1: Teoretická informatika(ti) přednáška 4

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/39

Bezkontextové jazyky 2/3. Bezkontextové jazyky 2 p.1/27

/01: Teoretická informatika(ti) přednáška 5

Bezkontextové jazyky 3/3. Bezkontextové jazyky 3 p.1/27

2 Formální jazyky a gramatiky

BRNO UNIVERSITY OF TECHNOLOGY FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INTELLIGENT SYSTEMS MASTER S THESIS AUTHOR

Přijímací zkouška na navazující magisterské studium 2018

Teoretická informatika

ZÁKLADY TEORETICKÉ INFORMATIKY

Strukturální rozpoznávání

Minimalizace KA - Úvod

Virtuální počítač. Uživatelský program Překladač programovacího jazyka Operační systém Interpret makroinstrukcí Procesor. PGS K.

SYNTAKTICKÁ ANALÝZA ZALOŽENÁ NA GRAMATICKÝCH A AUTOMATOVÝCH SYSTÉMECH PARSING BASED ON GRAMMAR AND AUTOMATA SYSTEMS

Teoretická informatika TIN 2013/2014

ZÁPADOČESKÁ UNIVERZITA V PLZNI

Na rozšiřující přednášce minulý týden jsme se věnovali zejména. algoritmu, který k zadanému konečnému automatu sestrojí ekvivalentní regulární výraz

Teoretická informatika

Návrh algoritmů pro sémantické akce při výstavbě interpretu metodou rekurzivního sestupu

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Překladač sestrojující k regulárnímu výrazu ekvivalentní konečný automat Připomeňme si jednoznačnou gramatiku G pro jazyk RV({a, b})

Automaty a gramatiky. Roman Barták, KTIML. Chomského normální forma

Syntaktická analýza. Implementace LL(1) překladů. Šárka Vavrečková. Ústav informatiky, FPF SU Opava

Postův korespondenční problém. Meze rozhodnutelnosti 2 p.1/13

Naproti tomu gramatika je vlastně soupis pravidel, jak

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

Úvod do informatiky. Miroslav Kolařík

Automaty a gramatiky. Roman Barták, KTIML. Separované gramatiky. Kontextové gramatiky. Chomského hierarchie

Učební texty k státní bakalářské zkoušce Programování Základy teoretické informatiky. študenti MFF 15. augusta 2008

Konečný automat. Jan Kybic.

AUTOMATY FAKULTA INFORMAČNÍCH TECHNOLOGIÍ BRNO UNIVERSITY OF TECHNOLOGY FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF INFORMATION SYSTEMS

AUTOMATY A GRAMATIKY

Vlastnosti regulárních jazyků

Konečný automat Teorie programovacích jazyků

IV. Základní pojmy matematické analýzy IV.1. Rozšíření množiny reálných čísel

popel, glum & nepil 16/28

Sekvenční logické obvody

Teoretická informatika - Úkol č.1

Morfologická analýza Bezkontextové gramatiky

Je regulární? Pokud ne, na regulární ji upravte. V původní a nové gramatice odvod te řetěz 1111.

Lexikální analýza Teorie programovacích jazyků

Syntaktická analýza založená na multigenerativních systémech Závěrečná práce z předmětu TJD. Jakub Martiško

Syntaxí řízený překlad

4.2 Syntaxe predikátové logiky

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ

Referát z předmětu Teoretická informatika

3. Sekvenční logické obvody

NP-úplnost problému SAT

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

1) Sekvenční a paralelní gramatiky

Definice. Necht M = (Q, T, δ, q 0, F ) je konečný automat. Dvojici (q, w) Q T nazveme konfigurací konečného automatu M.

Třídy složitosti P a NP, NP-úplnost

Univerzální Turingův stroj a Nedeterministický Turingův stroj

Přijímací zkouška na navazující magisterské studium 2015

p 2 q , tj. 2q 2 = p 2. Tedy p 2 je sudé číslo, což ale znamená, že

Základy algoritmizace. Pattern matching

Pumping lemma - podstata problému. Automaty a gramatiky(bi-aag) Pumping lemma - problem resolution. Pumping lemma - podstata problému

IV113 Validace a verifikace. Převod LTL formule na Büchi automat. Jiří Barnat

NÁSTROJ PRO PRÁCI S BÜCHI AUTOMATY

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

1.3. Číselné množiny. Cíle. Průvodce studiem. Výklad

Popište a na příkladu ilustrujte(rychlý) algoritmus testující, zda dané dva automaty jsou izomorfní.

SLD-derivace. Petr Štěpánek. S využitím materiálu Krysztofa R. Apta

PQ-stromy a rozpoznávání intervalových grafů v lineárním čase

Teoretická informatika průběh výuky v semestru 1

EKO-KOLONIE. Ústav informatiky, Filozoficko-přírodovědecká fakulta Slezské univerzity v Opavě 24.

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování.

Teorie informace: řešené příklady 2014 Tomáš Kroupa

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Turingovy stroje. Turingovy stroje 1 p.1/28

Poslední aktualizace: 14. října 2011

Transkript:

1) Syntaktická analýza shora a zdola, derivační strom, kanonická derivace ezkontextová gramatika gramatika typu 2 Nechť G = <U,V,S,R> je gramatika typu 1. Řekneme, že je gramatikou typu 2, platí-li: y U V y, x R, tzn. levá strana libovolného pravidla je tvořena jedním neterminálním symbolem. Syntaktická analýza shora, zdola syntaktickou analýzu (analýzu toho, zda předložený řetěz je či není generován gramatikou typu 2) lze provádět pomocí zásobníkového automatu ZA (obdoba KNA), nebo přímo, bez sestrojení ZA, analýzou shora či zdola: analýza shora z počátečního symbolu se pomocí zadaných pravidel gramatiky snažíme získat předložený řetěz analýza zdola v předloženém řetězu hledáme podřetěz, který je pravou stranou nějakého pravidla a ten nahradíme levou stranou tohoto pravidla. Tento postup opakujeme pro takto získané řetězy. Pokud je po konečném počtu opakování získán počáteční symbol, je předložený řetěz generován gramatikou Derivační strom Př. 1.: Nechť G = <{a,+,*,),(,a,,},{a,+,*,),(},{a},p> P = {(A,A+), (A,), (,*), (,), (,(A)), (,a)} očíslujme zadaná pravidla, tedy: (A,A+) (A,) (,*) (,) (,(A)) (,a) 1 2 3 4 5 6 Zjisti, zda řetěz a*(a+a) je generován L(G). Čísla značí použité pravidlo, šipka směr postupu Analýza shora Analýza zdola A 2 3 * a * ( a + a ) 6 6 6 4 4 4 4 5 2 ( A ) A + 6 1 1 a A + A 2 4 5 4 6 a 6 a 3 2 A Derivace zleva: 23465124646 Derivace zleva: 64642641532 Derivace zprava: 23514624646 Derivace zprava: 64642156432 Poznámka: Derivace je posloupnost použitých pravidel při dané analýze. Např. derivaci zprava analýzy zdola sepíšu takto: Modrá šipka (pravidla 6,4), narazili jsme na společný proud, musím se vrátit do druhé větve; zelená šipka (pravidla 6,4,2); nyní mohu zpracovat společný proud tedy oranžová šipka (pravidla 1,5); opět narážím na společný proud, vracím se do počátku druhého ramena, což představuje hnědá šipka (pravidla 6,4) a nakonec sepíši společný proud červená šipka (pravidla 3,2). Výsledná derivace: 6,4, 6,4,2, 1,5, 6,4, 3,2. 1/6

Kanonická derivace provedeme na příkladu 1: kanonická derivace zleva Kontrola písmen v zadaném řetězu Pravidlo, které užijeme Stádium vývoje derivačního stromu Pravý zbytek derivačního stromu a*(a+a) posun na první znak A A 2 3 * * 4 * * čtení a*(a+a) posun na a*(a+a) 6!!! a* a* čtení a*(a+a) posun na a*(a+a)!!! a* * čtení a*(a+a) posun na a*(a+a) 5!!! a*(a) (A) a* a*(a) A) 1 a*(a+) A+) 2 a*(+) +) 4 a*(+) +) čtení a*(a+a) posun na a*(a+a) 6!!! a*(a+) a+) čtení a*(a+a) posun na a*(a+a)!!! a*(a+) +) a*(a+) ) 4 a*(a+) ) čtení a*(a+a) posun na a*(a+a) 6!!! a*(a+a) a) čtení a*(a+a) posun na a*(a+a)λ!!! a*(a+a) ) a*(a+a)λ čtení a*(a+a)λ a*(a+a)λ Úspěch!!!!!!! - objeví-li se v derivačním stromě terminál, načte se aktuální písmeno v zadaném řetězu a provede se porovnání; pokud jsou shodná pokračuje se, pokud nejsou, ukončí se proces zadaný řetěz není generovaný jazykem L(G) 2) Zásobníkový automat (ZA) s jedním stavem (souvislost činnosti jeho komponent s průběhem kanonické derivace řetězu) λ ZA = ({s},v,u,δ,s,q,r) {s} množina všech stavů V terminální znaky U všechny znaky δ přechodová funkce s stav jednotky Q počáteční symbol v zásobníku R množina akceptačních stavů Páska se zadaným řetězem Přečtená část řídící jednotka (Automat) S Nepřečtená část W Čtecí hlava Situace automatu (s,w,ξ): s aktuální stav řídící jednotky (automatu) w V* nepřečtená část slova (řetěz) ξ U* symboly (řetěz) v zásobníku Zásobník ξ (LIFO) 2/6

ZA s jedním stavem předveden na příkladu 1. ZA = ({s},v,u,δ,s,a,ø) {s} množina všech stavů V = {a,+,*,),(} - terminální znaky U = V {A,,} všechny znaky δ přechodová funkce s stav jednotky A počáteční symbol v zásobníku Ø akceptačních stav Zásobníkový automat pracuje takto: Čtecí hlava je nastavena na první symbol zadaného řetězu, zásobník obsahuje počáteční symbol A. Postupně se provádí vyhodnocování situace automatu a následná akce (substituce či výmaz ze zásobníku) pomocí přechodové funkce. Přechodová funkce δ δ: {s} x (V {λ}) x u P({s} x u*) V závislosti na aktuálním stavu řídící jednotky (s {s}), aktuálního přečtené znaku (w {V {λ}}) a aktuálního znaku v zásobníku (u) je provedena náhrada takto: stav s je změněn na stav s a znak z vrcholu zásobníku u je zaměněn za nový znak u, případně řetěz u*. Obecně mohou nastat dvě situace: a) čtecí jednotka se nepohybuje, provádí se substituce a uložení substituovaných znaků do zásobníku (nastává při příchodu neterminálu tedy znaků A, či ), nebo b) čtení znaku čtecí jednotkou, ověření (zda je shodný načtený znak se znakem na vrcholu zásobníku), posun hlavy a výmaz znaku na vrcholu zásobníku. a) δ(s,λ,y) = {(s,x);y x je pravidlo} b) δ(s,α,α) = {(s,λ)} Pozn.: ad a) (s,λ,y): λ nenačtený znak (hlava je připravena číst, ještě nenačetla, jen se posunula) ad b) (s,λ): jedná se o výmaz znaku z vrcholu zásobníku ukončení: δ(s,λ,λ) = úspěch! Slovo patří do jazyka. Jedná se o konečný nedeterministický automat Konkrétně pro náš příklad: a) δ(s,λ,a) = {(s,a+),(s,)} δ(s,λ,) = {(s,*),(s,)} δ(s,λ,) = {(s,(a)),(s,a)} b) δ(s,a,a) = δ(s,+,+) = δ(s,*,*) = δ(s,),)) = δ(s,(,() = {(s,λ)} δ(s,λ,λ) = úspěch! Slovo patří do jazyka. 3/6

Ukázka vztahující se ke kanonické derivaci (řetěz a*(a+a) z příkladu 1.) Načtený znak zadaného řetězu Znak na vrcholu zásobníku Situace automatu (stav,zbytek_zadaného_řetězu, zásobník) Přechodová funkce Znaky vložené do zásobníku (od vrcholu dolů v tomto pořadí) λ A (s,a*(a+a),a) Počáteční stav A λ A (s,a*(a+a),a) δ(s,λ,a) = {(s,)} λ (s,a*(a+a),) δ(s,λ,) = {(s,*)} * λ (s,a*(a+a),*) δ(s,λ,) = {(s,)} * λ (s,a*(a+a),*) δ(s,λ,) = {(s,a)} a* a a (s,*(a+a),a*) δ(s,a,a) = {(s,λ)} * * * (s,(a+a),*) δ(s,*,*) = {(s,λ)} λ (s,(a+a),) δ(s,λ,) = {(s,(a))} (A) ( ( (s,a+a),(a)) δ(s,(,() = {(s,λ)} A) λ A (s,a+a),a)) δ(s,λ,a) = {(s,a+)} A+) λ A (s,a+a),a+)) δ(s,λ,a) = {(s,)} +) λ (s,a+a),+)) δ(s,λ,) = {(s,)} +) λ (s,a+a),+)) δ(s,λ,) = {(s,a)} a+) a a (s,+a),a+)) δ(s,a,a) = {(s,λ)} +) + + (s,a),+)) δ(s,+,+) = {(s,λ)} ) λ (s,a),)) δ(s,λ,) = {(s,)} ) λ (s,a),)) δ(s,λ,) = {(s,a)} a) a a (s,),a)) δ(s,a,a) = {(s,λ)} ) ) ) (s,λ,)) δ(s,),)) = {(s,λ)} λ λ λ (s,λ,λ) δ(s,λ,λ) = {(s,λ)} 3) Obecná definice zásobníkového automatu (ZA), pojmy situace ZA, přijímání prázdným zásobníkem, přijímání koncovým stavem, vztah ZA a KNA Zásobníkový automat ZA = (Q,Σ,Γ,δ,q 0,Z 0,F) Q neprázdná množina stavů Σ (sigma) konečná vstupní abeceda Γ (gama) konečná zásobníková abeceda δ (delta) přechodová funkce q 0 počáteční stav Z 0 počáteční zásobníkový symbol F akceptační stavy Přechodová funkce δ δ: Q x (Σ {λ}) x Γ P(Q x Γ*) Upřesníme-li: δ(q,a,x) = {(q 1,η 1 ),(q 2,η 2 ),...,(q m,η m )} a {Σ {λ}} vstupní abeceda doplněná o λ x Γ zásobníkový znak 4/6

q 1...q m stavy z množiny Q η 1...η m Γ* Pozn.: platí-li a = λ, jedná se o prázdné kroky Situace ZA (q,w,ξ) q aktuální stav w Σ* řetěz nad Σ (nepřečtená část slova (řetěz)) ξ Γ* symboly (řetěz) v zásobníku η Γ* část symbolů (řetězu) v zásobníku Řekneme, že situace (q,aw,yη) vede bezprostředně k situaci (q,w,xη); předložený řetěz se zkrátí o a (za předpokladu (q,x) δ(q,a,y)). Značíme: (q,aw,yη) (q,w,xη). w w a *(a+a) *(a+a) Můžeme rozšířit na posloupnost E E ' (situace E vede ne-bezprostředně k situaci E*) Přijímání slov ZA může přijímat dvěma způsoby: a) Prázdným zásobníkem N(ZA) b) Koncovým stavem L(ZA) N(ZA) = {w q Q : q 0, w, z 0 q,, } L(ZA) = {w q F, : q 0, w, z 0 q,, } q koncový stav λ konec slova (už není co číst v zadaném slově) η něco v zásobníku Zásobníkový automat se užívá jen pro bezkontextové jazyky a vyskytuje ve dvou variantách: a) s jedním stavem přijímá jen prázdným zásobníkem b) s více stavy přijímá buď prázdným zásobníkem, nebo koncovým stavem Př. 2.: ZA s rozpoznáváním prázdným zásobníkem; ZA = ({p,q},{0,1},{a,,},δ,p,a,ø) L = {ww R w {O,1}*} (w je z množiny řetězců nad množinou {0,1}; w R značí inverzi: je-li w = a 1 a 2...a n je w R = a n...a 2 a 1 ). Pravidla: 1. δ(p,0,a) = {(p,a)} 2. δ(p,1,a) = {(p,a)} 3. δ(p,0,) = {(p,),(q,λ)} 4. δ(p,0,) = {(p,)} 5. δ(p,1,) = {(p,)} 6. δ(p,1,) = {(p,),(q,λ)} 7. δ(q,0,) = {(η,λ)} 8. δ(q,1,) = {(q,λ)} 9. δ(p,λ,a) = {(q,λ)} 10. δ(q,λ,a) = {(q,λ)} Je slovo 110011 generováno jazykem L? 5/6

Jde o to, zda platí: p,110011, A?? p,, či q,, Lze vyvodit tuto posloupnost: p,110011, A 2 p,10011, A 6 p,0011,a 4 p,011, A 3 q,11, A 8 q,1,a 8 q,, A 10 q,, Pozn.: čísla nad znaky vyvozování značí číslo užitého pravidla. Platí: p,110011, A q,, a řetězec 110011 je generován jazykem. Vztah KNA = (S,V,g,I,G) a ZA = (Q,Σ,Γ,δ,q 0,Z 0,F) KNA (konečný nedeterministický akceptor) je speciálním případem ZA (zásobníkového automatu) 6/6