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

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

Syntaxí řízený překlad

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

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.

Jednoznačné a nejednoznačné gramatiky

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

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

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

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

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

Vztah jazyků Chomskeho hierarchie a jazyků TS

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

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

Implementace LL(1) překladů

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

Automaty a gramatiky

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

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

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

Regulární výrazy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 14. března / 20

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

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

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})

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

Syntaxí řízený překlad

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

Třída PTIME a třída NPTIME. NP-úplnost.

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

Vztah teorie vyčíslitelnosti a teorie složitosti. IB102 Automaty, gramatiky a složitost, /31

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

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

Teoretická informatika - Úkol č.1

Katedra počítačů FEL

8) Jaké jsou důvody pro použití víceprůchodového překladače Dříve hlavně kvůli úspoře paměti, dnes spíše z důvodu optimalizace

AUTOMATY A GRAMATIKY

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

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

Konečný automat. Jan Kybic.

2 Formální jazyky a gramatiky

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:

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

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

Teoretická informatika

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

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

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

Úvod do informatiky. Miroslav Kolařík

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 Σ

Konečný automat Teorie programovacích jazyků

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

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

Strukturální rozpoznávání

Naproti tomu gramatika je vlastně soupis pravidel, jak

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

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

Naproti tomu gramatika je vlastně soupis pravidel, jak

Konstruktory překladačů

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

1. Definujte překladač. Jaký je rozdíl mezi interpretačním a kompilačním překladačem? Co je to konverzační překladač?

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

4. NP-úplné (NPC) a NP-těžké (NPH) problémy

DISTRIBUOVANÁ SYNTAKTICKÁ ANALÝZA

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

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

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

ZÁKLADY TEORETICKÉ INFORMATIKY

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.

Vlastnosti regulárních jazyků

Poznámka. Kezkoušcejemožnojítjenposplněnípožadavkůkzápočtu. Kromě čistého papíru a psacích potřeb není povoleno používat žádné další pomůcky.

Minimalizace KA - Úvod

Teoretická informatika TIN 2013/2014

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

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY SYNTAKTICKÁ ANALÝZA ZALOŽENÁ NA MULTIGENEROVÁNÍ PARSING BASED ON MULTIGENERATION

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

Teoretická informatika

Predik atov a logika - pˇredn aˇska () Predik atov a logika - pˇredn aˇska / 16

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

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 21. března / 50

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

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

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

Turingovy stroje. Turingovy stroje 1 p.1/28

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

Hranová konzistence. Arc consistency AC. Nejprve se zabýváme binárními CSP. podmínka odpovídá hraně v grafu podmínek

S ROZPTÝLENÝM KONTEXTEM

Lexikální analýza. Rozhraní lexikálního analyzátoru. Miroslav Beneš Dušan Kolář. M. Beneš, D. Kolář: Lexikální analýza 1. Lexikální analýza 2

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

Lexikální analýza. Miroslav Beneš Dušan Kolář

Poznámka. Kezkoušcejemožnojítjenposplněnípožadavkůkzápočtu. Kromě čistého papíru a psacích potřeb není povoleno používat žádné další pomůcky.

UČEBNÍ TEXTY VYSOKÝCH ŠKOL. Prof. RNDr. Milan Češka, CSc. Gramatiky a jazyky

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ

Základní datové struktury III: Stromy, haldy

ZÁPADOČESKÁ UNIVERZITA V PLZNI

IV113 Validace a verifikace. Detekce akceptujícího cyklu. Jiří Barnat

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Západočeská univerzita FAKULTA APLIKOVANÝCH VĚD

Martin Plicka. October 24, 2012

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

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

Transkript:

Plán přednášky Výpočetní modely pro rozpoznávání bezkontextových jazyků zásobníkové automaty LL(k) a LR(k) analyzátory Obecný algoritmus pro parsování bezkontextových jazyků dynamické programování 1

Zásobníkový automat Schéma, stav v průběhu výpočtu: a a b a b b b b a Vstupní páska q Řídící jednotka X Y Z Zásobník obsahující zásobníkové symboly 2

