Syntaxí řízený překlad

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

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

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

Implementace LL(1) překladů

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

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

Syntaxí řízený překlad

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

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.

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.

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

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 Σ

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

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

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

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

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

Vztah jazyků Chomskeho hierarchie a jazyků TS

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

Úvod do informatiky. Miroslav Kolařík

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

AUTOMATY A GRAMATIKY

Naproti tomu gramatika je vlastně soupis pravidel, jak

Vlastnosti regulárních jazyků

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

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

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

Poslední aktualizace: 14. října 2011

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

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

Automaty a gramatiky

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

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

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

Konečný automat. Jan Kybic.

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

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

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

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

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č?

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

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

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

Konečný automat Teorie programovacích jazyků

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

ZÁKLADY TEORETICKÉ INFORMATIKY

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE FORMALISMY PRO SYNTAXÍ ŘÍZENÝ PŘEKLAD: PŘEKLADOVÉ A ATRIBUTOVÉ GRAMATIKY.

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

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

Teoretická informatika - Úkol č.1

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

Náznak ukázky syntaxe a sémantiky pro projekt. 1 Syntaktické prvky. Poslední aktualizace: 8.

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

2 Formální jazyky a gramatiky

ZÁPADOČESKÁ UNIVERZITA V PLZNI

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

Překladač a jeho struktura

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

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

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

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

Teoretická informatika TIN 2013/2014

Automaty a gramatiky(bi-aag)

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

Minimalizace KA - Úvod

Jednoznačné a nejednoznačné gramatiky

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE REALIZACE PŘEKLADAČE I

5. Sekvenční logické obvody

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

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

Martin Plicka. October 24, 2012

Naproti tomu gramatika je vlastně soupis pravidel, jak

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ

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

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

Deterministický konečný automat

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

Teoretická informatika

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

Regulární a bezkontextové jazyky I.

i=1 Přímka a úsečka. Body, které leží na přímce procházející body a a b můžeme zapsat pomocí parametrické rovnice

6. Vektorový počet Studijní text. 6. Vektorový počet

Program SMP pro kombinované studium

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

KLASIFIKACE A VYUŽITÍ GRAMATIK, JAZYKŮ A AUTOMATŮ

PŘÍRODOVĚDECKÁ FAKULTA UNIVERZITY PALACKÉHO KATEDRA INFORMATIKY. Gramatiky LALR(1) 2011 David Beer

Katedra počítačů FEL

Shodná zobrazení. bodu B ležet na na zobrazené množině b. Proto otočíme kružnici b kolem

Turingovy stroje. Turingovy stroje 1 p.1/28

NP-úplnost problému SAT

Lineární algebra : Lineární prostor

Substituce a morfismy jednoduše

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

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ

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

Teoretické základy informatiky I.

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

Strukturální rozpoznávání

