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



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

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

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

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

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ě

Programovací jazyk Pascal

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

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

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

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

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.

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

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

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

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

Implementace LL(1) překladů

2 Formální jazyky a gramatiky

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

Struktura programu v době běhu

Programy na PODMÍNĚNÝ příkaz IF a CASE

ALGORITMIZACE A PROGRAMOVÁNÍ

Překladač a jeho struktura

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

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

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

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

TÉMATICKÝ OKRUH TZD, DIS a TIS

Poslední aktualizace: 14. října 2011

Západočeská univerzita FAKULTA APLIKOVANÝCH VĚD

Úvod do programovacích jazyků (Java)

Jednoznačné a nejednoznačné gramatiky

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.

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

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

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Maturitní otázky z předmětu PROGRAMOVÁNÍ

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

Automaty a gramatiky

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

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

Algoritmizace a programování

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Lexikální analýza (Obsah)

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

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

Sdílení dat mezi podprogramy

PODPROGRAMY PROCEDURY A FUNKCE

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

Vlastnosti algoritmu. elementárnost. determinovanost. rezultativnost. konečnost. hromadnost. efektivnost

Algoritmizace a programování

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.

Úvod do informatiky. Miroslav Kolařík

Konstruktory překladačů

Rekurze. Pavel Töpfer, 2017 Programování 1-8 1

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Generování vnitřní reprezentace programu

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

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

Přerušovací systém s prioritním řetězem

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Algoritmizace. 1. Úvod. Algoritmus

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

Uplatnění metod na zvolený jazyk

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

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

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

Rekurzivní algoritmy

Syntaxí řízený překlad

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

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

Sada 1 - Základy programování

Konečný automat. Jan Kybic.

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

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Naproti tomu gramatika je vlastně soupis pravidel, jak

Algoritmizace prostorových úloh

Úvod do programování

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Syntaxí řízený překlad

Vztah jazyků Chomskeho hierarchie a jazyků TS

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Program a životní cyklus programu

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

6. Příkazy a řídící struktury v Javě

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

Princip funkce počítače

OSTRAVSKÁ UNIVERZITA V OSTRAVĚ

Informatika navazující magisterské studium Přijímací zkouška z informatiky 2018 varianta A

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

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

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

Masarykova střední škola zemědělská a Vyšší odborná škola, Opava, příspěvková organizace

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

Úvod. Programovací paradigmata

Řídicí struktury. alg3 1

4.2 Syntaxe predikátové logiky

Časová a prostorová složitost algoritmů

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

Transkript:

Otázky ke zkoušce 1. Charakterizujte pojem křížový překladač Provádí překlad na počítači pro jiný počítač (např. pračky, myčky, automobily). Generuje kód pro jiný počítač, než na kterém probíhá překlad. 2. Objasněte pojem silikonový překladač Používá se pro návrh logických obvodů překlad zdrojového kódu do hradel. Např. ABel. 3. Co jsou to formátory textu? Uveďte příklad Upravování podoby textu podle požadavků uživatele (TeX). Napři syntax highlighting, nebo přeformátování kódu odsazení apod. Takový překladač, který ze vstupního souboru definovaného určitým jazykem, vygeneruje výstup. 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čů Interpret: - vnitřní jazyk lepší přechod na jiný stroj (např. bytekód u Javy) - snazší debugging - pomalejší kompilace nutnost opakovaného překladu u opakujících se sekvencí (for) Kompilátor: - Okamžitý překlad do strojového jazyka - Rychlý běh programu rychlá kompilace (překlad) - Složitější debugging ladění, odstraňování chyb, krokování 6. Jaké jsou důvody pro použití víceprůchodového překladače? - Překlad probíhá ve více fázích dříve kvůli paměti jen jedna část překladače je v paměti. - Snadněji jde rozdělit práci mezi více programátorů - Algoritmy pro optimalizaci jsou často složité mají proto vlastní průchod, často i více průchodů. - zajímají nás meziprodukty mezipřeklady: 1. Průchod -> 1. meziprodukt n. průchod Finální produkt - lze optimalizovat překládaný program kvůli dopředným skokům 7. Zdůvodněte, proč se nepoužívají čistě interpretační překladače Program prováděný čistě interpretačním překladačem je prováděn mnohem pomaleji něž odpovídající cílový program vytvořený kompilátorem. Nevhodné pro programy, kde výpočet je časově náročný. Proto JAVA tuto nevýhodu odstraňuje pomocí bytecode. 8. Co to jsou generátory překladačů, uveďte příklad Programy, které na základě symbolického popisu (např. pomocí gramatiky) vytvoří zdrojový kód překladače. Např. JavaCC, bison, yacc 9. Nakreslete schéma překladače kompilačního typu Lexikální analyzátor posloupnost symbolů programu Syntaktický analyzátor derivační strom Zpracování sémantiky program ve vnitřní formě

