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



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

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

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

Syntaxí řízený překlad

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

Zpracování deklarací a přidělování paměti

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

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

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

Základní způsoby: -Statické (přidělění paměti v čase překladu) -Dynamické (přiděleno v run time) v zásobníku na haldě

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

1 Úvod do kompilátorů

Implementace LL(1) překladů

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

Stromy, haldy, prioritní fronty

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.

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

Algoritmizace I. Ak. rok 2015/2016 vbp 1. ze 132

NPRG030 Programování I 3/2 Z --- NPRG031 Programování II --- 2/2 Z, Zk

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

Interpret jazyka IFJ2011

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

1 Nejkratší cesta grafem

Reprezentace aritmetického výrazu - binární strom reprezentující aritmetický výraz

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

Teoretické minimum z PJV

Dynamicky vázané metody. Pozdní vazba, virtuální metody

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

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

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.

Úvod do programovacích jazyků (Java)

Dynamické datové struktury III.

Výpočetní složitost I

Řešení problému batohu dynamickým programováním, metodou větví a hranic a aproximativním algoritmem

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

Další aspekty architektur CISC a RISC Aktuálnost obsahu registru

Algoritmizace Dynamické programování. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

1. Programování PLC. Programovatelné automaty II - 1 -

Algoritmizace prostorových úloh

Generování vnitřní reprezentace programu

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

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.

Virtuální metody - polymorfizmus

1. Převeďte dané číslo do dvojkové, osmičkové a šestnáctkové soustavy: a) b)

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

Struktura programu v době běhu

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

Rekurzivní algoritmy

Algoritmizace prostorových úloh

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Matematické symboly a značky

Aritmetika s velkými čísly na čipové kartě

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

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

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.

Intervalové stromy. Představme si, že máme posloupnost celých čísel p 0, p 1,... p N 1, se kterou budeme. 1. Změna jednoho čísla v posloupnosti.

Součin matice A a čísla α definujeme jako matici αa = (d ij ) typu m n, kde d ij = αa ij pro libovolné indexy i, j.

DYNAMICKÉ PROGRAMOVÁNÍ A PROBLÉM BATOHU

Kapitola 11. Vzdálenost v grafech Matice sousednosti a počty sledů

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Semestrální práce implementuje univerzální tokenizer založený na stavovém automatu. Jsou implementovány následující automaty:

Programování v Javě I. Únor 2009

Poslední aktualizace: 26. října 2011

přetížení operátorů (o)

Skalární součin je nástroj, jak měřit velikost vektorů a úhly mezi vektory v reálných a komplexních vektorových prostorech.

Implementace seznamů do prostředí DELPHI pomocí lineárního seznamu

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

zswi/pc-testování.d 10. května

součet cvičení celkem. známka. Úloha č.: max. bodů: skut. bodů:

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

Dynamické programování

Konstruktory překladačů

Programování v Javě I. Leden 2008

Úvod do programovacích jazyků (Java)

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

Několik poznámek na téma lineární algebry pro studenty fyzikální chemie

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

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

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

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

Implementace numerických metod v jazyce C a Python

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

PREPROCESOR POKRAČOVÁNÍ

Kubatova Y36SAP procesor - control unit obvodový a mikroprogramový řadič RISC Y36SAP-control unit 1

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

Syntaxí řízený překlad

Jazyk C++ I. Šablony 2

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

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

Úvod do simulace - 1

Registrační číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

Šablonovací systém htmltmpl vypracoval: Michal Vajbar, Šablonovací systém htmltmpl

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

Úvod do programování - Java. Cvičení č.4

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

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

Automaty a gramatiky

Transkript:

