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

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

Syntaxí řízený překlad

Překladač a jeho struktura

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.

Syntaxí řízený překlad

Implementace LL(1) 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

1.Charakterizujte křížový překladač 2.Objasněte pojem silikonový překladač 3.Co to jsou formátory textu? Uveďte příklad

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

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

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

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

Úvod do programovacích jazyků (Java)

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

2 Formální jazyky a gramatiky

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

TÉMATICKÝ OKRUH TZD, DIS a TIS

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

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

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.

Logika a logické programování

Sudý počet jedniček: S 1 0S 1 1S 2 e S 2 1S 1 0S 2

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

Vztah jazyků Chomskeho hierarchie a jazyků TS

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

1. Charakterizujte pojem křížový překladač Překlad na jiném procesoru než exekuce (viz zabudované systémy (např. pračky, myčky, automobily)).

Algoritmizace a programování

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


Konstruktory překladačů

Poslední aktualizace: 26. října 2011

Funkcionální programování. Kristýna Kaslová

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

Konečný automat. Jan Kybic.

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

Poslední aktualizace: 14. října 2011

Programovací jazyk Pascal

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

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

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE PŘEKLADY TYPICKÝCH JAZYKOVÝCH KONSTRUKCÍ PROGRAMOVACÍCH JAZYKŮ.

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

Jednoznačné a nejednoznačné gramatiky

Studijní program ELEKTROTECHNIKA A INFORMATIKA

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

Lexikální analýza (Obsah)

Západočeská univerzita v Plzni Dokumentace překladače PL/0 v PHP Předmět KIV/FJP

GENEROVÁNÍ KÓDU 9. SHRNUTÍ - PŘÍKLAD POSTUPU PŘEKLADU VSTUPNÍHO PROGRAMU (ZA POUŽITÍ DOSUD ZNÁMÝCH TECHNIK)

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

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

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

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

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

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

Algoritmizace a programování

Assembler - 5.část. poslední změna této stránky: Zpět

5 Přehled operátorů, příkazy, přetypování

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

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

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

ALGORITMIZACE A PROGRAMOVÁNÍ

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

Uplatnění metod na zvolený jazyk

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

Prolog PROgramming in LOGic část predikátové logiky prvního řádu rozvoj začíná po roce 1970 Robert Kowalski teoretické základy Alain Colmerauer, David

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ář

VISUAL BASIC. Přehled témat

IB015 Neimperativní programování. Organizace a motivace kurzu, programovací jazyk Haskell. Jiří Barnat

Obor: Informatika Únor 2006 Okruh: Základy matematiky Otázka: 1. Jméno: Bodů:...

Automaty a gramatiky

Vlastnosti regulárních jazyků

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

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s

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

NPRG030 Programování I, 2010/11

1 Nejkratší cesta grafem

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

NPRG030 Programování I, 2016/17 1 / :58:13

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ

Naproti tomu gramatika je vlastně soupis pravidel, jak

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

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

AUTOMATY A GRAMATIKY

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

Implementace aritmetického stromu pomocí směrníků

Obsah. Vymezení použitých pojmů

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE STRUKTURA PŘEKLADAČE

Algebraické výrazy-ii

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Úvod do programování. Lekce 1

Problém, jehož různé instance je třeba často řešit Tyto instance lze vyjádřit větami v jednoduchém jazyce

maticeteorie 1. Matice A je typu 2 4, matice B je typu 4 3. Jakých rozměrů musí být matice X, aby se dala provést

1 Vektorové prostory a podprostory

Da D to t v o é v ty t py IB111: Datové typy

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

OSTRAVSKÁ UNIVERSITA V OSTRAVĚ Pedagogická fakulta Obor informační technologie ve vzdělávání Kombinované studium

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Derivace funkcí více proměnných

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Transkript:

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č? 2. Charakterizujte lexikální analýzu(vstup, výstup, lexikální chyby). 3. Definujte silnou LL(k) gramatiku(vzorec + komentář). 4. Definujtemnožiny FOLLOW a FOLLOW k (u FOLLOW takéalgoritmus postup vytvoření). 5. K čemu slouží tabulka symbolů? Popište některý způsob implementace tabulky symbolů pro jazyk s blokovou strukturou. 6. Definujte atributovou překladovou gramatiku. K čemu slouží atributy? Jaký je rozdíl mezi dědičnými a syntetizovanými atributy? 7. Napište atributovou překladovou gramatiku, která bude vyhodnocovat logické výrazy s operátoryand,or,notarelačnímioperátory <, >(např.(x<25 AND NOT Y>Z)OR X<Z). Priority operátorů jsou následující: nejnižší prioritu mají operátory AND a OR, následuje operátor NOT, nejvyšší prioritu mají relační operátory. Výsledek uložte do atributu výstupního terminálu v, tedy první syntaktické pravidlo bude S Av.

