1 - Uvod Flashcards

(43 cards)

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
Kako se izvršava iskaz sekvence C1; C2 (semantički neformalno)?
- prvo se izvrši iskaz C1 - potom se izvrši iskaz C2
26
Objasniti primer semantike deklaracije? var I: T
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
Navesti funkcionalnu strukturu prevodioca.
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
Šta je skeniranje?
Leksička analiza
29
Šta je parsiranje?
Sintaksna analiza
30
Kako funkcionišu faze u jednoprolaznim prevodiocima?
Isprepleteno: → skeniranje tokena - parsiranje tokena - provera tokena - generisanje koda za token ←ne) Kraj ulaza? (da↓
31
Šta su zapravo faze u višeprolaznim prevodiocima?
Faze su zasebni ˝programi˝ koji se izvršavaju sekvencijalno. Svaka faza čita iz datoteke i zapisuje u novu datoteku.
32
Zašto je nekad bolje imati više prolaza kod prevodilaca?
- 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
Koliko-prolazni kompajleri su danas najčešći?
Dvoprolazni prevodioci
34
Šta predstavlja front-end kod dvoprolaznih prevodilaca?
Skeniranje Parsiranje Semantička analiza
35
Šta predstavlja back-end kod dvoprolaznih prevodilaca?
Generisanje koda
36
Od čega zavisi prednji kraj dvoprolaznog prevodioca?
Od programskog jezika
37
Od čega zavisi zadnji kraj dvoprolaznog prevodioca?
Od mašine
38
Koje su prednosti dvoprolaznog prevodioca?
- 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
Koje su mane dvoprolaznog prevodioca?
- sporije prevođenje - traži više memorije ## Footnote two-pass compilers might require more memory for their intermediate representations and data storage over the course of their execution
40
Koja je razlika između prevodioca i interpretatora?
Prevodilac prevodi u mašinski kod Interpretator ¨neposredno¨ izvršava izvorni kod
41
Kod klasičnog interpretatora, kada nastupa interpretiranje?
Neposredno izvršavanje izvornog koda: Izvorni kod ☼ SKENIRANJE ☼ PARSIRANJE ◙ INTERPRETIRANJE
42
Kod druge varijante interpretatora, kada nastupa interpretiranje?
Interpretacija međukoda: Izvorni kod ...prevođenje... međukod (CIL) virtuelne mašine ◙ VM INTERPRETIRA KOD (simulira fizičku mašinu)
43
Šta znači CIL?
Common Intermediate Language (međukod)