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

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

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

Nerovnice s absolutní hodnotou

Kvadratické rovnice pro učební obory

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

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

1.3.1 Kruhový pohyb. Předpoklady: 1105

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

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

( ) Kreslení grafů funkcí metodou dělení definičního oboru I. Předpoklady: 2401, 2208

Principy překladačů. Architektury procesorů. Jakub Yaghob

3. Ve zbylé množině hledat prvky, které ve srovnání nikdy nejsou napravo (nevedou do nich šipky). Dát do třetí

15 s. Analytická geometrie lineárních útvarů

Dopravní úloha. Jiří Neubauer. Katedra ekonometrie FEM UO Brno

Abstrakt. Následující text obsahuje detailní popis algoritmu Minimax, který se používá při realizaci rozhodování

(a) = (a) = 0. x (a) > 0 a 2 ( pak funkce má v bodě a ostré lokální maximum, resp. ostré lokální minimum. Pokud je. x 2 (a) 2 y (a) f.

Převodníky analogových a číslicových signálů

Kvadratické rovnice pro studijní obory

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

M - Rovnice - lineární a s absolutní hodnotou

( ) ( ) ( ) 2 ( ) Rovnice s neznámou pod odmocninou II. Předpoklady: 2715

Ústav technologie, mechanizace a řízení staveb. CW01 - Teorie měření a regulace ZS 2010/2011. reg Ing. Václav Rada, CSc.

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

2.8.9 Parametrické rovnice a nerovnice s absolutní hodnotou

Vrtání závitů bez vyrovnávací hlavičky (G331, G332)

Vztah mezi dvěma čísly, které se rovnají, se nazývá rovnost, jako například : ( 2) 3 = 8 4 = 2 ; 16 = 4 ; 1 = 1 a podobně. 2

( ) Neúplné kvadratické rovnice. Předpoklady:

Úvod. Analýza závislostí. Přednáška STATISTIKA II - EKONOMETRIE. Jiří Neubauer

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

SPOLEHLIVOST KONSTRUKCÍ & TEORIE SPOLEHLIVOSTI část 2: Statistika a pravděpodobnost

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

Ministerstvo pro místní rozvoj. podprogram

1. Programování, typy programovacích jazyků, historie.

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

3.2.4 Podobnost trojúhelníků II

Kapitola 7: Integrál. 1/14

Klientský formát POHLEDÁVKY platný od

Úvod do výrokové logiky. (FLÚ AV ČR) Logika: CZ.1.07/2.2.00/ / 29

Google AdWords - návod

= musíme dát pozor na: jmenovatel 2a, zda je a = 0 výraz pod odmocninou, zda je > 0, < 0, = 0 (pak je jediný kořen)

Každý jednotlivý záznam datového souboru (tzn. řádek) musí být ukončen koncovým znakem záznamu CR + LF.

PŘÍLOHA č. 2B PŘÍRUČKA IS KP14+ PRO OPTP - ŽÁDOST O ZMĚNU

Pohyb v listu. Řady a posloupnosti

4.6.6 Složený sériový RLC obvod střídavého proudu

{ } Kombinace II. Předpoklady: =. Vypiš všechny dvoučlenné kombinace sestavené z těchto pěti prvků. Urči počet kombinací pomocí vzorce.

Parkovací automat. Identifikace systému. Popis objektu

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

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

Teorie grafů. Bedřich Košata

MS WORD 2007 Styly a automatické vytvoření obsahu

Pingpongový míček. Petr Školník, Michal Menkina. TECHNICKÁ UNIVERZITA V LIBERCI Fakulta mechatroniky, informatiky a mezioborových studií

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

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

Operační systém teoreticky

Lineární algebra. Vektorové prostory

Virtuální přístroje. Použití grafického programování v LabVIEW. Ing. Pavel Mlejnek

DUM 11 téma: Nástroje pro transformaci obrázku

ELEKTROTECHNICKÁ MĚŘENÍ PRACOVNÍ SEŠIT 2-3

E-ZAK. metody hodnocení nabídek. verze dokumentu: QCM, s.r.o.

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

Aritmetika s didaktikou I.

Obchodní řetězec Dokumentace k návrhu databázového systému

Sekvenční logické obvody

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Escort Servis Night Prague

UŽITÍ DERIVACÍ, PRŮBĚH FUNKCE

Inovace výuky prostřednictvím ICT v SPŠ Zlín, CZ.1.07/1.5.00/ Vzdělávání v informačních a komunikačních technologií

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

1.1.1 Kvadratické rovnice (dosazení do vzorce) I

Základy. analýzy hlavních komponent a multivariačních regresních metod pro spektrální analýzu

KIV/ZI Základy informatiky. MS Excel maticové funkce a souhrny

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

Sada 2 Microsoft Word 2007

Soustavy lineárních rovnic

Vedoucí bakalářské práce

Windows 10 (6. třída)

2.7.2 Mocninné funkce se záporným celým mocnitelem

Metodické listy pro kombinované studium předmětu ŘÍZENÍ LIDSKÝCH ZDROJŮ. Metodický list č. 1

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

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ě

Diferenciální počet funkcí jedné proměnné

PŘÍRUČKA K POUŽÍVÁNÍ APLIKACE HELPDESK

Plán předmětu Název předmětu: Školní rok: Ročník: Semestr: Typ předmětu: Rozsah předmětu: Počet kreditů: Přednášející: Cvičící: Cíl předmětu

Jak stáhnout video/hudbu z YouTube. Napsal uživatel Yeah(c) Neděle, 15 Listopad :44

Google Apps. pošta 2. verze 2012

Průvodce e learningem

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 týmové spolupráci jsou komentáře nezbytností. V komentářích se může např. kolega vyjadřovat k textu, který jsme napsali atd.

Důkazové metody. Teoretická informatika Tomáš Foltýnek

Paradigmata kinematického řízení a ovládání otevřených kinematických řetězců.

Postup práce s elektronickým podpisem

Tvarovací obvody. Vlastnosti RC článků v obvodu harmonického a impulsního buzení. 1) RC článek v obvodu harmonického buzení