1. Definujte překladač. Vypište základní fáze překladu a popište jejich vztah k průchodům překladu(včetně příkladu rozdělení fází pro jednoprůchodový a víceprůchodový překladač). 2. Charekterizujte syntaktickou analýzu(vstupy, výstupy, syntaktické chyby). 3. Definujte LL(1) gramatiku(podle významu názvu LL(1) a také podle dvou vlastností, které lze použít pro klasifikaci tohoto typu gramatiky). 4. Popište postup vytvoření programu realizujícího syntaktickou analýzu přepisem rozkladové tabulky(jaké funkce je nutné definovat, co budou dělat, vztah k rozkladové tabulce). 5. Vypište vše, co se může vyskytovat v rozkladové tabulce pro syntaktickou analýzu silného LR(k) jazyka, u každé položky napište, co znamená(jakou akci provedeme, když na tuto položku narazíme v rozkladové tabulce při zpracovávání vstupu). 6. K čemu slouží tabulka symbolů? Popište některý způsob implementace tabulky symbolů pro jazyk s blokovou strukturou. 7. Definujte překladovou gramatiku. Napište jakoukoliv překladovou gramatiku, která překládámatematickévýrazysoperátory+,,, /azávorkamizinfixovéhozápisuna postfixový s ohledem na prioritu operátorů(nemusí být LL(1)).

1. Jak může překladač reagovat na chybu při překladu? Popište mechanismus zotavení po chybě. 2. Definujte lexikální analýzu(vstupy, výstupy, lexikální chyby). Co to jsou symboly a z čeho se skládají? 3. Definujte dvě základní metody syntaktické analýzy, včetně levého a pravého rozkladu, vztahu ke konstrukci derivačního stromu a LL a LR gramatikám. 4. K čemu slouží tabulka symbolů? Popište některý způsob implementace tabulky symbolů pro jazyk s blokovou strukturou. 5. Definujte atributovou překladovou gramatiku. K čemu slouží atributy? Jaký je rozdíl mezi dědičnými a syntetizovanými atributy? 6. Převeďtevýraz X=25 8 (Y+2)+Z dovšechtřízákladníchdruhůintermediálního kódu. 7. Napište jakoukoliv atributovou gramatiku, která překládá matematické výrazy v infixovém zápisu do ekvivalentního prefixového(ne postfixového!).

1. Charakterizujte rozdělení překladače na přední a zadní část a napište význam tohoto rozdělení. 2. Definujtemnožiny FOLLOWa FOLLOW k.promnožiny FOLLOWnapištealgoritmus jejich nalezení(3-krokový). 3. Definujte překladový automat pro LL(1) gramatiku při syntaktické analýze včetně rozkladové tabulky(rozkladovou tabulku definujte také tím, co se v ní může vyskytovat ajaksenaurčitéakcereagujepřipřekladu). 4. Definujte překladovou gramatiku. 5. Definujte sémantickou analýzu(k čemu je, vstupy, výstupy, sémantické chyby). 6. Napište tabulku přechodů pro tento jazyk: L= {hlas, hloh, roh}. 7. Napište jakoukoliv atributovou gramatiku, která počítá matematické výrazy s operátory +,,, / a závorkami a zachovává prioritu operátorů, nemusí být LL(1).