Optimalizace: cyklů, redukce počtu registrů Generátor cílového programu cílový program 10. Jaká vlastnost gramatiky podmiňuje nekonečnost generovaného jazyka Je to rekurzivnost gramatiky Př : A -> aa 11. Popište gramatikou reálná čísla s desetinnou částí C cc 1 C 1 cc 1.C 2 e C 2 cc 2 e 12. Jaký je nejvyšší možný počet stavů deterministického KA, má-li ekvivalentní nedeterministický KA 5 stavů? Počet stavů = 2 N 1 2 5 1 = 31 13. Popište tvar identifikátoru levou lineární gramatikou Levá: I Ip Ic p Pravá: c číslo I pj p písmeno J pj cj e 14. Zapište pravou lineární gramatiku čísla real v semilogaritmickém tvaru S +C -C C C cc c.d c cee D cd cee c E +E 1 -E 1 E 1 E 1 c ce 1 Pozn. : e NENÍ prázdný řetězec!! 15. Zapište co nejmenším počtem pravidel gramatiku popisující binární čísla se sudým počtem jedniček Lichý počet jedniček: S 1 0S 1 1S 2 S 2 0S 2 1S 1 e Sudý počet jedniček: S 1 0S 1 1S 2 e S 2 1S 1 0S 2 16. Uveďte obecný tvar překladových pravidel používaných v LEX p1 {akce1} p2 {akce2} pi jsou regulární výrazy {akce i} jsou programové fragmenty pn {akcen} 17. Jaký řetězec rozpoznává LEX, je-li překladové pravidlo dáno výrazem \+?[0-9][0-9]*$ Všechny řetězce začínající zn. + (ale nemusí začínat +), pokračující jednou či více číslicemi a končí koncem řádky 18. Jak řeší lexikální analyzátory problém nalezení symbolu v případě, kdy je jeden symbol prefixem druhého? Testuje následující znaky, zda se nevyskytují zbylé znaky jiného symbolu, hledá se nejdelší symbol pravidlo hledej co nejdelší symbol

19. Jaký řetězec rozpoznává LEX, je-li překladové pravidlo dáno výrazem \*[1-9]* Všechny řetězce začínající hvězdičkou a pokračující žádnou, jednou nebo více číslicemi 1 až 9 20. Popište formálně zásobníkový automat a význam jeho částí Zásobníkový automat je sedmice R = (K, T, G, δ, q 0, Z 0, F), kde K konečná množina vnitřních stavů T konečná vstupní abeceda G konečná abeceda zásobníku δ - přechodová funkce q 0 počáteční stav Z 0 počáteční symbol zásobníku F množina koncových stavů (podmnožina K) 21. 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 22. Jaký jazyk popisuje gramatika G [S]: S ( S ) S ( ) e Vnořené i nevnořené uzavřené kulaté závorky (počet otvíracích a zavíracích závorek bude stejný) např. ((()(()(()))()))() a prázdný řetězec. 23. Jaký jazyk popisuje gramatika G [S]: S a S a b S b e Sudý počet znaků a a b (pravidelně, či nepravidelně se střídající), první polovina řetězce je stejná jako zrcadlově obrácená druhá polovina řetězce (Palindrom čte se stejně zepředu i zezadu), nebo prázdný řetězec. 24. Navrhněte gramatiku jazyka, jehož věty mají tvar w w reverzní, kde w {0,1} * S 0S0 1S1 e X? S 0S1 1S0 e 25. Kdy označujeme větu jazyka jako víceznačnou Věta je víceznačná, jestliže pro ni existuje více derivačních stromů. Věta = větná forma složená pouze z terminálních symbolů 26. Popište princip způsobu zotavení ze syntaktické chyby v překladači PL/0 Vynechá se část řetězce a část zásobníku. Přeskočí se text až k následujícímu symbolu za procedurou. Slouží k tomu procedura TEST a stop symboly. Panické zotavení chyby. 27. 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). 28. Vysvětlete funkci procedury Test(s1,s2: symset; n: integer); v překladači PL/0 Pokud načtený symbol není v povolené množině následujících symbolů s1, načítají se další symboly, dokud se nenarazí na povolený následující symbol s1, nebo tzv. stop symbol z množiny s2; přitom zahlásí chybu n.

