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.

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

Syntaxí řízený překlad

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

Syntaxí řízený překlad

Jednoznačné a nejednoznačné gramatiky

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

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

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

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

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

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

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

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 Σ

Naproti tomu gramatika je vlastně soupis pravidel, jak

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

Vztah jazyků Chomskeho hierarchie a jazyků TS

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

2 Formální jazyky a gramatiky

Lexikální analýza (Obsah)

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

Vlastnosti regulárních jazyků

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

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

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie.

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

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

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

Diferenˇcní rovnice Diferenciální rovnice Matematika IV Matematika IV Program

4.2 Syntaxe predikátové logiky

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

Princip rozšíření a operace s fuzzy čísly

Algoritmizace a programování

Úvod do informatiky. Miroslav Kolařík

Úvod do informatiky. Miroslav Kolařík

Úvod do TI - logika Predikátová logika 1.řádu (4.přednáška) Marie Duží marie.duzi@vsb.cz

Programovací jazyk Pascal

Matematická logika. Miroslav Kolařík

Okruh č.3: Sémantický výklad predikátové logiky

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

Úvod do logiky (presentace 2) Naivní teorie množin, relace a funkce

Sémantika výrokové logiky. Alena Gollová Výroková logika 1/23

Úvod do programovacích jazyků (Java)

Matice. Je dána matice A R m,n, pak máme zobrazení A : R n R m.

transformace je posunutí plus lineární transformace má svou matici vzhledem k homogenním souřadnicím [1]

Struktura a architektura počítačů (BI-SAP) 5

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

Teorie množin. Čekají nás základní množinové operace kartézské součiny, relace zobrazení, operace. Teoretické základy informatiky.

9. Vícerozměrná integrace

3. Sekvenční logické obvody

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

Rovnost lze vyjádřit jako predikát, např. můžeme zvolit, že P(x, y) reprezentujetvrzení xjerovnoy.

Výroková logika. Teoretická informatika Tomáš Foltýnek

)(x 2 + 3x + 4),

5. Sekvenční logické obvody

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

Interpolace, ortogonální polynomy, Gaussova kvadratura

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

Teoretická informatika - Úkol č.1

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

Fuzzy množiny, Fuzzy inference system. Libor Žák

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

Konečný automat. Jan Kybic.

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

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

Logické programy Deklarativní interpretace

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g).

Teoretická informatika TIN 2013/2014

Racionální čísla, operátory, výrazy, knihovní funkce

Sekvenční logické obvody

9. Vícerozměrná integrace

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

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

Teoretická informatika

Organizace. Zápočet: test týden semestru (pátek) bodů souhrnný test (1 pokus) Zkouška: písemná část ( 50 bodů), ústní část

Výroková a predikátová logika - II

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

Marie Duží

Derivace funkce. Přednáška MATEMATIKA č Jiří Neubauer

Zadání a řešení testu z matematiky a zpráva o výsledcích přijímacího řízení do magisterského navazujícího studia od podzimu 2014

Využití řízených gramatik v programovacích jazycích

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

Dodatek 2: Funkce dvou proměnných 1/9

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

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

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

Konečný automat Teorie programovacích jazyků

Matematika 4 FSV UK, LS Miroslav Zelený

Modely Herbrandovské interpretace

6. Zobrazení δ: (a) δ(q 0, x) obsahuje x i, x i Z. (b) δ(x i, y) obsahuje y j, x i y j P 7. Množina F je množinou koncových stavů.

10 Funkce více proměnných

Matematika 2 LS 2012/13. Prezentace vznikla na základě učebního textu, jehož autorem je doc. RNDr. Mirko Rokyta, CSc. J. Stebel Matematika 2

Lineární algebra : Polynomy

Matematická analýza 1

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Aplikovaná numerická matematika

Funkce jedn e re aln e promˇ enn e Derivace Pˇredn aˇska ˇr ıjna 2015

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

Náhled testu. Přijímací zkouška magisterského studia. konečný automat bez zbytečných stavů, který přijímá jazyk popsaný tímto výrazem, má:

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Transkript:

BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 2/41 Formální překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 4/41 Automaty a gramatiky(bi-aag) 5. Překladové konečné automaty Jan Holub T a D jsou abecedy. Homomorfismem nazýváme každé zobrazení h z T do D. Definiční obor homomorfismu h je možné rozšířit na T takto: h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T. Katedra teoretické informatiky Fakulta informačních technologií ČVUT v Praze c Jan Holub, 2011 Evropský sociální fond. Praha & EU: Investujeme do vaší budoucnosti BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 1/41 Formální překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 3/41 Formální překlady Formální překlad je binární relace Z L V. Definiční obor je množina L a obor hodnot je množina V. Relace Z přiřazuje každému prvku w množiny L množinu jeho překladů Z(w) z množiny V. Pokud Z(w) obsahuje pro každé w L nejvýše jeden prvek, pak Z je funkce (případně parciální) a takový překlad se nazývá jednoznačný. zobrazení řetězce dekadických číslic na řetězce binárních číslic a 0 1 2 3 4 5 6 7 8 9 h(a) 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 h(1996) = 0001100110010110

Formální překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 6/41 BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 8/41 Prefixový a postfixový zápis výrazu E: 1. E je proměnná nebo konstanta, pak prefixový i postfixový zápis tohoto výrazu je E. 2. E je výraz tvaru E 1 op E 2, kde op je binární operátor, pak (a) op E 1 E 2 je prefixový zápis, kde E 1 a E 2 jsou prefixové zápisy. (b) E 1 E 2 op je postfixový zápis, kde E 1 a E 2 jsou postfixové zápisy. 3. E je výraz tvaru (E 1 ), pak (a) prefixový zápis výrazu (E 1 ) je prefixový zápis výrazu E 1, (b) postfixový zápis výrazu (E 1 ) je postfixový zápis výrazu E 1. Překladová gramatika je P G = (N, T, D, R, S), kde N je konečná množina neterminálních symbolů, T je konečná množina vstupních symbolů, D je konečná množina výstupních symbolů, R je konečná množina pravidel tvaru A α, kde A N, α (N T D), S je počáteční symbol. Přitom platí, že T D = a (T D) N =. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 5/41 Formální překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 7/41 Infixový zápis: a (b + c) Prefixový zápis: a + bc Postfixový zápis: abc + překladu: {(x, y) : x je infixový zápis výrazu, y je postfixový zápis téhož výrazu}. P G = (N, T, D, R, S), α, β, γ (N T D), A N. 1. z α se přímo derivuje β, α β, právě když τ, ω, γ (N T D), A N, α = τa ω, β = τγω, A γ R 2. z α se derivuje β, α β, právě když α 1, α 2,..., α n (N T D), (n 1) α = α 1 α 2... α n = β. Posloupnost α 1, α 2,..., α n nazýváme překladovou derivací délky n řetězce β z řetězce α. reflexivní a tranzitivní uzávěr: tranzitivní uzávěr: +

BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 10/41 BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 12/41 P G = ({E}, {+,, a}, { +,, a }, P, E), kde P : (1)E +EE + (2)E EE (3)E a a E +EE + +a a E + +a a EE + +a a a a E + +a a a a a a + P G = ({E}, {+,, a}, { +,, a }, P, E), kde P : (1)E +EE + (2)E EE (3)E a a P G generuje překlad výrazů z prefixového do postfixového zápisu. E +EE + +a a E + +a a EE + +a a a a E + +a a a a a a + Derivace generuje dvojici (+a aa, a a a +), která patří do překladu Z(P G). BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 9/41 BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 11/41 P G = (N, T, D, R, S). Vstupní homomorfismus h P i G : h P i G (a) = Výstupní homomorfismus h P o G : h P o G (a) = { a pro a T N ε pro a D { ε pro a T a pro a D N Překlad definovaný překladovou gramatikou P G = (N, T, D, R, S): Z(P G) = {(h P G i (w), h P G o (w)) : S w, w (T D) }. P G = (N, T, D, R, S). Vstupní gramatika překladové gramatiky PG je BG G i = (N, T, P i, S), kde P i = {A h i (α) : A α R}. Výstupní gramatika překladové gramatiky PG je BG G o = (N, D, P o, S), kde P o = {A h o (α) : A α R}. BG G = (N, T D, R, S) je charakteristická gramatika překladové gramatiky P G = (N, T, D, R, S). L(G) je charakteristický jazyk překladu Z(PG). w L(G) je charakteristická věta dvojice (x, y), kde x = h i (w), y = h o (w).

BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 14/41 Konečné překladové automaty BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 16/41 P G = (N, T, D, R, S) je regulární, když všechna pravidla v R mají tvar: A axb nebo A ax, kde A, B N, a T, x D S ε v případě, že S není na pravé straně žádného pravidla. Konečný překladový automat KPA = (Q, T, D, δ, q 0, F ), kde Q je konečná množina vnitřních stavů, T je konečná množina vstupních symbolů, D je konečná množina výstupních symbolů, δ je zobrazení z Q (T {ε}) do množiny 2 Q D, q 0 Q je počáteční stav, F Q je množina koncových stavů. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 13/41 BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 15/41 Konečné překladové automaty RP G = ({S, A, P, K}, {a, +, }, { a, +, }, R, S), kde R: S a a A A K S a a A +P K a a A P a a +A K a a P a a + S a a A a a + P a a + a a +A a a + a a + K a a + a a + a a. Konfigurace konečného překladového automatu KPA = (Q, T, D, δ, q 0, F ) je trojice (q, x, y) Q T D. (q 0, x, ε) je počáteční konfigurace. (q, ε, y), q F je koncová konfigurace. Relace přechodu a definovaná na množině konfigurací: Jestliže δ(q, a) obsahuje (r, z), pak (q, ax, y) (r, x, yz), x T, y D. Tranzitivní uzávěr: + Reflexivní a tranzitivní uzávěr: k-tá mocnina: k Překlad: (a + a a, a a + a ).

Konečné překladové automaty BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 18/41 Sekvenční zobrazení BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 20/41 Překlad definovaný konečným překladovým automatem KPA = (Q, T, D, δ, q 0, F ): Z(KPA) = {(u, v) : (q 0, u, ε) (q, ε, v), q F } KPA je deterministický, když pro všechny jeho stavy platí: 1. δ(q, a) 1, a T a δ(q, ε) = nebo 2. δ(q, ε) 1 a δ(q, a) =, a T. Sekvenční zobrazení S: 1. Zachovává délku řetězce, tj. je-li y = S(x), pak x = y. 2. Mají-li dva vstupní řetězce stejnou předponu délky k > 0, pak mají i jim odpovídající výstupní řetězce stejné předpony alespoň délky k. To znamená, když S(xx 1 ) = yy 1 a S(xx 2 ) = yy 2 a x = y. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 17/41 Konečné překladové automaty KPA, který binární čísla dělitelná třemi dělí třemi. KPA = ({N, J, D}, {0, 1}, {0, 1}, δ, N, {N}), kde δ: δ(n, 0) = {(N, 0)} δ(j, 1) = {(N, 1)} δ(n, 1) = {(J, 0)} δ(d, 0) = {(J, 1)} δ(j, 0) = {(D, 0)} δ(d, 1) = {(D, 1)} δ 0 1 N (N, 0) (J, 0) J (D, 0) (N, 1) D (J, 1) (D, 1) 0/0 1/0 0/0 START N 1/1 J 0/1 D 1/1 BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 19/41 Sekvenční zobrazení Mealyho automat M = (Q, T, D, δ, λ, q o, F ), kde Q je konečná množina vnitřních stavů, T je konečná množina vstupních symbolů, D je konečná množina výstupních symbolů, δ je zobrazení z Q T do Q nazývané přechodová funkce, λ je zobrazení z Q T do D nazývané výstupní funkce, q 0 Q je počáteční stav, F Q je množina koncových stavů.

BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 22/41 BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 24/41 Sekvenční zobrazení Atributované překlady Mooreův automat M = (Q, T, D, δ, λ, q o, F ), kde Q je konečná množina vnitřních stavů, T je konečná množina vstupních symbolů, D je konečná množina výstupních symbolů, δ je zobrazení z Q T do Q nazývané přechodová funkce, λ je zobrazení z Q do D nazývané výstupní funkce, q 0 Q je počáteční stav, F Q je množina koncových stavů. Atributovaný překlad je relace Z A T D, kde T je množina vstupních atributovaných řetězců, D je množina výstupních atributovaných řetězců. Vstup: atributované řetězce nad abecedou {a, +,, (, )}. Symbolu a je přiřazen atribut x (oborem hodnot je množina celých čísel). Výstup: v, který má atribut y (oborem hodnot je množina celých čísel). (a[10], v[10]), (a[5] + a[6], v[11]), (a[3] a[4] + a[2], v[14]). BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 21/41 Atributované překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 23/41 Atributované překlady Atribut veličina, která nabývá hodnot z nějaké množiny (obor hodnot atributu). Např. proměnná v programu, která má definován typ. Atributovaný symbol symbol abecedy, ke kterému je přiřazena konečná množina atributů (i prázdná). Atributovaný řetězec řetězec atributovaných symbolů. a.x bude relativní adresa, na které je uložena hodnota operandu a. Adresa p, ke které jsou vztaženy relativní adresy operandů. Funkce vyber(x), která z adresy x vybere hodnotu. p = 100, vyber(102) = 3, vyber(103) = 5, vyber(104) = 6 (a[3] a[4] + a[2], v[33]) Např. x.a x[x.a 1, x.a 2,..., x.a n ]

Atributované překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 26/41 Atributované překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 28/41 Hodnoty atributů výstupních symbolů mohou záviset: na hodnotách atributů vstupních symbolů, na struktuře vstupního řetězce, na zadaných parametrech. Atribut: syntetizovaný hodnota závisí na informacích obsažených uvnitř podstromu, dědičný hodnota závisí na kontextu, ve kterém se příslušný podstrom nachází. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 25/41 BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 27/41 atributovaná výstupní věta: S a[10] LOAD[10,1] P atributovaný řetězec výstupních symbolů, kterými jsou ohodnoceny listy atributovaného překladového stromu AT + A a[20] LOAD[20,2] B ADD M a[30] LOAD[30,2] N sémantické vyhodnocení překladového stromu: výpočet hodnot atributů v překladovém stromu stanovíme hodnoty dědičných atributů kořene AT stanovíme hodnoty syntetizovaných atributů vstupních uzlů v nějakém pořadí probíráme uzly stromu a vyhodnocujeme jejich atributy = MUL PRINT

BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 30/41 BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 32/41 Realizujte překlad výrazu s operátory +,, =, a operandy. Zadány adresy, na kterých jsou uloženy operandy. Výstupním jazykem tohoto překladu je strojový jazyk počítače, který má tyto instrukce: LOAD adr, r... provede přesun obsahu adresy adr do registru r, ADD... provede součet obsahu registrů 1 a 2 a výsledek uloží do registru 1, MUL... provede součin obsahu registrů 1 a 2 a výsledek uloží do registru 1, PRINT... provede výpis obsahu registru 1. (a[20] =,LOAD[20,1]PRINT[] ) (a[10] + a[30] =,LOAD[10,1]LOAD[30,2]ADD[]PRINT[] ) (a[10] + a[20] a[30] =,LOAD[10,1]LOAD[20,2]ADD[]LOAD[30,2]MUL[]PRINT[]) BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 29/41 (pokračování) Základní gramatika atributové překladové gramatiky PG = ({S, P, A, B, M, N}, {a, +,, =}, {LOAD, ADD, MUL, PRINT}, R, S), kde R: 1. S aload P, 5. A aload B, 9. B = ADDPRINT, 2. P + A, 6. M aload N, 10. N +MUL A, 3. P M, 7. B +ADD A, 11. N MUL M, 4. P = PRINT, 8. B ADD M, 12. N = MULPRINT. Symboly a LOAD ADD MUL PRINT Dědičné atributy Syntetizované atributy adr, r adr (pokračování) Sémantická pravidla a jejich přidělení pravidlům: Syntax Sémantika 1. S aload P, LOAD.adr a.adr LOAD.r 1 2. P + A, 3. P M, 4. P = PRINT, 5. A aload B, LOAD.adr a.adr LOAD.r 2 6. M aload N, LOAD.adr a.adr LOAD.r 2 7. B +ADD A, 8. B ADD M, 9. B = ADDPRINT, 10. N +MUL A, 11. N MUL M, 12. N = MULPRINT. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 31/41 (pokračování) pro vstupní řetězec a[10] + a[20] a[30] =. S a[10] LOAD[10,1] P + A a[20] LOAD[20,2] B ADD M a[30] LOAD[30,2] N = MUL PRINT

Atributová překladová gramatika AT atributované vstupní věty w v APG = (PG, A, V, F ) je překladový strom této věty w sestrojený v PG (bez uvažování atributů) a rozšířený následujícím způsobem: 1. Ke každému uzlu, který je ohodnocen symbolem X N T D, jsou přidruženy atributy dané množinou A(X). 2. Jsou stanoveny hodnoty dědičných atributů kořene stromu AT. 3. Hodnoty syntetizovaných atributů vstupních uzlů AT jsou dány vstupní větou w. 4. Necht u 0 je libovolný vnitřní uzel X a u 1, u 2,..., u n (n 0) jsou přímí následníci uzlu u 0 ohodnocení X 1, X 2,..., X n a necht X 0 X 1 X 2... X n je syntaktické pravidlo (r). Pak pro hodnoty atributů přidružených k uzlům u k, 0 k n, platí: je li t := f rtk (a 1, a 2,..., a m ) sémantické pravidlo pro výpočet hodnoty atributu t přidruženého k uzlu u k, pak hodnota atributu t je určena tímto sémantickým pravidlem. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 33/41 Atributová překladová gramatika Atributová překladová gramatika APG = (PG, A, V, F ), kde: PG = (N, T, D, R, S o ) základní překladová gramatika, kde R: (r) X 0 X 1 X 2... X nr, kde n r 0, X 0 N, X k (N T D) pro 1 k n r. A je konečná množina atributů (A = S I, S I =, S je množina syntetizovaných atributů, I je množina dědičných atributů). Pro každý atribut a je zadán obor hodnot H(a). V zobrazení: každému X N přiřazuje množinu A(X) A. Vstupní symboly mají syntetizované atributy, výstupní mají dědičné. F konečná množina sémantických pravidel. X k (1 k n r ) na pravé straně pravidla r R a jeho dědičný atribut d: d := f rdk (a 1, a 2,..., a m ), kde a 1, a 2,..., a m jsou atributy symbolů v pravidle r. syntetizovaný atribut s symbolu X o na levé straně pravidla r R: s := f rso (a 1, a 2,..., a m ), kde a 1, a 2,..., a m jsou atributy symbolů v pravidle r. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 34/41 Aby bylo možno určit hodnoty všech atributů, musíme předpokládat, že jsou zadány: hodnoty dědičných atributů počátečního symbolu, hodnoty syntetizovaných atributů vstupních symbolů. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 35/41 Regulární atributované překlady AP G je regulární AP G, jestliže platí: 1. Základní překladová gramatika je regulární. 2. Neterminální symboly mají jen dědičné atributy. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 36/41

Regulární atributované překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 38/41 Regulární atributované překlady BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 40/41 Překlad desítkových celých čísel: RP G = ({C}, {d}, { v }, P, C), kde P : C dc d v. Symboly Dědičné atributy Syntetizované atributy d C v hodnota hodnota kód (pokračování) Upravená překladová gramatika Syntax Sémantika C dz Z.hodnota := h(d.kód) Z 0 dz 1 Z 1.hodnota := Z 0.hodnota 10 + h(d.kód) Z # v v.hodnota := Z.hodnota Syntax C 0 dc 1 C d v Sémantika C 1.hodnota := C 0.hodnota 10 + h(d.kód) v.hodnota := C.hodnota 10 + h(d.kód) Funkce h(x) má jako argument kód číslice a jako funkční hodnotu číselnou hodnotu číslice. Počáteční hodnota atributu počátečního symbolu C.hodnota se rovná nule. BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 37/41 Regulární atributované překlady (pokračování) NKPA START C.hodnota := 0 DKPA C d e 1 0 C.hodnota := C.hodnota * 10 + h(d.kód) d v v.hodnota := C.hodnota * d e 10 + h(d.kód) 1 0 Z.hodnota := Z.hodnota * 10 + h(d.kód) F BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 39/41 Regulární atributované překlady RAPG pro model kalkulačky s klávesami 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, +,, =. Vstupem budou výrazy s operátory + a. Symbol = bude konec výrazu. Operátory + a mají stejnou prioritu. dva registry = dva atributy x a y RP G = ({S, P, A, M, N}, {d, +,, =}, { v }, P, S). Zápis d.h představuje hodnotu vstupní číslice. START C d e Z.hodnota := h(d.kód) Z # v v.hodnota := Z.hodnota F

Regulární atributované překlady (pokračování) Syntax Sémantika S dp P.x := d.h P.y := 0 P 0 dp 1 P 1.x := P 0.x 10 + d.h P 1.y := P 0.y P + A A.x := P.x + P.y P M M.x := P.x + P.y P = v v.x := P.x + P.y A dp P.x := d.h P.y := A.x M dn N.x := d.h N.y := M.x N 0 dn 1 N 1.x := N 0.x 10 + d.h N 1.y := N 0.y N + A A.x := N.x N.y N M M.x := N.x N.y N = v v.x := N.x N.y BI-AAG (2011/2012) J. Holub: 5. Překladové konečné automaty p. 41/41