Syntaxí řízený překlad

M - Příprava na 2. zápočtový test pro třídu 2D


JAK PŘIDAT UŽIVATELE PRO ADMINISTRÁTORY

VOLBA TYPU REGULÁTORU PRO BĚŽNÉ REGULAČNÍ SMYČKY

STEREOMETRIE. Vzdálenost bodu od přímky. Mgr. Jakub Němec. VY_32_INOVACE_M3r0113

Popis připojení elektroměru k modulům SDS Micro, Macro a TTC.

Transkript:

KIV/FJP vypracované otázky (2011/12) 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 nebylo možné rozběhnout. 2. Objasněte pojem silikonový překladač Slouží pro návrh integrovaných obvodů. Proměnné nejsou položka v paměti ale logická proměnná obvodu. Výstupem je logický obvod. 3. Co to jsou formátory textu? Uveďte příklad Překladače pro sazbu textu, jako je např. TEX či RTF. 4. Charakterizujte kaskádní překladač Pokud máme A B a potřebujeme A C, řešíme, zda se nám vyplatí řešit B C nebo spíše A C. Problémem je, že oba překladače produkují chybové hlášky a uživatel jazyka A nebude rozumět chybám překladače z jazyka B. 5. Porovnejte výhody a nevýhody interpretačních a kompilačních překladačů Kompilační Rychlejší exekuce Často platformově závislé nepřenositelnost Interpretační Pomalejší exekuce Dobré možnosti ladění Přenositelnost mezikódu 6. Jaký je rozdíl mezi fází a průchodem překladače Fáze je část dílčí část jednoho průchodu překladače (např. lexikální analýza, syntaktická analýza). Fáze může obsahovat více průchodů, např. z důvodu optimalizace. Jeden průchod může obsahovat více fází překladu rozdělení překladu na více částí. 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ý 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 Obecně se snažíme pouze o jeden průchod jediné čtení zdrojového kódu, lepší možnosti ladění. Výhodou víceprůchodového překladače je vznik meziproduktů (vnitřní jazyky překladače) a z nich vyplývající lepší možnost kontroly nad překladem a 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 např. YACC nebo BISON. V ideálním případě bychom generátoru poskytli pouze popis vstupního a výstupního jazyka, a on by nám vygeneroval kompilátor to je ovšem utopie. 1

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. 14. Popište gramatikou reálná čísla s desetinnou částí c 0;9 S + A A cb. C A cb. C B cb. D C cd D cd e 15. Jaký je nejvyšší možný počet stavů deterministického KA, má-li ekvivalentní NKA 5 stavů? 2 5-1=31 stavů 16. Popište tvar identifikátoru levou lineární gramatikou S S0 S1 S9 Sa Sz Xa Xz X e 2

