Syntaxí řízený překlad



Podobné dokumenty
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

Syntaxí řízený překlad

KIV/FJP vypracované otázky (2011/12)

Programovací jazyky a překladače Úvod do překladačů

Programovací jazyky a překladače Úvod do překladačů

Programovací jazyky a překladače Úvod do překladačů

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

Kapitola 7: Integrál. 1/14

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


Implementace LL(1) překladů

Konstruktory překladačů

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

Nerovnice s absolutní hodnotou

INŽENÝRSKÁ MATEMATIKA LOKÁLNÍ EXTRÉMY

2.8.9 Parametrické rovnice a nerovnice s absolutní hodnotou

Case Studie. Ing. Tomáš Černý M.S.C.S.

Dualita v úlohách LP Ekonomická interpretace duální úlohy. Jiří Neubauer. Katedra ekonometrie FEM UO Brno

Lokální a globální extrémy funkcí jedné reálné proměnné

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Osnova dnešní přednášky Inkrementální překlad

Sémantika Tabulka symbolů Intermediální kód Typová kontrola, přetypování Statická a dynamická sémantika. Sémantická analýza.

GENEROVÁNI KÓDU jazyk Mila

Jazyk matematiky Matematická logika Množinové operace Zobrazení Rozšířená číslená osa

3.2.4 Podobnost trojúhelníků II

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

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.

Přehled pravděpodobnostních rozdělení

Poznámky k verzi. Scania Diagnos & Programmer 3, verze 2.27

BlueJ a základy OOP. Programování II 1. cvičení Alena Buchalcevová

Generování vnitřní reprezentace programu


9. A/Č převodník s postupnou aproximací. Použití logického analyzátoru

3. Derivace funkce Definice 3.1. Nechť f : R R je definována na nějakém okolí U(a) bodu a R. Pokud existuje limita f(a + h) f(a) lim

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

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

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

9.2.5 Sčítání pravděpodobností I

IB015 Neimperativní programování. Časová složitost, Typové třídy, Moduly. Jiří Barnat Libor Škarvada

Struktura programu v době běhu

Výpočetní složitost I

Kopie z

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

dovolují dělení velkých úloh na menší = dekompozice

NPRG030 Programování I, 2015/16 1 / :25:32

Číselné soustavy Ing. M. Kotlíková, Ing. A. Netrvalová Strana 1 (celkem 7) Číselné soustavy

Úvod z historie. Kompilátory. Kompilace / Kompilátor Compile / Compiler. Pojem kompilátoru. Úvod z historie

IB015 Neimperativní programování. Seznamy, Typy a Rekurze. Jiří Barnat Libor Škarvada

Řešení: ( x = (1 + 2t, 2 5t, 2 + 3t, t); X = [1, 2, 2, 0] + t(2, 5, 3, 1), přímka v E 4 ; (1, 2, 2, 0), 0, 9 )

1 REZOLUČNÍ FORMÁLNÍ DŮKAZY

Algoritmus Minimax. Tomáš Kühr. Projektový seminář 1

Sada 2 - MS Office, Excel

Programovací jazyky, syntaxe, sémantika, zpsoby popisu

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

Rostislav Horčík. 13. října 2006

Sekvenční logické obvody

Výrazy lze též zavést v nečíselných oborech, pak konstanty označuji jeden určitý prvek a obor proměnné není množina čísel.

Programovací jazyk Pascal

MATEMATIKA 1 4 A B C D. didaktický test. Zadání neotvírejte, počkejte na pokyn! Krok za krokem k nové maturitě Maturita nanečisto 2006


2. Je dáno jevové pole (Ω;A) a na něm nezáporná normovaná funkce. Definujte distrubuční funkci náhodného vektoru.

Digitální obvody. Doc. Ing. Lukáš Fujcik, Ph.D.

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

PŘIJÍMACÍ TEST z informatiky a matematiky pro navazující magisterské studium Fakulta informatiky a managementu Univerzity Hradec Králové

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.




Úvod do programovacích jazyků (Java)

ŘÍZENÍ PALBY. Zjednodušená příprava

Některé zákony rozdělení pravděpodobnosti. 1. Binomické rozdělení

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

FAKULTA STAVEBNÍ MATEMATIKA II MODUL 2 STUDIJNÍ OPORY PRO STUDIJNÍ PROGRAMY S KOMBINOVANOU FORMOU STUDIA

Třídy a objekty -příklady

Upozornění: Dne:

16. února 2015, Brno Připravil: David Procházka

Funkce zadané implicitně

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

3. Souřadnicové výpočty

5 Rekurze a zásobník. Rekurzivní volání metody

Základní stavební prvky algoritmu

Interpret jazyka IFJ2011

1) Sémantika: operační sémantika, denotační sémantika, pevný bod funkce, vázání jmen, stav a data programu.