1) Charakterizujte křížový překladač Překlad programu probíhá na jiném procesoru, než exekuce. Hlavním důvodem je náročnost překladače na cílovém stroji by ho nemuselo být možné rozběhnout. 2. Objasněte pojem silikonový překladač Slouží pro návrh integrovaných obvodů. Proměnné nejsou položky v paměti ale logická proměnná obvodu. Výstupem je logický obvod. 3) Co to jsou formátory textu? Uveďte příklad Takový překladač, který ze vstupního souboru definovaného určitým jazykem, vygeneruje výstup. Příkladem je TEX nebo RTF 4) Charakterizujte kaskádní překladač Překládáme z jazyka A do jazyka C, nemáme překladač, ale máme z A do B. Tak si uděláme z B do C (nebo ho také máme) a přeložíme. Obtížné ladění. 5) Porovnejte výhody a nevýhody interpretačních a kompilačních překladačů Kompilační: Rychlejší exekuce Kompilace často platformě závislá přeloží se přímo do strojového kódu Interpretační: Pomalejší překlad Lepší možnost ladění Lepší přenositelnost mezikódu 6) Jaký je rozdíl mezi fází a průchodem překladače Fáze je dílčí část jednoho průchodu překladače (např. lexikální analýza, syntaktická analýza). Více průchodů, např. z důvodu optimalizace. 7) Charakterizujte vnitřní jazyky jednotlivých fází překladače U vícefázového překladače každá fáze generuje vnitřní jazyk, který je vstupem pro další fázi překladu. První fáze má jako vstup zdrojový kód, poslední fáze má jako výstup cílový kód. Např: 1) Lexikální analyzátor čte zdrojový kód a vytváří tabulku symbolů 2) Syntaktický analyzátor čte lexikální řetězce symbolů a převádí je na derivační strom 3) Sémantické zpracování převádí derivační strom na sémantický strom (vnitřní forma) 4) Generátor cílového kódu převádí sémantický strom na instrukce cílového jazyka 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 9) Zdůvodněte, proč se nepoužívají čistě interpretační překladače Provádění zdrojového kódu bez mezipřekladu je velmi pomalé. Proto se používají překlady do mezijazyka, např. Java bytecode, jejichž provádění je mnohem rychlejší (optimalizace při překladu, např. skoky). 10) Co to jsou generátory překladačů, uveďte příklad

Jedná se o systémy, které umožňují generování překladače pro určitý jednoduchý jazyk, který popíšeme například gramatikou. Výstupním jazykem generovaného kompilátoru je vždy předem zvolený jazyk, např. C. Příkladem je YACC nebo BISON. 11) Nakreslete schéma překladače kompilačního typu 12) Jaké jsou vnitřní jazyky, které produkují jednotlivé fáze překladače viz výše 13) Jaká vlastnost gramatiky podmiňuje nekonečnost generovaného jazyka? Rekurzivnost, cyklus v gramatice (nepřímá rekurze) 14) Popište gramatikou reálná čísla s desetinnou částí S +A A A A db B db.c C dc e kde d je číslo od 0...9 15) Jaký je nejvyšší možný počet stavů deterministického KA, má li ekvivalentní nederm. KA 5 stavů 2 N 1 => 2 5 1 = 31 16) Popište tvar identifikátoru levou lineární gramatikou S S0 S1... S9 Sa... Sz Xa... Xz X e

17) Zapište pravou lineární gramatiku čísla real v semilogaritmickém tvaru S +A A A A db.c B db.d C dd D dd expe E +F F F F dg G dg e kde d je 0 9 18) Zapište s co nejmenším počtem pravidel gramatiku popisující binární čísla s lichým počtem jedniček. S 0S 1A A 0A 1S e 19) Uveďte obecný tvar překladových pravidel používaných v LEX regexp: {akce} 20) Jaký řetězec rozpoznává LEX, je li překladové pravidlo dáno výrazem \+?[0 9][0 9]*$ Celé kladné číslo na konci řádku 21) Jak řeší lexik. analyzátory problém nalezení symbolu v případě, kdy je jeden symbol prefixem jiného? Snaží se najít nejdelší symbol 22) Jaký řetězec rozpoznává LEX, je li překladové pravidlo dáno výrazem (např. \*[1 9]* )? Buď jen * a nebo *d, kde d je číslo složené z cifer 1...9 23) Popište princip způsobu zotavení ze syntaktické chyby v překladači PL/0 využívá panické zotavení vstup je ignorován až do následujícího výskytu platných symbolů 24) Jaké vlastnosti musí splňovat jazyk analyzovatelný rekurzivním sestupem Musí splňovat vlastnost LL gramatik, nesmí obsahovat levou rekurzi, na základě prvních několika symbolů se musí rozhodnout, jakou použije větev (pravidlo) 25) Vysvětlete funkci procedury Test(s1,s2: symset; n: integer); v překladači PL/0 slouží pro zotavení po chybě. Testuje, zda se jedná o validní symbol (z množiny s1). Pokud je z množiny s2 pak je to tzv. s top symbol a funkce zahlásí chybu n. 26) Zapište gramatiku aritmetického výrazu s operátory +, *, a závorkami (, ). Zapište levou derivaci věty i + i E E+T T T T*F F F i (E) E E+T T+T F+T i+t i+f i+i (nejprve se rozepisuje podle pravidel levá strana a pak pravá)