17. Zapište pravou lineární gramatiku čísla real v semilogaritmickém tvaru c 0;9 S + A A cb. C A cb. C B cb. D C cd D cd exp E E + F F cg F cg G cg e 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 1S 0A e 19. Uveďte obecný tvar překladových pravidel používaných v LEX Překladová pravidla jsou uvedena po deklarační části a před částí s dalšími funkcemi (v cílovém jazyce). Pravidla mají obecný tvar: <levá strana> : <pravá strana 1> {sémantická akce 1} <pravá strana 2> {sémantická akce 2}... <pravá strana n> {sémantická akce n} 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 řádky (může být včetně znaménka). 21. Jak řeší lexik. analyzátory problém nalezení symbolu v případě, kdy je jeden symbol prefixem jiného? Snaží se hledat co nejdelší symbol. 22. Jaký řetězec rozpoznává LEX, je-li překladové pravidlo dáno výrazem \*[1-9]*? Celé kladné číslo bez znaménka, kterému předchází hvězdička (např. v násobení). 23. Popište princip způsobu zotavení ze syntaktické chyby v překladači PL/0 Překladač PL/0 použí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 vlastnosti 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 Funkce slouží pro zotavení po chybě testuje, zda se jedná o validní symbol, přičemž ten se musí nacházet v množině tzv. následovníků s1. Pokud je načtený symbol v množině stop symbolů s2, procedura 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 F+F i+f i+i 3

27. Popište princip metody rekurzivního sestupu Každému neterminálnímu symbolu A na levé straně je přiřazena procedura A Tělo procedur je dáno pravými stranami pravidel Pravé strany musí být rozlišitelné na základě symbolů vstupního řetězce 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 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ů. 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í. 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. Zadanou hodnotu je vhodné přiřadit jako počáteční hodnotu jednomu atributu, nejlépe u kořene překladového stromu. 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 ( je libovolný operand) A B 31. Zapište posloupnost postfixových instrukcí pro příkaz a 10 = - (x 20 + y 30)/(x 20 - y 30) + ; 20; 30; 100 - ; #0; 100; 101 -; 20; 30; 102 /; 101; 102; 103 =; 10; 103; - 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 ^ 3 + x y 1.b) 2 x y + 3 ^ * 2.a) * 2 ^ 3 + x y 2.b) 2 x y + 3 ^ * 33. Přeložte do posloupnosti postfix. instrukcí if (A 10 < B 20) then C 30 = (A 10 + B 20 ) * ( A10 - B 20 ) <; 10; 20; 100 IFJ; 100; 7; - +; 10; 20; 101 -; 10; 20; 102 *; 101; 102; 103 =; 30; 103; - 4

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 <; 100; 101; 102 IFJ; 102; 8; - +; 100; 101; 103 -; 100; 101; 104 /; 103; 104; 105 =; 100; 105; - JU; 1; -; - 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 n2, kde n je počet symbolů v programu a k je rozptyl k 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? m = počet výskytů všech jmen v programu n = počet jmen (položek v tabulce symbolů) Čím je program obsáhlejší, tím více jmen bude obsahovat, takže Ο = (m n) Ο = (n 2 ) 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í? Mapovací (hashovací) funkce slouží k výpočtu adresy uložení určitého prvku tabulky. hodnota mapovací funkce = i K D K n k k k k k= 1 k= 1 n i... indexi prvků pole k K... koeficient, jehož výpočet je závislý na uspořádání pole k Dk... dolní mez indexů Části: Konstantní část, udávající adresu začátku pole Deskriptor pole Indexy prvků Jednotlivé rozměry pole (n-rozměrnost) 5