29. 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 ( E ) i E -- T F i + E T F i 30. Popište princip metody rekurzivního sestupu Každému neterminálnímu symbolu odpovídá procedura zodpovědná za analýzu struktury příslušné části vstupního textu. Tělo procedury určují pravé strany pravidel pro daný neterminální symbol. Pravé strany musí být rozlišitelné na základě symbolů vstupního řetězce aktuálních v okamžiku uplatnění příslušné pravé strany. 31. Charakterizujte syntetizované atributy Je to atribut, který je spřažen s nějakým výstupním symbolem vzniklým při lexikální a syntaktické analýze. Např. proměnná X po lexikální analýze zakódovaná na nějakou číselnou hodnotu si toto kódové číslo a hodnotu bere jako atribut.???? Informace k jednotlivým symbolům, které se musí přenášet pro zachování sémantické informace v derivačním stromě zdola nahoru. V programu se představují parametry procedury a volají se odkazem 32. Popište způsob vyhodnocování dědičných atributů Dědičné atributy se určují v závislosti na kontextu ve kterém se daný překladový podstrom nachází, tedy 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. 33. Popište zásady konstrukce postfixového výrazu z infixového Krok 1. pokud je vstup prázdný jdi do stavu Konec Krok 2. přečti jeden prvek ze vstupu (operand,operátor,závorka) Krok 3. pokud je přečten operand, vlož ho do výstupu a jdi ke kroku 1. Krok 4. porovnej prioritu prvku z vrcholu zásobníku(p1) s prioritou prvku ze vstupu(p2) a pokud p1>=p2 {vyber prvek ze zásobníku; pokud je různý od '( ' vlož ho do výstupu jinak opakuj tento krok;}. Jinak, jestliže je p1<p2 {pokud je prvek ze vstupu různý od ')' vlož ho do zásobníku. - Krok 5. jdi ke kroku 1. - Konec 34. Zapište posloupnost postfixových instrukcí pro příkaz a 10 := - (x 20 + y 30 )/(x 20 - y 30 ) (1) TA 10 (5) DR (9) DR (13) DELENO (2) TA 20 (6) PLUS (10) TA 30 (14) PRIRAD (3) DR (7) (11) DR UNMINUS (4) TA 30 (8) TA 20 (12) MINUS Postfixové notace: (binární/unární) operátor je funkcí (dvou/jednoho) operandů a zapisuje se za operandy.[výstup funkce je vstupem další funkce] Postfixová notace (operátory bezprostředně následují za operandy, pořadí operandů je zachováno)

Prefixová notace: (binární/unární) operátor je funkcí (dvou/jednoho) operandů a zapisuje se před operandy. [vnořené funkce,které se provádějí zdola nahoru] Prefixová notace (operátory bezprostředně předchází operandy, pořadí operandů je zachováno) Infixová notace: (binární/unární) operátor je funkcí (dvou/jednoho) operandů a zapisuje se mezi operandy. 35. 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 1a) *, Un-, 2, ^, +, x, y, 3 1b) 2, Un-, x, y, +, 3, ^, * 2a) Un-, *, 2, 1, +, x, y, 3 2b) 2, x, y, +, 3, ^, *, Un- * 2 x,y - ^ - + 2 + 3 x,y ^ 3 * - 2 x,y * + 2 ^ 3 + ^ x,y * 3 - nejvyšší precedence=operace provedena hned nejnižší precedence=operace s nejnižší prioritou provedeny nakonec 36. Přeložte do posloupnosti postfix. instrukcí if (A 10 < B 20) then C 30 := (A 10 + B 20 ) * ( A 10 - B 20 ); 10,20,<,ifj, 30,10,20,+,10,20,-,*,= 10,20, 10,20, 10,20, < + -,ifj, * 30 = (1) TA (6) IFJ 20 (11) DR (16) DR 10 (2) DR (7) TA 30 (12) PLUS (17) MINUS (3) TA (8) TA 10 (13) TA 10 (18) 20 KRAT (4) DR (9) DR (14) DR (19) PRIRAD (5) < (10) TA (15) TA 20 (20) 20 37. 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 (1) TA (6) IFJ 21 (11) DR (16) DR 100 (2) DR (7) TA (12) PLUS (17) 100 MINUS (3) TA (8) TA (13) TA (18) 101 100 100 DELENO

