1 - Uvod Flashcards

1
Q

Čemu služi specifikacija programskog jezika?

A

Da se zna:
- kakav je i šta radi određeni jezik
- kako ga implementirati
- za sporazumevanje između projektanta jezika, implementatora jezika i korisnika (programera)…

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

Šta obuhvata specifikacija jezika?

A

Sintaksu i semantiku

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

Šta je sintaksa?

A

Gramatika jezika

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

Šta je semantika?

A

Značenje jezika

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

Šta znači CFG specifikacija sintakse?

A

Context Free Grammar (Bezkontekstna gramatika)

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

Šta su bezkontekstne gramatike?

A

Sintakse gde pravila smene ne zavise od okružujućeg konteksta neterminalnog simbola.

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

Šta čini bezkontekstne gramatike?

A
  • konačan skup terminalnih simbola
  • konačan skup neterminalnih simbola
  • startni (početni) simbol
  • konačan skup smena
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

U kojoj notaciji se često pišu bezkontekstne gramatike?

A

U BNF notaciji (Backus-Naur Form)

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

Za šta se koristi BNF notacija?

A

Za definisanje sintakse programskih jezika

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

Kako se piše smena u BNF notaciji?

A

N::=α

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

Kako skraćeno možemo da napišemo
N::=α
N::=ß

u BNF notaciji?

A

N::=α | ß | …

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

U BNF notaciji za smenu N::=α, šta je N a šta je α?

A

N je neterminal
α je sekvenca terminala i neterminala

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

U BNF notaciji, šta je N::=α | ß | …

A

Skraćenica za nekoliko pravila sa levom stranom N

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

Koja je alternativna notacija BNF notaciji N::=α ?

A

<N> → α
</N>

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

Šta definiše CFG?

A

Definiše jezik te gramatike (skup nizova terminala).

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

U primeru ispod, koje statičko semantičko pravilo nije ispoštovano?
const m~2;
m + x

A

x je nedefinisano
→ pravilo opsega važenja nije ispoštovano

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

U primeru ispod, koje statičko semantičko pravilo nije ispoštovano?
const m~2;
var n: Boolean;
begin
n := m < 4;
n := n + 1

A

pogrešan tip
→ pravilo tipa nije ispoštovano

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

Kada se pravila statičke semantike mogu proveriti?

A

Od strane kompajlera, bez izvršavanja programa

19
Q

Kakve vrste semantike postoje?

A

Statička i izvršna (run-time) semantika

20
Q

Šta se radi sa izrazima u izvršnoj semantici?

A

Izrazi se izračunavaju i daju vrednost (i mogu ali ne moraju imati bočne efekte).

21
Q

Šta se radi sa iskazima u izvršnoj semantici?

A

Iskazi se izvršavaju i proizvode bočne efekte.

22
Q

Šta se radi sa deklaracijama u izvršnoj semantici?

A

Deklaracije se elaboriraju da proizvedu vezivanja.

23
Q

Šta mogu biti bočni efekti u izvršnoj semantici?

A
  • promena vrednosti promenljive
  • obavljanje ulaza/izlaza
24
Q

Kako se izvršava iskaz V := E (semantički neformalno)?

A
  • izraz E se izračuna i daje vrednost v
  • v se dodeljuje promenljivoj V
25
Q

Kako se izvršava iskaz sekvence C1; C2 (semantički neformalno)?

A
  • prvo se izvrši iskaz C1
  • potom se izvrši iskaz C2
26
Q

Objasniti primer semantike deklaracije?
var I: T

A

Deklaracija var I: T se elaborira vezujući I za novoalociranu promenljivu, čija inicijalna vrednost nije definisana.
Promenljiva će biti dealocirana na izlasku iz bloka koji sadrži pomenutu deklaraciju.

27
Q

Navesti funkcionalnu strukturu prevodioca.

A

niz znakova
☼ SKENIRANJE (Leksička analiza)
niz tokena
☼ PARSIRANJE (Sintaksna analiza)
sintaksno stablo
☼ SEMANTIČKA ANALIZA
međukod
☼ OPTIMIZACIJA
☼ GENERISANJE KODA
mašinski kod

28
Q

Šta je skeniranje?

A

Leksička analiza

29
Q

Šta je parsiranje?

A

Sintaksna analiza

30
Q

Kako funkcionišu faze u jednoprolaznim prevodiocima?

A

Isprepleteno:
→ skeniranje tokena
- parsiranje tokena
- provera tokena
- generisanje koda za token
←ne) Kraj ulaza? (da↓

31
Q

Šta su zapravo faze u višeprolaznim prevodiocima?

A

Faze su zasebni ˝programi˝ koji se izvršavaju sekvencijalno.
Svaka faza čita iz datoteke i zapisuje u novu datoteku.

32
Q

Zašto je nekad bolje imati više prolaza kod prevodilaca?

A
  • ako je memorija kritična (danas irelevantno)
  • ako je jezik kompleksan
  • ako je važna prenosivost kompajlera

multi-pass compilers are more memory-efficient per pass

33
Q

Koliko-prolazni kompajleri su danas najčešći?

A

Dvoprolazni prevodioci

34
Q

Šta predstavlja front-end kod dvoprolaznih prevodilaca?

A

Skeniranje
Parsiranje
Semantička analiza

35
Q

Šta predstavlja back-end kod dvoprolaznih prevodilaca?

A

Generisanje koda

36
Q

Od čega zavisi prednji kraj dvoprolaznog prevodioca?

A

Od programskog jezika

37
Q

Od čega zavisi zadnji kraj dvoprolaznog prevodioca?

A

Od mašine

38
Q

Koje su prednosti dvoprolaznog prevodioca?

A
  • bolja prenosivost
  • razne kombinacije između prednjih i zadnjih krajeva su moguće
  • optimizacije se lakše vrše na međukodu nego na izvornom kodu
39
Q

Koje su mane dvoprolaznog prevodioca?

A
  • sporije prevođenje
  • traži više memorije

two-pass compilers might require more memory for their intermediate representations and data storage over the course of their execution

40
Q

Koja je razlika između prevodioca i interpretatora?

A

Prevodilac prevodi u mašinski kod
Interpretator ¨neposredno¨ izvršava izvorni kod

41
Q

Kod klasičnog interpretatora, kada nastupa interpretiranje?

A

Neposredno izvršavanje izvornog koda:
Izvorni kod
☼ SKENIRANJE
☼ PARSIRANJE
◙ INTERPRETIRANJE

42
Q

Kod druge varijante interpretatora, kada nastupa interpretiranje?

A

Interpretacija međukoda:
Izvorni kod
…prevođenje…
međukod (CIL) virtuelne mašine
◙ VM INTERPRETIRA KOD (simulira fizičku mašinu)

43
Q

Šta znači CIL?

A

Common Intermediate Language (međukod)