1. Definujte překladač, dále definujte fáze a průchody(základní fáze vypište) a popište vztah mezi nimi. 5 bodů 2. Definujte LL(k) gramatiku(ne pomocí silné LL(k)!!!). 5 bodů 3. Definujte formální překlad(jako zobrazení). Napište definici homomorfismu včetně vstupního a výstupního homomorfismu a uveďte způsob použití při formálním překladu. 6bodů 4. Popište rozdíl mezi analýzou s návratem a deterministickou analýzou u obou základních metod syntaktické analýzy. 6 bodů 5. Dokažte větu: Pro bezkontextovou gramatiku není rozhodnutelné, zda není LL(k) pro žádné celé nezáporné číslo k. 5 bodů 6. Definujte funkci Before(X) používanou pro LR gramatiky. 5 bodů 7. Napište překladovou gramatiku překládající matematické výrazy v infixovém zápisu na ekvivalentní výrazy v postfixu(mat. operátory +,,, /, závorky, priorita operátorů, nemusí být LL(1)). Podle této gramatiky dále vytvořte překladový automat(δ-funkci). 8bodů

1. Charakterizujte lexikální analýzu(co provádí, vstupy, výstupy, lexikální chyby). 2. Definujte derivační strom věty, levou a pravou derivaci, levý a pravý rozklad. 3. Definujtemnožiny FIRSTa FIRST k anapištealgoritmusprovýpočetmnožiny FIRST. 4. Definujte silnou LL(k) gramatiku. Dále na schématu(množinově) ukažte, jaký je vztah mezi (a) LL(k) jazyky a silnými LL(k) jazyky(pro stejné číslo k), (b) LLjazykyaLRjazyky. 5. Definujte atributovou překladovou gramatiku(včetně jednotlivých jejích částí, i překladovougr.). 6. Převeďtevýraz X=83 Y+7 (Z/6 X 2)+A dovšechtřízákladníchdruhů intermediálního kódu. 7. Napište jakoukoliv atributovou gramatiku, která bude generovat deklarace proměnných ve stylu programovacího jazyka C a vygenerované proměnné bude zapisovat do tabulky symbolů pomocí vhodně nazvané sémantické funkce.

1. Charakterizujte syntaktickou analýzu(co provádí, vstupy, výstupy, syntaktické chyby). 2. Definujte LL(1) jazyk a LL(1) gramatiku(co znamená LL(1), dále dvě vlastnosti pro pravidla gramatiky). Čím se vyznačují LL(0) gramatiky? 3. Definujte rozkladovou tabulku pro silnou LR(k) gramatiku(jak jsou ohodnoceny řádky a sloupce, co se může nacházet v buňkách a co provedeme při vyhodnocování vstupu, pokudvurčitébuňcetabulkynajdeme...). 4. Definujtemnožiny EFF k (α)(matematickyislovně,můžetevlastnímislovypopsatzpůsob vytvoření množiny pro daný řetězec). 5. Definujte homomorfismus, vstupní a výstupní homomorfismus, k překladové gramatice definujte vstupní a výstupní gramatiku. 6. K zadané regulární překladové gramatice sestrojte konečný překladový automat. S i i A i i A B + C B i i A i i C i i + A i i + 7. Definujte syntetizované a dědičné atributy, napište také u každého alespoň jeden typický příklad použití(v atributových gramatikách počítajících matematické výrazy nebo generujících deklarace proměnných ukládané do tabulky symbolů).

1. Definujte překladač, dále napište rozdíl mezi klasickým a konverzačním překladačem (popište, jak pracují). 2. Definujte silnou LL(k) gramatiku(co znamená LL(k), silná, dále vztah, který musí platit pro pravidla). 3. Definujte dvě základní metody syntaktické analýzy včetně vztahu k derivačním stromům, derivaci, rozkladu. 4. K čemu slouží tabulka symbolů? Popište některou z možností organizace tabulky symbolů pro jazyk s blokovou strukturou. 5. K překladové gramatice definujte překladovou formu, a dále vstupní a výstupní větnou formu. 6. Vytvořte deterministickou tabulku přechodů pro jazyk L= {lom, los, polom}. 7. Napište jakoukoliv atributovou gramatiku, která počítá matematické výrazy s operátory +,,, / a závorkami a zachovává prioritu operátorů.