(4) DR (9) DR (14) DR (19) PRIRAD (5) < (10) TA (15) TA (20) JMP 1 101 101 (21) 100,101,<,ifj,100,100,101,+,100,101,-,/,=,jmp 100,101 < ifj 38. Popište význam částí dynamické adresy (adresové dvojice) Adresová dvojice se skládá z Báze, která určuje hloubku zanoření aktuálního bloku ve vykonávaném programu) + offset (posun od začátku bloku/adres v daném bloku) 39. 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é.??program tvořen pouze bloky?? 40. Jaké informace o proměnných jsou uloženy v tabulce symbolů překladače jazyka pascalského typu - druh (návěští, konstanta, typ, proměnná, procedura, funkce) - hladina popisu (udává hladinu bloku, ve kterém byla popsána) - adresa - použití (Ano/Ne) - typ údaj o standardním jednoduchém typu - údaj o typu definovaném uživatelem - údaj o strukturovaném typu - formální parametr - druhy formálních parametrů - způsob volání a hodnota 41. Jaká je časová složitost práce s rozptýleně organizovanou tabulkou symbolů v závislosti na počtu symbolů v programu? O(n 2 /k), kde n je počet symbolů v programu a k je rozptyl (m.n)/k? 42. 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 2 ), kde n je počet jmen v tabulce O(m*n) n počet symbolů, m počet výskytů 43. Popište způsob vytváření a práce s frekvenčně uspořádanou tabulkou symbolů Nejčastěji vyhledávaný symbol je nejvýš, takže se najdou nejrychleji Používané identifikátory se řadí na začátek seznamu => velmi rychlý přístup k identifikátorům, které se často vyskytují v programu 44. K čemu slouží mapovací funkce pole a z jakých se skládá částí Slouží k výpočtu adresy prvku pole na základě jeho indexu (indexů). *Má konstantní část adresa začátku pole, *deskriptor pole *index (indexy prvku)(souřadnice,adresa),