Velikost jednoho prvku 41. K čemu slouží mapovací funkce pole a na jaké části se člení? Viz předchozí odpověď :-) 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? Ukazatel na deskriptor rodiče Seznam datových položek - Offset - Viditelnost 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í: a) Objekt vytvořen instanciací: CIR vytvořen výpočtem na haldě b) Objekt vytvořen deklarací: CIR vytvořen výpočtem, jeho zásobníková adresa a velikost určeny při překladu. 47. Co je obsahem VMT (tabulka virtuálních metod) a kdy se VMT 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á 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 Paměť je možné přidělovat staticky, pokud jazyk nepřipouští přidělování dynamické nepovoluje dynamické proměnné ani např. 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ů Jazyk bez možnosti vnořování podprogramů nepotřebuje mít AZ uložen statický ukazatel. 6

52. Uveďte, jaké údaje ukládá překladač v aktivačním záznamu Lokální proměnné Parametry Návratová adresa Je-li podprogram funkcí, pak funkční hodnota Pomocné proměnné pro mezivýsledky 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, halda, zásobník d) paralelně proveditelné programové jednotky zobecněný zásobník, 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ů, neboť není splněna nutná podmínka o existenci levé a pravé rekurze u jednoho neterminálního symbolu. 57. Kdy označujeme větu jazyka jako víceznačnou? Pokud pro větu, která je generovaná gramatikou G, existuje více derivačních stromů. 58. Může pro víceznačnou gramatiku existovat ekvivalentní gramatika jednoznačná? Ano, může. Problém nejednoznačnosti gramatik je však obecně algoritmicky nerozhodnutelný. 59. Operátor umocnění je ve Fortranu pravoasociativní. Zapište G pro aritmetický výraz respektující tuto vlastnost U U ^ c 60. Popište formálně zásobníkový automat a význam jeho částí ZA je osmice ( KTQD,,,, δ, q0, Z0, F), kde K... vnitřní stavy T... vstupní symboly Q... výstupní 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?? :-( Na vrcholu zásobníku S, má 3 možnosti, jak se nahradí, pro všechny terminální symboly, když je na zásobníku a ve vstupu tentýž, tak se dělá srovnání. 7

62. Jaký jazyk popisuje gramatika G [S]: S ( S ) S ( ) e? Gramatika popisuje posloupnost dvojic závorek, které mohou být i vnořené. 63. Jaký jazyk popisuje gramatika G [S]: S a S a b S b e Libovolnou posloupnost a a b, přičemž tato posloupnost je symetrická (palindrom). 64. Navrhněte gramatiku jazyka, jehož věty mají tvar S 0S0 1S1 e reverzivní ww, kde w { 0,1} 65. Charakterizujte vztah mezi jazyky s LL(0) gramatikou a regulárními jazyky Regulární jazyky vytvářejí derivační strom shora dolů. Jazyky LL(0) jsou podmnožinou regulárních jazyků. 66. Uveďte formální definici LL(1) gramatiky Jednoduchá LL gramatiká 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. Obecná LL gramatika nemá omezení, ale musí pro ni existovat rozkladová tabulka. 67. Zdůvodněte, proč je každá LL(1) gramatika silná Při analýze není potřeba používat historii; vystačíme si pouze s právě načteným symbolem. 68. Uveďte nutnou a postačující podmínku pro to, aby gramatika byla silná LL(k) Jestliže pro jeden neterminální symbol existují různá pravidla P {A α; A β} pak platí, že first k α follow k (A) first k β follow k (A) = 69. 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. A [ Ba] C A BaC B e abc [ Ba] a abca odstraníme zavedením [Ba] C c B e abc C c 70. Uveďte příklady algoritmicky nerozhodnutelných problémů z teorie formálních jazyků a) Problém nejednoznačnosti gramatik b) Problém zacyklení programu (nelze detekovat pouze na základě zdrojového kódu) c) Problém určení, pro jaká k je gramatika LL(k). 71. 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). 8

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í #: A. α +, kde # je vrchol zásobníku a. je oddělovač dosud nezpracované části vstupu. LR(0) má tvar ( ) 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í. 9