Zásobníkový automat výpočetní krok Dvě možnosti: s posunem hlavy nebo bez posunu. a a b a b b b b a a a b a b b b b a q X Y Z r A 3 A 2 A 1 Y Z 3

Zásobníkový automat definice Zásobníkový automat je šestice A = ( Q, Σ, Γ, δ, q Z ) 0, 0, kde Q je konečná množina stavů Σ je vstupní abeceda Γ je zásobníková abeceda ( { }) ( * δ : Q Σ ε Γ P Q Γ ) je přechodová relace q 0 Q je počáteční (iniciální) stav Γ je počáteční zásobníkový symbol Z 0 Jedná se o nedeterministický model. 4

Zásobníkový automat počáteční stav řídící jednotka v počátečním stavu q 0 zásobník obsahuje pouze počáteční symbol Z 0 a a b a b b b b a q 0 Z 0 5

Přijmutí vstupu Přijímání prázdným zásobníkem po přečtení celého vstupu je zásobník prázdný. a a b a b b b b a q 6

Příklad zásobníkového automatu I Sestrojíme zásobníkový automat přijímající jazyk R L = wcw w { a, b * { } 1 } vstup: b a a c a a b A A B stav zásobníku před přečtením symbolu c Levou část postupně reprezentujeme v zásobníku. Po přečtení symbolu c kontrolujeme, zda obsah zásobníku se shoduje s pravou částí. Zkontrolované symboly ze zásobníku mažeme. 7

Příklad zásobníkového automatu II Modifikace předchozího jazyka: L = { R ww w { a, b * } 2 } vstup: b a a a a b A A B stav zásobníku po přečtení třech symbolů Sestrojíme (nedeterministický) zásobníkový automat: pro každý vstupní znak nedeterministicky testuje, zda se jedná o konec první poloviny vstupu. 8

Ekvivalence automatů a gramatik Věta: Ke každému zásobníkovému automatu lze sestrojit bezkontextovou gramatiku, která generuje stejný jazyk. Zás. automat můžeme převést na ekvivalentní s jediným stavem (zapisujeme původní stavy na zásobník) A ({ q }, Σ, Γ, δ, q Z ) = Σ, Γ 0 0, 0 disjunktní G = ( Γ, Σ, Z0, P) ( N aα ) P ( q, α ) ( q, 0 a, N ) a ( Σ {ε} ) 0 δ 9