*jednotlivé rozměry pole (1-,2-,n-rozměrné) a *velikost jednoho prvku (typ:pole,integer,char,string). Adresa prvku A[i1, i2, in]=adresa začátku pole= adresa prvku s nejnižšími indexy Mapovací fce = posun prvku vzhledem k začátku pole = Σ n k=1 (ik -Dk) * Kk = Σ k=1 (ik*kk) - Σ k=1 (Dk*Kk) konstantní část: (adresa_začátku pole - Σ k=1 (Dk*Kk) 45. Ukládání záznamů Předp. deklaraci tvaru: record p1:t1, p2:t2,, pn:tn end; Přístup k položce p záznamu Z adresa(z.p) = adresa_začátku(z) + posun(p) Pro posun položky pi platí: Posun(pi) = Σ i -1 j =1 rozsah(tj) 46. Jakými vlastnostmi jazyka je podmíněno statické přidělování paměti Nesmí obsahovat rekurzi, proměnné musí být globální a pouze statické. Statické přidělování paměti pomocí zásobníku 47. Popište odlišnost zpřístupnění nelokálních proměnných Pascalu a C V C nelze definovat vnořené procedury všechny proměnné jsou buď lokální, nebo globální. V Pascalu lze definovat libovolně vnořené procedury, v nejnižší proceduře jsou přístupné proměnné všech nadřazených procedur. 48. Uveďte, jaké údaje ukládá překladač v aktivačním záznamu - lokální proměnné - parametry - návratovou hodnotu - funkční hodnotu, je-li podprogram funkcí - Pomocné proměnné pro mezivýsledky - Další informace potřebné k uspořádání aktivačních záznamů 49. Vysvětlete, jakým mechanismem překladač zajišťuje respektování lokality identifikátorů Při vytváření bloku uloží případné symboly (proměnné) do tabulky a při ukončování bloku je vyjme. 50. Uveďte datové struktury, které jsou použitelné k přidělování paměti pro rekurzivně volané procedury a funkce, dynamické proměnné, dynamické typy, paralelně proveditelné programové jednotky - rekurzivně vol. Fce zásobník (stack) - dynamické prom. hromada (heap) - dynamické typy hromada - paralel. proveditelné PJ zásobník 51. Popište způsob a důvod použití displeje. Je to vektor ukazující na aktivační záznamy, pro zrychlení přístupu k nelokálním objektům. 52. 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 Ukazuje pouze na 3 aktivační záznamy 53. Jaké informace jsou předávány při volání podprogramu, je-li formálním parametrem procedura v případě statického přidělování paměti, v případě dynamického přidělování paměti 54. Uveďte příklad víceznačné gramatiky. Víceznačnost dokažte. E E E * E E + E

E E + E E E * E E i Pro větu i * i + i Gramatika je víceznačná, má-li věta jazyka více derivačních stromů. Věta=větná forma, je složena pouze z terminálních symbolů. Nejednoznačnost=jeden symbol je prefixem druhého symbolu. Nutnou podmínkou jednoznačnosti gramatiky je, aby pro žádný neterminální symbol neexistovalo jak pravidlo rekurzivní zprava, tak i pravidlo rekurzivní zleva. 55. Může pro víceznačnou gramatiku existovat ekvivalentní gramatika jednoznačná? ano může,ale nemusí. Odstranit víceznačnost lze zavedením nových neterminálních symbolů. Jednoznačnost gramatik je algoritmicky nerozhodnutelná (důvodů může být nekonečně mnoho). Existují gramatiky, jejichž nejednoznačnost nelze odstranit (inherentně nejednoznačné). 56. Operátor umocnění je ve Fortranu pravoasociativní. Zapište pravidla pro aritmetický výraz respektující tuto vlastnost. U U ^ c, kde c je číslice a ^ je operátor umocnění,(umocnění umocnění^c) 57. Charakterizujte vztah mezi jazyky s LL(0) gramatikou a regulárními jazyky LL(0) jsou asi podmnožinou regulárních jazyků. 58. Popište tvar LR(0) položky a význam jejích jednotlivých částí Obsahuje vrchol zásobníku, jednotlivá přepisovací pravidla obsahující načtený řetězec. Tečka určuje aktuální pozici zpracování řetězce. 59. Uveďte formální definici LL(1) gramatiky Bezkontextová gramatika se nazývá jednoduchá LL (1) gramatika, jestliže platí: - pravá strana každého pravidla začíná terminálním symbolem - pokud mají 2 pravidla stejnou levou stranu, pak pravé strany začínají různými terminálními symboly 60. Zdůvodněte, proč je každá LL(1) gramatika silná Protože už ze své definice splňuje podmínky silné LL(k) gramatiky FIRST 1 (αfollow 1 (A)) FIRST 1 (βfollow 1 (A)) = 0 Při analýze není třeba používat informace o historii. Pro danou gramatiku G se vystačí při rozhodování o výběru pravidla o expanzi s informací o dopředu prohlíženém řetězci délky 1. 61. Uveďte nutnou a postačující podmínku pro to, aby gramatika byla silná LL(k) Gramatika LL(k) je silná, jestliže pro všechna A z N platí: jsou-li A α, A β různá pravidla v P (P=pole pravidel), pak: (FOLLOW k FIRST k (αfollow k (A)) FIRST k (βfollow k (A)) = 0 62. Uveďte příklady algoritmicky nerozhodnutelných problémů z teorie formálních jazyků - Nejednoznačnost bezkontextových gramatik. - Nelze rozhodnout, zda dojde k zacyklení programu na základě zdrojového kódu. - Nelze určit, pro které k je gramatika LL(k)

63. Existuje pro libovolnou gramatiku typu 2 algoritmus pro převod na a) ekvivalentní nelevorekurzivní gramatiku, b) LL(k), c)lr(k)? a) Ano Známe algoritmus pro odstranění levé rekurze (možná Greibachová) b) Ne c) Ne je alg. Nerozhodnutelné zda je gramatika LL(k) 64. Zdůvodněte proč LR(k) gramatiky popisují obsáhlejší třídu jazyků než LL(k) Protože jsou obecnější sledují najednou větší část řetězce než LL(k), takže umožňují např. rozpoznat řetězec, který začíná libovolným počtem stejných znaků. Např.: 1. S --> A (1) 2. S --> B (2) 3. A --> aab (3) 4. A --> 0 (4) 5. B --> abbb (5) 6. B --> 1 (6)- Lze rozpoznat LR(k), ale ne LL(k) řetězce začínají libovolným množstvím a, takže nelze na základě přečtení k symbolů rozhodnout. 65. Porovnejte mohutnosti množin LR(0), LALR(k), LR(k) položek [LR(k){LALR(k)(LR(0))}] LR(0) je podmnožina LALR(k) je podmnožina LR(k) 66. Jaké podmínky musí splňovat množiny LR(0) položek, aby gramatika byla SLR(1)? X a. - provedu, pokud následující symbol je prvkem follow(x) X a. B - provedu, pokud následující symbol patří do first(b) Pokud je tam kolize v jedné množině, tečka na konci a někde jinde 67. K čemu slouží úprava gramatiky zvaná "pohlcení terminálu"? Uveďte příklad. K odstraněni first first / first folow kolize 68. Jakou metodu syntaktické analýzy používá YACC Zdola nahoru 69. Jakým způsobem řeší YACC konflikty redukce-redukce Používá první pravidlo, které najde 69) zadan vyraz A:=(x+y)*(z-w) a) zapsat ho pomoci trojic - Víceadresové instrukce (čtveřice / trojice) b) upravit tabulku z prednasky pro symbol := c) generovat instrukce podle tabulky z prednasky a) 1.(+,x,y) 2. (-,z,w) 3. (*,(1),(2)) 4. (:=,A,(3)) 69b) Překlad přiřazovacího příkazu do čtveřic Gramatika: S --> a := E ; E --> T { + T } T --> F { * F ) F --> ( E ) a čtveřice tvaru: ( +, adr1, adr2, adr3 ) ( *, adr1, adr2, adr3 )