1 Funkce dvou a tří proměnných

1. Pravděpodobnost a statistika (MP leden 2010)

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ

Kapitola 7: Integrál.

Popis a funkce klávesnice Gama originální anglický manuál je nedílnou součástí tohoto českého překladu

Cvičení 9 - Monitory. monitor m; var proměnné... procedure p; begin... end; begin inicializace; end;

Tvorba trendové funkce a extrapolace pro roční časové řady

Atributovaný překlad

Tematická oblast: Programování 1 (VY_32_INOVACE_08_1_PR) Anotace: Využití ve výuce: Použité zdroje:

Příklady a návody. Databázová vrstva

Kapitola I - Množiny bodů daných vlastností I.a Co je množinou všech bodů v rovině, které mají od daných dvou různých bodů stejnou vzdálenost? I.

Kapitola 7: Neurčitý integrál. 1/14

Poslední aktualizace: 14. října 2011

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

Teorie měření a regulace

Programování 4. hodina. RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015

7. DIFERENCIÁLNÍ POČET FUNKCÍ DVOU PROMĚNNÝCH Definiční oblasti Úlohy k samostatnému řešení... 83

Transkript:

Překlad Syntaxí řízený překlad Miroslav Beneš Dušan Kolář Definice: Překlad je relace TRAN: L 1 -> L 2 L 1 Σ* Σ - vstupní abeceda L 2 * - výstupní abeceda L 1 jazyk infixových výrazů L 2 jazyk postfixových výrazů Syntaxí řízený překlad 2 Překladová gramatika Definice: Překladová párová gramatika V = (N, Σ,, P, S) N - neterminály Σ - vstupní abeceda - výstupní abeceda P přepisovací pravidla S startovací neterminál P: A -> α,β α (N Σ)*, β (N )* Neterminály z β jsou permutacemi neterminálů z α E -> E+T, E -> T, T -> T*F, T -> F, F -> (E), F -> i, ET+ T TF* F E i Syntaxí řízený překlad 3 Syntaxí řízený překlad 4 1

- derivace [E,E] => [E+T, ET+] => [T+T, TT+] => [F+T, FT+] => [i+t, it+] => [i+t*f, itf*+] => [i+f*f, iff*+] => [i+i*f, iif*+] => [i+i*i, iii*+] Překladová gramatika Jsou-li neterminály ve vstupní i výstupní části pravé strany ve stejném pořadí, můžeme obě části spojit => překladová gramatika Musíme ale odlišit vstupní a výstupní symboly Syntaxí řízený překlad 5 Syntaxí řízený překlad 6 - derivace E E+T+ E T T T*F* T F F (E) F i i (E E+T ) E => E + T + => T + T + => F + T + => i i +T+ => i i +T*F*+ => i i +F*F*+ => i i +ii *F*+ => i i +ii *ii*+ Syntaxí řízený překlad 7 Syntaxí řízený překlad 8 2

Homomorfismy Vstupní homomorfismus: ι(x) = x, x (N Σ) = ε, x Výstupní homomorfismus: ο(x) = x, x (N ) = ε, x Σ ι(e + T +) =E+T ο(e + T +) = E T + ι(i i +ii *ii*+) = i + i * i ο(i i +ii *ii*+) = i ii*+ Syntaxí řízený překlad 9 Syntaxí řízený překlad 10 Překlad Definice: Překlad generovaný překladovou gramatikou: Atributovaný překlad Rozšíření bezkontextové gramatiky o kontextové vlastnosti gramatika s parametry T(G) = {(x,y) S => * z, z ( Σ)*, x = ι(z), y = ο(z)} vstupní věta výstupní věta Jednotlivé symboly mohou mít přiřazeny parametry atributy Atributy se předávají podobně jako vstupní a výstupní argumenty funkcí Syntaxí řízený překlad 11 Syntaxí řízený překlad 12 3

Atributová gramatika Definice: Atributová překladová gramatika G AT = (G T, A, F) G T překladová gramatika ( = -> atributová gramatika) A množina atributů F sémantická pravidla (pravidla pro výpočet hodnot atributů) Množina atributů X ( Σ N) I(X) - množina dědičných atributů S(X) - množina syntetizovaných atributů Dědičné atributy startovacího neterminálu jsou zadány předem. Syntetizované atributy terminálních symbolů jsou zadány předem (lexikální analyzátor) Syntaxí řízený překlad 13 Syntaxí řízený překlad 14 Sémantická pravidla p r : X 0 -> X 1 X 2 X n X 0 N, X i (N Σ) a) d=f d,k r (a 1,a 2,,a n ) d I(X k ), 1 k n b) s=f s,0 r (a 1,a 2,,a n ) s S(X 0 ) c) s=f s,k r (a 1,a 2,,a n ) s S(X k ), X k a,b) a i je atribut symbolu X j,0 j n c) a i je dědičný atr. symbolu X f,x f Sémantická pravidla a) Dědičné atributy symbolu na pravé straně pravidla b) Syntetizované atributy neterminálního symbolu na levé straně pravidla c) Syntetizované atributy výstupních symbolů na pravé straně pravidla Syntaxí řízený překlad 15 Syntaxí řízený překlad 16 4