1. Definujte lexikální analýzu(co provádí, vstupy, výstupy, lexikální chyby). 2. Definujte derivační strom, pravou a levou derivaci, pravý a levý rozklad věty jazyka. 3. Definujte množiny BEF ORE(X) a napište, k čemu se v syntaktické analýze používají. 4. Definujte překladovou gramatiku(i to, z čeho se skládá), dále vstupní a výstupní gramatiku, překladovou formu, vstupní a výstupní větnou formu. 5. Cojeakčemusepoužívátabulkasymbolů?Popišteněkterouzmožnostípoužitítabulky symbolů pro programovací jazyk s blokovou strukturou. 6. K zadané bezkontextové překladové gramatice sestrojte ekvivalentní překladový automat. S AB (S)C A i i C B +S+ ε C S ε 7. K zadané překladové gramatice přidejte atributy a sémantická pravidla tak, aby výsledná atributová gramatika prováděla výpočet matematického výrazu nebo vyhodnocení logického výrazu(podle toho, které pravidlo pro S se použije, výsledek bude ve vhodně nazvaném atributu výstupního terminálu v). Můžete použít sémantické funkce pro získání hodnoty proměnné s určitým názvem a příp. další potřebné funkce. S Mv... S Lv... M M+ A... M M A... M A... A A B... A A/B... A B... B n... B i... B (M)... L L AND C... L L OR C... L C... C NOT D... C (L)... C D... D M < M... D M= M...

1. Popište základní fáze překladu. Definujte průchody překladu a navrhněte rozdělení jednotlivých fází do průchodů pro víceprůchodový překladač. 2. Definujtemnožiny FOLLOW a FOLLOW k,napištealgoritmusprovýpočetmnožin FOLLOW. 3. Definujte LL(k) gramatiku(definice platná i pro slabé LL(k) gr.) nejen co znamená LL(k), ale také definice ve vztahu k derivaci a pravidlům gramatiky. 4. Definujte syntaxí řízený překlad u formálního překladu(pomocí kartézského součinu a skládání zobrazení). 5. Popište tři základní druhy intermediálního kódu a u každého uveďte jednoduchý příklad a vhodnost pro interpretační nebo kompilační překladač. 6. K zadané bezkontextové gramatice sestrojte určené množiny F IRST, a dále vypočtěte všechny množiny F OLLOW. S BaAA cbbsa ε A cad dd ε B bba asb d FIRST(A)={ FIRST(SA)={ FIRST(BaAA)={ FOLLOW(S)={ FOLLOW(A)={ FOLLOW(B)={ 7. K následující překladové gramatice přidejte sémantická pravidla tak, aby ve výsledné atributové gramatice byl v atributu výstupního terminálu v maximální prvek seznamu (gramatika generuje seznam čísel, kde čísel je nenulový sudý počet, pro porovnávání hodnot můžete použít sémantickou funkci max(<hodnota1 >, <hodnota2 >), lze ji použít také rekurzívně vnořovat). S Lv L n, np P, L P ε

1. Definujte překladač. Dále napište definici kompilačního a interpretačního překladače, následující příklady vždy přiřaďte k jednomu z těchto typů(k nebo I): 5 bodů (a) internetovýprohlížeč:... (b) překladačjazykac(chcemespustitelnésoubory):... (c) příkazovýřádekvewindows:... (d) překladačdotazovacíhojazykasqlvdatabázovémsystému:... 2. Definujte syntaktickou analýzu(co to je, vstupy, výstupy, syntaktické chyby). Jaký typ gramatik se obvykle používá pro určení syntaktické struktury jazyka(regulární, bezkontextové,kontextové,...)? 5bodů 3. Definujtemnožiny FIRST(α)aFIRST k (α).napištealgoritmusprovypočtenímnožin FIRST(α). 6bodů 4. Definujte překladovou gramatiku, také vstupní a výstupní homomorfismus a vstupní a výstupní gramatiku pro překladovou gramatiku. 5 bodů 5. U každého ze tří základních druhů intermediálního kódu napište, zda je vhodnější pro interpretační nebo kompilační překlad, a způsob vytvoření každého kódu ukažte na matematickémvýrazu X=38 2 Y+ Z. 6bodů 6. Vytvořte regulární gramatiku a podle ní deterministickou tabulku přechodů pro jazyk L= {pes, pas, kos}. 6bodů 7. K pravidlům následující překladové gramatiky přidejte sémantická pravidla tak, aby výsledná atributová překladová gramatika počítala matematické výrazy, výsledek bude uložen ve vhodně nazvaném atributu výstupního terminálu v. 7 bodů S Av... A A+B... A A B... A B... B B C... B B/C... B C... C n... C i... C (A)...