(:=, adr1, adr2, 0 ) 69c)C := A * B; if A < B then C := A +B ; 30 10 20 10 20 30 10 20 se přeloží na: (1) '* ', 10, 20, 100 (2) ':=', 100, 30, 0 (3) '< ', 10, 20, 101 (4) 'JIF', 101, 7, 0 (5) '+ ', 10, 20, 102 (6) ':=', 102, 30, 0 (7) 70) Dana gramatika G[S] S -> AS e A -> aa b Dokazte, ze G generuje regularni jazyk a tento jazyk zapiste regularnim vyrazem. (a*b)* 71) Dana prekladova atributovana gramatika G[S] (viz. prednasky): Pravidla: 1. S -> i {TA} := E {ST} {TA}.adr := i.adr 2. E -> TE\' 3. E\'-> +T {PLUS} E\' 4. E\'-> e 5. T -> FT\' 6. T -> *F {MULT} T\' 7. T\'-> e 8. F -> (E) 9. F -> i {TA} {DR} TA.adr := i.adr Za pomoci rozkladove tabulky znazornete stavy zasobniku pri prekladu vety i 11 := i 12 + i 11 (ty cisla 11 a 12 u tech i maji byt indexy = adresy promenne) Poznamka k zapisu: Zkratky velkymi pismeny v zavorkach { } jsou instrukce, ktere byly zapsany v krouzku. 72) napiste gramatiku s lichym poctem jednicek G 1J J 1G e