00:15:30 Kompilátory - zkušební test (3 otázky mají 2 správné odpovědi) 1 Kompilátory 19 Kompilátor se koncepčně skládá z dvou základních etap: ° 1 Analýza a syntéza. 0 Analýza a optimalizace kódu. 0 Lexikální a syntaktická analýza. 0 Scanner a parser. ° Co je úlohou lexikálního analyzátoru? ° 1 Vyhledávání lexém ve zdrojovém kódu. 0 Odstranění nadbytečných znaků v zdrojovém kódu 0 Test správnosti tokenů zdrojového kódu 1 Přiřazení tokenů lexémám zdrojového kódu ° Co je úlohou syntaktického analyzátoru? ° 1 Vyšetřování gramatické struktury zdroj. kódu 0 Vyhodnocení výrazů a příkazů zdroj. textu 1 Generování syntaktického stromu z proudu tokenů 0 Vytvoření posloupnosti derivací ° Tabulka symbolů slouží k uložení informací o ° 1 identifikátorech zdrojového kódu 0 všech lexémách zdrojového kódu 0 proměnných programu 0 následnosti vykonávaných operací ° Pojem Lexéma znamená: ° 1 posloupnost znaků zdroj. textu s definovaným významem 0 souvislá část vytvářejícího pravidla 0 ekvivalentní název k názvu token 0 levá část vytvářejícího pravidla, které definujeme ° Formální jazyk nad abecedou A je ° 1 libovolná podmnožina řetězců nad A 0 množina identifikátorů ze symbolů abecedy A 0 slovník libovolných slov zpracovávaných kompilátorem 0 seznam slov a příkazů programovacího jazyka ° Jediný z těchto výroků je nepravdivý (!). Který to je? ° 1 V kontextové gramatice nesmí být v LHS terminál. 0 V gramatice existují terminály, neterminály a produkce. 0 Vytvářející pravidlo se používá při derivaci. 0 V začátečním neterminále začíná anebo končí analýza. ° Mějme gramatiku G = ({S,A}, {0,1}, S, P) kde P: S ::= 0A1 0A ::= 00A1 11A0 ::= 1A0 A ::= e (e je prázdny symbol). Jakého typu je G ? ° 1 Bez obmezení. 0 Kontextová. 0 Bezkontextová 0 Regulární. ° Nech G = (N, T, S, P) je gramatika. Potom pro Jazyk specifikovaný gramatikou G platí, že L(G) ° 1 { w | S=>* w, w je z T* } 0 { w | N=>* w, w je z (T u N)* } u je sjednocení 0 { w | S=>* w, w je z (T u N)* } u je sjednocení 0 { w | S=>* aX, a je z T, X je z N* } ° Konečný stavový automat je definičně 5-tice (Q,A,q,F,d), kde ° 1 Q=množina stavů, A=vstupní abeceda, d=přechodová funkce 0 A=terminály, d=přechodová funkce, q=začáteční stav 0 Q=neterminály, A=terminály, F=koncové stavy 0 A=tokeny, d=přechodová funkce, Q=množina stavů ° Nech KA je konečný automat. Pouze jeden z těchto výroků je pravdivý(!). Který to je? ° 1 KA má právě jeden zač.stav a alespoň jeden koncový stav. 0 Do každého stavu kromě počátečního musí vést hrana. 0 Koncový stav nesmí mít přechod do jiného stavu. 0 Z konečného automatu vytváříme parser. ° Derivační strom používáme ° 1 v bezkontextové gramatice jako ekvivalent odvození 0 v kontextové gramatice pro zápis derivace 0 V regulární gramatice pro zápis výrazu 0 jako vývojový diagram pro kódování parseru ° Redukce je ° 1 reverzní operace k derivaci 0 zkrácení řetězce za účelem zrychlení analýzy 0 optimalizování množiny pravidel gramatiky 0 odstranění nedosažitelných neterminálů ° Větní forma je ° 1 odvozený řetězec terminálů a neterm. v průběhu analýzy 0 šablona pro vytvoření konkrétního řetězce jazyka 0 zápis řetězce ve formátovaném tvaru 0 přijatá část vstupního řetězce ° Pro bezkontextovou gramatiku platí: ° 1 pravidla umožňují nahradit neterminál nezávisle od okolí 0 v pravých stranách pravidel nesmí sousedit dva neterm. 0 je to formálně jméno gramatiky typu 1 0 při jej návrhu nemusíme dohlížet na pořadí terminálů ° Jedna odpověď je nepravdivá (která je to?) pro nejednoznačnou gramatiku platí, že ° 1 má víc, jak jedno pravidlo se stejnou pravou stranou 0 má víc, jak jedno nejlevější odvození 0 má víc, jak jedno najpravější odvození 0 má víc, jak jeden strom odvození ° Jazyk LL(1) je ° 0 specielní typ regulárního jazyka 0 verze původního jazyka redukovaného o 1 pravidlo 1 na výběr pravidla stačí znalost jednoho vstupního symbolu 0 jazyk s levostrannými derivacemi- verze 1. ° Konfigurace konečného automatu je ° 1 dvojice (q, w), kde q je stav, w je řetězec 0 definování pravidel přechodů mezi stavy KA 0 sestavení cesty v KA ze zač.stavu po koncový stav 0 úprava konečného automatu do požadovaného stavu ° které podmínky nevyhovují podmínkám jazyka typu LL(1)? ° 1 Přímá levá rekurze 1 Stejný prefix u stejné levé strany 0 Stejný prefix u sousedních pravidel 0 rekurze typu A->B alfa, B->D beta, D->A gama °