27) Popište princip metody rekurzivního sestupu 1. Každému neterminálnímu symbolu A na levé straně je přiřazena procedura A 2. Tělo procedur je dáno pravými stranami pravidel 3. Pravé strany musí být rozlišitelné na základě symbolů vstupního řetězce 4. Je li rozpoznána pravá strana, pak se v případě neterminálního symbolu A vyvolá procedura A, v případě terminálního symbolu je ověřena jeho přítomnost ve vstupním řetězci a je zajištěno přečtení dalšího symbolu 5. Rozpoznané pravidlo je oznámeno, stejně jako případná chyba 28) Charakterizujte syntetizované atributy Hodnota syntetizovaného atributu neterminálního symbolu je závislá na hodnotě příslušného podstromu, jehož je neterminální symbol kořenem 29) Popište způsob vyhodnocování dědičných atributů. 1. Hodnota dědičného atributu u určitého neterminálního symbolu závisí na kontextu, ve kterém se příslušný podstrom nachází. 2. Dědičné atributy určujeme pro symboly na pravé straně pravidla v závislosti na atributech předcházejících symbolů v pravidle nebo na dědičných atributech symbolu na levé straně pravidla. 3. Zadanou hodnotu je vhodné přiřadit jako počáteční hodnotu jednomu atributu, nejlépe u kořene překladového stromu. 4. Způsob vyhodnocení je takový, že procházíme strom od rodiče k potomkovi, od nejstaršího bratra k mladšímu. 30) Popište zásady konstrukce postfixového výrazu z infixového Pořadí operandů zůstává zachováno, mění se pouze pozice operátoru, které musí bezprostředně následovat za svými operandy. Není potřeba používat závorky k vyjádření precedence. Př. A+B AB+ 31) Zapište posloupnost postfixových instrukcí pro příkaz a10 = (x20 + y30)/(x20 y30) 32) Zapište výraz 2*(x + y) ^ 3 pro případ 1) nejvyšší, 2) nejnižší precedence operátoru unárního minus a) v prefixové, b) v postfixové notaci 1.a) * 2 ^ + x y 3 1.b) 2 x y + 3 ^ * 2.a) * 2 ^ + x y 3 2.b) 2 x y + 3 ^ *

33) Přeložte do posloupnosti postfix. instrukcí if (A 10 < B 20 ) then C 30 = (A10 + B20 ) * ( A10 B20); 34) Přeložte do postfixových instrukcí příkaz while x<y do x = (x+y) / (x y); je li x na adrese 100 a y na adrese 101. 35) Jaké informace jsou ukládány v tabulce symbolů překladače? 1. Druh konstanta, proměnná, procedura, funkce,... 2. Hladina úroveň zanoření 3. Adresa adresa v programu, u proměnných dynamická adresa 4. Typ datový typ 5. Velikost 36) Vysvětlete, jakým mechanismem překladač zajišťuje respektování lokality identifikátorů v blokově strukturovaném jazyce Lokální identifikátory vznikají při vstupu do bloku a zanikají při výstupu do bloku. Každý blok má přístup pouze tu část tabulky symbolů, která odpovídá jeho úrovni vnoření. V některých jazycích je možné explicitně definovat viditelnost proměnné 37) Jaká je časová složitost práce s rozptýleně organizovanou tabulkou symbolů v závislosti na počtu symbolů v programu? O(n) vysoce teoretické (hashovací fce by musela být např return 1) jinak O(1) 38) Jaká je závislost časové režie vyhledávání v netříděně uspořádané tabulce symbolů na počtu jmen v tabulce O(n), kde n je počet jmen (v tabulce symbolů) čím obsáhlejší bude program, tím větší bude časová složitost 39) Popište způsob vytváření a práce s frekvenčně uspořádanou tabulkou symbolů

