Úvod Flashcards

1
Q

Čo je to kompilátor? (jednoducho)

A

Kompiluje program zo zdrojového jazyka do cieľového a generuje errory.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Čo je to kompilátor? (formálne)

A

Zobrazenie z jazyka vstupov do jazyka vystupov

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Aké poznáme netypické kompilátory?

A

Dekompilátory (nižšie -> vyššie)
Prekladače jazykov (na rovnakej úrovni)
Kríźové kompilátory (machine code iný ako na akej beží)
Postupné kompilátory (pre abstraktný stroj, Java)
Just in time kompilátory (tesne pred vykonaním kódu)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Čo poznáme okrem kompilátorov?

A

Interpretery

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Okrem kompilovania, na čo ešte vieme využiť kompilátory?

A

Lint, LaTex -> pdf, SQL, pretty printery

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Opíš kroky spracovania programu

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Opíš fázy kompilácie (aj rozdelenie)

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Aký je rozdiel medzi frontendom a backendom?

A

FE - fázy závislé na zdrojovom jazyku
BE - fázy závislé na ciel’ovom jazyku (procesore)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Čo je medzi FE a BE?

A

medzikód - prechodná reprezentácia zdrojového programu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Aké sú výhody rozdelenia na BE a FE?

A

Rôzne back-endy pre rovnaký vstupný jazyk
Rôzne front-endy pre rovnaký výstupný jazyk
Strojovo nezávislá optimalizácia medzikódu - HLO

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Čo je lexikálna analýza?

A

Znaky zdrojového programu sú načítané a zoskupené do tokenov

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Čo sú tokeny? Ako ich rozpoznávame?

A

ret’azce so spoločným významom, tvoria výstup lexikálnej analýzy

regulárnymi výrazmi

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Čo je to lexéma?

A

Konkrétny výskyt tokenu
napr. x = 3, tak x je lexéma pre token id, 3 je lexéma pre digit a pod.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Čo je to syntaktická analýza?

A

Generovanie stromu odvodenia - bezkontextové jazyky, resp. syntaktického stromu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Aké poznáme algoritmy na zistenie príslušnosti slova do bezk. jazyka?

A

Algoritmus CYK v n^3
Top-down a bottom-up v O(n), ale len pre niektoré (LL(1)) a pod

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Čo dať do LA a čo do SA?

A

LA: konštrukcie definované bez rekurzie (identifikátory,..)
SA: konštrukcie definované pomocou rekurzie (príkazy, výrazy,..)

17
Q

Opíš Syntaxou riadený preklad

A

Prepojuje syntaktickú analýzu s d’alšími fázami kompilácie
K pravidlám gramatiky sú priradené sémantické akcie (napr. generovanie medzikódu)

18
Q

Čo je syntéza v sémantickej analýze?

A

Zozbieranie infomácií o typoch pre ďalšiu analýzu

19
Q

Čo je tabuľka symbolov?

A

Dátova štruktúra, kde sa počas analýzy ukladajú informácie o identifikátoroch

20
Q

Čo obsahuje tabuľka symbolov?

A

záznam pre každý identifikátor s pol’ami pre jeho atribúty
* Alokovaná pamät’
* Typ
* Rozsah platnosti
* Pri menách procedúr aj počet a typ parametrov, spôsob
predávania parametrov, typ návratovej hodnoty

21
Q

Aké chyby môžu nastať v lexikálnej, syntaktickej a sémantickej analýze?

A
  • Lex. analýza: nespracované znaky na vstupe netvoria
    žiadny token
  • Synt. analýza: postupnost’ tokenov nespĺňa štrukturálne
    pravidlá
  • Sém. analýza: syntaktická konštrukcia nemá význam
    vzhl’adom na danú operáciu
22
Q

Ako je zvyčajne reprezentovaný medzikód?

A

ako trojadresový kód
* x := y op z
* Implementovaný ako záznam so štyrmi položkami: op, arg1, arg2, res

23
Q

Čo vieme robiť s medzikódom ešte?

A

Optimalizovať rýchlosť, veľkosť výsledného kódu a pod.

24
Q

Ako prebieha generovanie kódu?

A
  • Priradenie miest v pamäti pre jednotlivé premenné
  • Preklad inštrukcií medzikódu do postupností inštrukcií ciel’ového jazyka (assembler, machine code,. …)
25
Q

Načo je ANTLR?

A

Generuje parser, pre syntaktickú analýzu, pomocou bezkontextovej gramatiky. Môže obsahovať aj lexer.