Ekvivalence automatů a gramatik Věta: Ke každé bezkontextové gramatice lze sestrojit zásobníkový automat, který rozpoznává stejný jazyk. ( Π,Σ, S P) G =, ( q }, Σ, Π Σ,, q S ) A =, { 0 δ 0 ( q, 0 ε, N ) = {( q0, α ) ( N α ) P} ( q a, a) = {( )} N Π : δ a Σ : δ,ε 0, q0 10

Přijímání koncovým stavem Přijímání koncovým stavem rozšíříme definici o množinu přijímacích stavů F Q a a b a b b b b a q f q f F X Y Z je ekvivalentní s přijímáním prázdným zásobníkem 11

Deterministické zásobníkové automaty A = ( Q, Σ, Γ, δ, q0, F, Z0 ) ( { }) ( * Σ ε Γ P Q ) ( ) 1 ( ) 1 δ : Q Γ 1. δ q, a, X pro všechna a Σ {ε} 2. je-li δ q, ε, X =, pak δ ( q, a, X ) = 0 pro a Σ Přijímání definováno koncovým stavem. Deterministické zásobníkové automaty nerozpoznají všechny bezkontextové jazyky, odlišujeme deterministické bezkontextové jazyky. L { R ww w { a, b * } 2 = }.. není deterministický bezkontextový 12

LL(k) a LR(k) syntaktické analyzátory automaty pro parsování deterministických bezkontextovým jazykům, odvozené ze zásobníkových automatů LL(k) velikost výhledu LR(k) leftmost derivation rightmost derivation left to right směr pohybu hlavy LL(k) jsou slabší než LR(k) LR(1).. parsují všechny det. bezkontextové jazyky LR(0).. parsují všechny det. bezkontextové jazyky, pokud je vstup ohraničen zprava speciálním znakem GNU bison, Yacc generátory analyzátorů 13

Konstrukce LL(1) analyzátoru 1. Pro každé pravidlo A w definujeme množiny First(A) a First(w) obsahující terminály, kterými mohou začínat slova vygenerovaná z A, resp. w. 2. Pro každý neterminál A definujeme množinu Follow(A) obsahující terminály, které mohou následovat bezprostředně za A v nějakém odvození (např. a následuje za A v řetězci uaav). Pozn.: u,v,w označují řetězce z terminálů a neterminálů. 14

Příklad gramatiky S F S ( S + F) F a First ( S) = {(, a} First(( S + F)) = {(} First ( F) = { a} First ( a) = { a} Follow( S) = { +,)} Follow( F) = {)} 15

Sestavení parsovací tabulky T[A,a] obsahuje pravidlo A w právě tehdy když a je ve First(w) nebo je ve First(w) a a je ve Follow(A) ε S F ( ) a + $ S ( S + F) S F F a Vstup je ukončen znakem $. 16

Výpočet množiny First Následující kroky provádíme pro všechna pravidla gramatiky, A w označuje libovolné pravidlo. 1. Inicializuj každé First(A) a First(w) prázdnou množinou. 2. Spočítej First(w) následovně: First(av) = {a} pro každý terminál a First(Nv) = First(N) pro každý neterminál N kde ε není ve First(N) First(Nv) = First(N) { ε } First(v) pro každý neterminál N jehož First(N) obsahuje ε First( ε ) = { ε } 3. Vlož prvky z First(w) do First(A). 4. Opakuj kroky 2 a 3. Skonči v případě, že se žádná množina již nezměnila. 17

Výpočet množiny Follow 1. Inicializuj každé Follow(A) prázdnou množinou. 2. Pro každé pravidlo tvaru A ubv každý terminál z First(v) přidej do Follow(B) když First(v) obsahuje ε, vlož vše z Follow(A) do Follow(B) 3. Opakuj krok 2 dokud se některé množiny Follow mění. 18

Obecný parsovací algoritmus Cocke-Younger-Kasami (CYK) algoritmus využívá techniku dynamického programování ( ) G = Π,Σ, S, P - bezkontextová gramatika v Chomského normální formě Vstup: u = a 1 a 2 a n (slovo nad Σ ) Otázka: Generuje gramatika G slovo u? Π = { N,, } 1 N m a S = N 1 (očíslujeme neterminály) Počítáme boolovské pole g[ 1.. n, 1.. n, 1.. m], kde hodnotu g[ i, j, k] nastavíme na true, pokud podslovo slova u začínající indexem i a mající délku j lze vygenerovat z neterminálu. N k 19

CYK algoritmus boolean CYK(G,u) end for i:=1 to n do for each N j a i do g[i,1,j]:=true; for i:=2 to n do // délka podslova for j:=1 to n-i+1 do // index podslova for k:=1 to i-1 do // pozice rozdělení podslova for each N N N do if g[j,k,q] && g[j+k,i-k,r] then return g[1,n,1]; p g[j,i,p]:=true; q r 20

Příklad = ( Π,Σ, S P) Σ = { a,b} Π = { S, A, B, C, D} G, u = aabbb S CB S CD D C BB AS A a B b S b 5 S Délka podslova 4 3 2 C S S C D D 1 A A B, S B, S B, S a a b b b 21

Získání derivačního stromu = ( Π,Σ, S P) Σ = { a,b} Π = { S, A, B, C, D} G, u = aabbb S CB S CD D C BB AS A a B b S b 5 4 3 2 1 S C A S S C A D D B, S B, S B, S a a b b b 22

Časová složitost CYK algoritmu ( Π,Σ, S P) G =, u = a a 1 2 a n V algoritmu jsou 4 vnořené cykly => časová složitost je O ( 3 P n ) 23