V tabulce jsou symboly uspořádávány podle frekvence výskytu, což zpravidla vede k rychlejšímu nalezení potřebného symbolu. Naopak je ovšem potřeba určitý čas na proces uspořádání. 40) K čemu slouží mapovací funkce pole a z jakých se skládá částí 41) K čemu slouží mapovací funkce pole a na jaké části se člení? Slouží k výpočtu adresy pro uložení určitého prvky tabulky kde i... indexy prvků pole K.. koeficient, jehož výpočet závisí na uspořádání pole D.. dolní mez indexů části: 1. Konstantní část udávající adresu počátku pole (druhá suma) 2. Deskriptor pole 3. jednotlivé rozměry pole n 4. indexy prvků i 5. velikost jednoho prvku 42) Jaké informace jsou předávány při volání podprogramu, je li formálním parametrem procedura? a) v případě statického přidělování paměti adresa začátku procedury (formální parametr) b) v případě dynamického přidělování paměti adresa začátku procedury (formální parametr) + statický ukazatel 43) Co je obsahem deskriptoru třídy. 1. Ukazatel na deskriptor rodiče 2. Seznam datových položek Offset Viditelnost 3. Seznam metod Vstupní bod Viditelnost Static Pokud to jazyk podporuje, je obsahem deskriptoru také VMT tabulka virtuálních metod. 44) Popište, jak překladač realizuje volání statických metod v OO jazyce U statických metod se hledá vstupní bod v deskriptoru třídy. Při neúspěchu se hledá v deskriptoru předka. 45) Popište, jak překladač realizuje vyvolání dynamických (virtuálních) metod v OO jazyce Pokud jazyk podporuje virtuální metody, je v deskriptoru také VMT tabulka virtuálních metod. Před prvním voláním metody je zapotřebí zavolat konstruktor třídy, který propojí danou instanci s bodem vstupu metody. 46) Kdy překladač vytváří CIR (class instance rekord) a jaké informace v něm ukládá CIR ukládá instanční proměnné a odkaz na seznam dynamicky vázaných metod. Vytvoření:

1. Objekt vytvořen instanciací: CIR vytvořen výpočtem na haldě 2. Objekt vytvořen deklarací: CIR vytvořen při překlad 47) Co je obsahem TVM (tabulka virtuálních metod) a kdy se TVM vytváří Tabulka obsahující vstupní body virtuálních metod třídy. Vytváří se při vytváření instance (volání konstruktoru) třídy. Viz 43, 45. 48) Popište význam částí dynamické adresy (adresové dvojice) Dynamická adresa je dvojice (l, a) kde l = úroveň zanoření programu (báze); a = adresa v rámci daného akt. záznamu. 49) Formulujte podmínku, kterou musí splňovat program, aby statický řetězec výpočtového zásobníku stále splýval s dynamickým řetězcem Podprogramy mohou volat pouze podprogramy, které jsou jim podřazené. Statický a dynamický ukazatel jsou totožné, pokud je podprogram deklarován a volán ze stejné hladiny 50) Jakými vlastnostmi jazyka je podmíněno statické přidělování paměti nesmí povolovat dynamické proměnné, dynamické typy a rekurzivní volání podprogramů. 51) Popište odlišnost obsahu aktivačního záznamu v případě jazyka s nemožností/možností vnořování podprogramů Bez možnosti vnořování podprogramů nemusí být v záznamu uložen statický ukazatel 52) Uveďte, jaké údaje ukládá překladač v aktivačním záznamu 1. Lokální proměnné 2. Parametry 3. Pomocné proměnné pro mezivýsledky 4. Je li podprogram funkcí, pak funkční hodnota 5. Návratová adresa 53) Uveďte datové struktury, které jsou použitelné k přidělování paměti pro: a) rekurzivně volané procedury a funkce zásobník b) dynamické proměnné halda c) dynamické typy zásobník a halda d) paralelně proveditelné programové jednotky zobecněný zásobník a halda 54) Popište způsob a důvod použití displeje. Při velké hloubce vnoření podprogramů dochází ke značné časové náročnosti při vyhledávání nelokálních objektů. Proto je zaveden vektor (tzv. displej), který obsahuje bázové adresy aktivačních záznamů, které jsou právě aktivní. 55) Jaká omezení budou důsledkem přístupu do výpočtového zásobníku pomocí displeje, který je realizován jako array[1..3] of adresa_v_zásobníku Hloubka zanoření volání podprogramů je omezena na počet prvků (adres), které se vejdou do displeje; v tomto případě tedy 3. 56) Uveďte příklad víceznačné gramatiky. Víceznačnost dokažte. S as Sa c pro tuto gramatiku existuje více derivačních stromů protože nesplňuje nutnou podmínku o existenci levé a pravé rekurze u jednoho neterminálu.

