FJP Flashcards
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 na překladači 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:
- Průchod -> 1. meziprodukt -> … -> n. průchod -> Finální produkt
- lze optimalizovat překládaný program – kvůli dopředným skokům
Jaká vlastnost gramatiky podmiňuje nekonečnost generovaného jazyka
Rekurzivnost, cyklus v gramatice. Např.: A -> aA
Jak řeší lexikální analyzátory problém nalezení symbolu v případě, kdy je jeden symbol prefixem druhého?
Testuje další znaky na výskyt v jiném delším symbolu. Hledá nejdelší možný symbol.
Kdy označujeme větu jazyka jako víceznačnou
Věta generovaná gramatikou G je víceznačná, existují-li alespoň dva různé derivační stromy této věty. G pak rovněž nazýváme víceznačnou.
Jaké vlastnosti musí splňovat jazyk analyzovatelný rekurzivním sestupem
Musí splňovat vlastnosti LL gramatik, nesmí obsahovat levou rekurzi.
Popište princip metody rekurzivního sestupu
Derivační strom je budován postupným voláváním procedur odpovídajících jednotlivým neterminálům gramatiky a jejich prováděním. 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.
Charakterizujte syntetizované atributy
Atributy vyhodnocované průchodem derivačního stromu zdola nahoru nazýváme syntetizované
Popište způsob vyhodnocování dědičných atributů
Atributy vyhodnocované průchodem derivačního stromu shora dolů nazýváme dědičné.
Popište zásady konstrukce postfixového výrazu z infixového
Vytvoříme derivační strom výrazu a poté jej vypíšeme metodou postorder. Nebo lze vytvořit pomocí zachování pořadí operandů, operátory následují za operandy.
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)
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 v dané úrovni deklarované, žádná rekurzivní volání.
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
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.
Uveďte, jaké údaje ukládá překladač v aktivačním záznamu
návratová adresa, statický a dynamický ukazatel, další potřebné informace k uspořádání aktivačních záznamů.
Vysvětlete, jakým mechanismem překladač zajišťuje respektování lokality identifikátorů v blokově strukturovaném jazyce.
Tabulka symbolů je uspořádána do podoby zásobníku (pro jazyky s blokovou strukturou). Rozsahová jednotka je blok, modul, funkce, balík,…