výpočet hodnoty výrazu Syntetizované atributy: E.val - hodnota výrazu T.val - hodnota podvýrazu F.val - hodnota operandu num.lexval hodnota číselné konstanty Gramatika E -> E + T E -> T T -> T * F T -> F F -> (E) F -> num Sémantická pravidla E.val = E.val + T.val E.val = T.val T.val = T.val * F.val T.val = F.val F.val = E.val F.val = num.lexval Syntaxí řízený překlad 17 Syntaxí řízený překlad 18 Poznámky 3*5+4 E.val = 19 E.val = 15 + T.val = 15 T.val = 4 F.val = 4 sémantické funkce v atributové gramatice nemohou mít vedlejší efekty vstup/výstup (např. generovaného kódu) globální proměnné (např. tabulka symbolů) T.val = 3 * F.val = 5 num.val = 4 syntaxí řízená definice bez omezení T.val = 3 num.val = 5 num.val = 3 Ohodnocený derivační strom Syntaxí řízený překlad 19 Syntaxí řízený překlad 20 5

deklarace proměnných (1) D -> T L L.type := T.type Dědičné atributy: L.type (2) T -> int T.type := integer Syntetizované atributy: T.type, id.ptr (3) T -> real T.type := real D real id1,id2,id3 (4) L -> L, id (5) L -> id L.type := L.type dcl(id.ptr, L.type) dcl(id.ptr, L.type) Syntaxí řízený překlad 21 T.type = real L.type = real real L.type = real, id3 L.type = real id1, id2 Syntaxí řízený překlad 22 Definice Překladové schéma L-atributová definice A -> X 1 X n Dědičné atributy symbolu X j závisejí jen na: atributech symbolů X 1,,X j-1 (tj. symbolech z téhož pravidla vlevo od symbolu X j ) dědičných atributech symbolu A (tj. symbolu na levé straně pravidla) Použití: LL(1) překlad Syntaxí řízená definice se sémantickými akcemi umístěnými kdekoliv na pravé straně pravidla Posloupnost sémantických akcí je přesně definována Syntaxí řízený překlad 23 Syntaxí řízený překlad 24 6

E -> T R R -> + T { print( + ); } R ε T -> num { print(num.val); } Návrh překladového schematu Dědičný atribut symbolu na pravé straně vypočte akce umístěna před ním. Akce nesmí používat syntetizované atributy symbolů vpravo od ní. Hodnota syntetizovaného atributu neterminálu na levé straně pravidla se vypočte až po určení všech atributů, na které se odkazuje - obvykle až na konci pravidla Syntaxí řízený překlad 25 Syntaxí řízený překlad 26 Překlad při analýze rekurzivním sestupem Syntaktický zásobník - řízení překladu Atributový zásobník - ukládání atributů explicitní vs. implicitní zásobník implicitní zásobník rekurze, lokální proměnné Atributy parametry podprogramů (N Σ) globální proměnné Překlad při analýze rekurzivním sestupem Atributy dědičné - vstupní parametry syntetizované - výstupní parametry Sémantické akce Přímo na odpovídajících místech v podprogramech pro analýzu pravidel Hodnoty syntetizovaných atributů musí být definovány! (e-pravidla, zotavení) Syntaxí řízený překlad 27 Syntaxí řízený překlad 28 7

E -> T {R.i := T.val} R {E.val := R.s} R -> addop T {if addop.op=add then R 1.i := R.i+T.val else R 1.i := R.i-T.val } R 1 {R.s := R 1.s} ε {R.s := R.i} T -> num {T.val := num.val} addop.op var lexop:char; + / - num.val lexval:integer; R.i - R.s - T.val - dědičný atribut (levý operand) dočasný výsledek, synt. atribut syntetizovaný attribute Syntaxí řízený překlad 29 Syntaxí řízený překlad 30 void E(int& val) { int val1; T(val1); R(val1, val); } void R(int i, int& s) { if( sym == + sym == - ) { char op=lexop; int val; T(val); if( op== + ) R(i+val,s) else R(i-val,s); } else s = i; } Syntaxí řízený překlad 31 Syntaxí řízený překlad 32 8

void T(int& val) { if( sym == num ) { val=lexval; // nestačí expect(num) lex(); } else { error(); // po zotavení musí val=0; // být val definováno } } Syntaxí řízený překlad 33 9