57) Kdy označujeme větu jazyka jako víceznačnou? Pokud pro pro gramatiku, která ji generuje existuje více derivačních stromů. Viz 56. 58) Může pro víceznačnou gramatiku existovat ekvivalentní gramatika jednoznačná? Ano. Ale problém nejednoznačnosti gramatik je obecně algoritmicky nerozhodnutelný. 59) Operátor umocnění je ve Fortranu pravorasociativní. Zapište G pro aritmetický výraz respektující tuto vlastnost S S^x 60) Popište formálně zásobníkový automat a význam jeho částí Zásobníkový automat je sedmice (K, T, D, δ, q 0, Z 0, F), kde K... vnitřní stavy T... vstupní symboly D... zásobníkové symboly δ... zobrazení K (T {e}) Q do množiny konečných podmnožin K Q D q 0... počáteční stav K Z 0... počáteční symbol zásobníku Q F... množina koncových stavů K 61) Popište přechodovou funkci zásobníkového automatu akceptujícího s prázdným zásobníkem, který je ekvivalentní gramatice G [S]: S ( S ) S ( ) e delta = { (q, (, epsilon) (q, ( ) (q, ), ( ) (q, epsilon) (q, e, epsilon) (q, epsilon) } 62) Jaký jazyk popisuje gramatika G [S]: S ( S ) S ( ) e Popisuje posloupnost dvojic závorek, které mohou být vnořené, nebo prázdný řetězec 63) Jaký jazyk popisuje gramatika G [S]: S a S a b S b e Tvoří slova symetrická se stejným počtem a i b. 64) Navrhněte gramatiku jazyka, jehož věty mají tvar w w reverzní, kde w {0,1} * S 0S0 1S1 e 65) Proveďte úpravu na zadané gramatice 66) Charakterizujte vztah mezi jazyky s LL(0) gramatikou a regulárními jazyky Regilární jazyky vytvářejá derivační strom shora dolů. Jazyky LL jsou podmnožinou rekulárních jazyků. 67) Uveďte formální definici LL(1) gramatiky Jednoduchá LL gramatika má na levé straně jeden neterminální symbol, na druhé straně je jako první uveden terminální symbol. Navíc nesmí mít podobná přepisovací pravidla, tj. může být A bx A cx ale ne již

A xb A xc protože nelze rozhodnout, které pravidlo se má vybrat. (first first kolize) Obecná LL gramatika nemá omezení, ale musí pro ni existovat rozkladová tabulka. 68) Zdůvodněte, proč je každá LL(1) gramatika silná Už z definice že splňuje podmínku silné gramatiky. Definice viz 69) 69) Uveďte nutnou a postačující podmínku pro to, aby gramatika byla silná LL(k) 70) K čemu slouží úprava gramatiky zvaná "pohlcení terminálu"? Uveďte příklad. Pohlcení řeší situaci, kdy za nějakým neterminálním symbolem následuje symbol, kterým může jiné pravidlo od tohoto neterminálního symbolu začínat. Řeší tedy FIRST FOLLOW kolizi. 71) Uveďte příklady algoritmicky nerozhodnutelných problémů z teorie formálních jazyků 1. Problém nejednoznačnosti gramatik 2. Problém zacyklení programu (nelze detekovat pouze na základě zdrojového kódu) 3. Problém určení, pro jaká k je gramatika LL(k). Existuje pro libovolnou gramatiku typu 2 algoritmus pro: a) převod na ekvivalentní nelevorekurzivní gramatiku ANO b převod na ekvivalentní LL (k) gramatiku NE c) převod na ekvivalentní LR (k) gramatiku ANO d) výpočet množin LR (0) položek? NE 72) Zdůvodněte proč LR(k) gramatiky popisují obsáhlejší třídu jazyků než LL(k) Každá LL(k) gramatika je zároveň LR (k) gramatikou, avšak opačně nikoli. Z toho jasně vyplývá, že LR (k) jsou obsáhlejší třídou, nežli LL(k). Viz 73. 73) Porovnejte mohutnosti množin LR(0), LALR(k), LR(k) položek

74) Jaké podmínky musí splňovat množiny LR(0) položek, aby gramatika byla SLR(1)? Pokud je kolize = tečka na konci a uprostřed v jedné množině, pak Pokud je následující symbol follow(x), provedeme X a. Pokud je následující symbol first(x), provedeme X a.b 75) Popište tvar LR(0) položky a význam jejích jednotlivých částí LR(0) má tvar # : ( A. α )+, kde # je vrchol zásobníku a. je oddělovač dosud nezpracované části vstupu. A N, α ( T N ) 76) Jakou metodu syntaktické analýzy používá YACC zdola nahoru 77) Jakým způsobem řeší YACC konflikty redukce redukce Výběrem pravidla dle pořadí jejich uvedení