goniometrickém tvaru z 1 = z 1 (cosα 1 +isinα 1 ), z 2 = z 2 (cosα 2 +isinα 2 ) Jejich součin = z 1 ( z 2 z 2 Jejich podíl: n-tá mocnina:

Transkript:

Syntaxí řízený překlad Překladový automat Šárka Vavrečková Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 27. listopadu 2008

Zobecněný překladový automat Překladový automat Překladový automat budeme konstruovat pro zadaný překlad Z L 1 L 2. Účelem je pro každý vstup h i (w) L 1 vytvořit na výstupu h o (w) L 2. Vytváříme konečný překladový automat pro regulární překladovou gramatiku, zásobníkový překladový automat pro bezkontextovou překladovou gramatiku.

Zobecněný překladový automat Překladový automat Překladový automat budeme konstruovat pro zadaný překlad Z L 1 L 2. Účelem je pro každý vstup h i (w) L 1 vytvořit na výstupu h o (w) L 2. Vytváříme konečný překladový automat pro regulární překladovou gramatiku, zásobníkový překladový automat pro bezkontextovou překladovou gramatiku.

Konečný překladový automat Definice (Konečný překladový automat) je uspořádaná šestice KP A = (Q, T, D, δ, q 0, F ), kde Q je konečná neprázdná množina stavů automatu, T je konečná neprázdná množina vstupních symbolů, D je konečná množina výstupních symbolů, D T =, δ je přechodová funkce automatu, δ : Q T P(Q D ) (u nedeterministického automatu by výsledkem zobrazení byla množina), q 0 Q je počáteční stav, F Q je množina koncových stavů automatu.

Definice (Konfigurace) Konfigurace konečného překladového automatu KP A = (Q, T, D, δ, q 0, F ) je uspořádaná trojice (q, x, y) Q T D. Počáteční konfigurace je (q 0, w, ε), kde w je vstupní řetězec (řetězec vstupních symbolů). Koncová konfigurace je (q f, ε, y), kde q f F, y je výstupní řetězec (řetězec výstupních symbolů).

Definice Překlad definovaný konečným překladovým automatem KP A = (Q, T, D, δ, q 0, F ) je množina uspořádaných dvojic Z(KP A) = {(u, v) ; (q 0, u, ε) (q f, ε, v), q f F }.

Činnost konečného překladového automatu Činnost automatu KP A = (Q, T, D, δ, q 0, F ) probíhá takto: na vstupu je vstupní řetězec složený ze symbolů množiny T, automat postupně čte vstupní řetězec a podle znaků v tomto řetězci přechází mezi stavy, při každém přechodu může na výstupní pásku přidat řetězec z množiny D, výpočet končí tehdy, když je přečteno vstupní slovo a automat je v některém z koncových stavů.

Činnost konečného překladového automatu Činnost automatu KP A = (Q, T, D, δ, q 0, F ) probíhá takto: na vstupu je vstupní řetězec složený ze symbolů množiny T, automat postupně čte vstupní řetězec a podle znaků v tomto řetězci přechází mezi stavy, při každém přechodu může na výstupní pásku přidat řetězec z množiny D, výpočet končí tehdy, když je přečteno vstupní slovo a automat je v některém z koncových stavů.

Činnost konečného překladového automatu Činnost automatu KP A = (Q, T, D, δ, q 0, F ) probíhá takto: na vstupu je vstupní řetězec složený ze symbolů množiny T, automat postupně čte vstupní řetězec a podle znaků v tomto řetězci přechází mezi stavy, při každém přechodu může na výstupní pásku přidat řetězec z množiny D, výpočet končí tehdy, když je přečteno vstupní slovo a automat je v některém z koncových stavů.

Činnost konečného překladového automatu Činnost automatu KP A = (Q, T, D, δ, q 0, F ) probíhá takto: na vstupu je vstupní řetězec složený ze symbolů množiny T, automat postupně čte vstupní řetězec a podle znaků v tomto řetězci přechází mezi stavy, při každém přechodu může na výstupní pásku přidat řetězec z množiny D, výpočet končí tehdy, když je přečteno vstupní slovo a automat je v některém z koncových stavů.

Sestrojení konečného automatu podle gramatiky Je dána regulární překladová gramatika P G = (N, T, D, R, S). Sestrojíme podle ní konečný překladový automat KP A = (Q, T, D, δ, q 0, F ) takto: Q = N {X}, X / N je nově přidaný stav, množiny T a D jen přejmeme jako vstupní a výstupní abecedu, q 0 = S, jestliže A aγb, a T, γ D je pravidlo gramatiky P G, tak definujeme δ(a, a) (B, γ) jestliže A aγ, a T, γ D je pravidlo gramatiky P G, tak definujeme δ(a, a) (X, γ) jestliže ε L(P G), pak F = {S, X}, jinak F = {X}.

Zadání Sestavte konečný překladový automat, který provádí inverzní zobrazení nad abecedou {0, 1}. Řešení KP A = ({q}, {0, 1}, { 0, 1 }, δ, q, {q}), s přechodovou funkcí δ: 0 1 δ(q, 0) = (q, 1 ) q 1 0 δ(q, 1) = (q, 0 ) Ukázka zpracování slova 110101: (q, 110101, ε) (q, 10101, 0 ) (q, 0101, 0 0 ) (q, 101, 0 0 1 ) (q, 01, 0 0 1 0 ) (q, 1, 0 0 1 0 1 ) (q, ε, 0 0 1 0 1 0 )

Zadání Sestavte konečný překladový automat, který provádí inverzní zobrazení nad abecedou {0, 1}. Řešení KP A = ({q}, {0, 1}, { 0, 1 }, δ, q, {q}), s přechodovou funkcí δ: 0 1 δ(q, 0) = (q, 1 ) q 1 0 δ(q, 1) = (q, 0 ) Ukázka zpracování slova 110101: (q, 110101, ε) (q, 10101, 0 ) (q, 0101, 0 0 ) (q, 101, 0 0 1 ) (q, 01, 0 0 1 0 ) (q, 1, 0 0 1 0 1 ) (q, ε, 0 0 1 0 1 0 )

Zadání Podle regulární gramatiky sestrojte konečný překladový automat. S a a A a a A B +C B a a A a a C a a + A a a + Řešení KP A = ({S, A, B, C, X}, {a, +, }, { a, +, }, δ, S, {X}), s přechodovou funkcí δ:

Zadání Podle regulární gramatiky sestrojte konečný překladový automat. S a a A a a A B +C B a a A a a C a a + A a a + Řešení KP A = ({S, A, B, C, X}, {a, +, }, { a, +, }, δ, S, {X}), s přechodovou funkcí δ: δ(s, a) = {(A, a ), (X, a )} δ(a, ) = {(B, ε)} δ(a, +) = {(C, ε)} δ(b, a) = {(A, a ), (X, a )} δ(c, a) = {(A, a + ), (X, a + )}

Zadání Podle regulární gramatiky sestrojte konečný překladový automat. S a a A a a A B +C B a a A a a C a a + A a a + Řešení KP A = ({S, A, B, C, X}, {a, +, }, { a, +, }, δ, S, {X}), s přechodovou funkcí δ: a + S (A, a ), (X, a ) A (C, ε) (B, ε) B (A, a ), (X, a ) C (A, a + ), (X, a + )

Zásobníkový překladový automat Definice (Zásobníkový překladový automat) je uspořádaná 8-ce ZP A = (Q, T, Γ, D, δ, q 0, Z 0, F ), kde Q je množina vnitřních stavů, T je množina vstupních symbolů, Γ je množina zásobníkových symbolů, D je množina výstupních symbolů, D T =, δ je zobrazení δ : Q (T {ε}) Γ P(Q Γ D ) (přechodová funkce automatu), q 0 Q je počáteční stav, Z 0 Γ je počáteční symbol na zásobníku, F Q je množina koncových stavů.

Definice (Konfigurace) Konfigurace zásobníkového překladového automatu má tvar (q, x, α, y) Q T Q D. Počáteční konfigurace je (q 0, w, Z 0, ε), kde w T je vstupní řetězec. Koncová konfigurace je definována podobně jako u běžného ZA podle typu automatu.

Definice Překlad definovaný zásobníkovým překladovým automatem ZP A = (Q, T, Γ, D, δ, q 0, Z 0, F ) je množina uspořádaných dvojic Z(ZP A) = { (u, v) ; (q 0, u, Z 0, ε) (q, ε, α, v), kde (q, ε, α, v) je koncová konfigurace }.

Sestrojení zásobníkového automatu podle gramatiky Máme překladovou gramatiku P G = (N, T, D, R, S). Sestrojíme překladový zásobníkový automat ZP A = (Q, T, Γ, D, δ, q 0, Z 0, ) Q = {q}, Γ = N T D, q 0 = q, Z 0 = S, δ funkce: Podle pravidel A α v R δ(q, ε, A) (q, α, ε) Vstupy pro každé a T δ(q, a, a) = (q, ε, ε) Výstupy pro každé a D δ(q, ε, a ) = (q, ε, a )

Rozkladová tabulka Rozkladová tabulka pro LL(1) překladovou gramatiku vypočteme potřebné množiny F IRST a F OLLOW vstupní gramatiky, ověříme, zda jde o LL(1) gramatiku (vstupní), vytvoříme rozkladovou tabulku vstupní gramatiky (výstupní symboly se nemohou objevit na vstupní pásce, podle které se řídíme).

Postup Rozkladová tabulka zjistíme množiny FIRST a FOLLOW vstupní gramatiky, ověříme, zda je vstupní gramatika typu LL(1), vytvoříme rozkladovou tabulku vstupní gramatiky (výstupní symboly se nemohou objevit na vstupní pásce, podle které se řídíme). Reakce na symboly v zásobníku 1 neterminál: expandujeme podle daného pravidla, ale číslo pravidla nezapisujeme na výstup 2 vstupní terminál: voláme proceduru (funkci) pop (podle rozkladové tabulky) 3 výstupní terminál: přeneseme na výstup

Gramatika Příklad P G = ({S, A, B, C, D}, {n, +,,, /, (, )}, { n, +,,, / }, R, S) S AB 1 A CD 2 B +A + B A B ε 3, 4, 5 C (S) i i n n 6, 7, 8 D C D /C / D ε 9, 10, 11 Rozkladová tabulka vstupní gramatiky i n + / ( ) $ S e1 e1 e1 A e2 e2 e2 B e3 e4 e5 e5 C e7 e8 e6 D e11 e11 e9 e10 e11 e11

i n + / ( ) $ S e1 e1 e1 A e2 e2 e2 B e3 e4 e5 e5 C e7 e8 e6 D e11 e11 e9 e10 e11 e11 Zpracování vstupu podle tabulky (n+i n$, S#, ε) (n+i n$, AB#, ε) (n+i n$, CDB#, ε) (n + i n$, n n DB#, ε) (+i n$, n DB#, ε) (+i n$, DB#, n ) (+i n$, B#, n ) (+i n$, +A + B#, n ) (i n$, A + B#, n ) (i n$, CD + B#, n ) (i n$, i i D + B#, n ) ( n$, i D + B#, n ) ( n$, D + B#, n i )... ($, + B#, n i n ) ($, B#, n i n + ) ($, #, n i n + )