Professional Documents
Culture Documents
02 1 Osnovne Faze
02 1 Osnovne Faze
02 1 Osnovne Faze
02 Osnovne faze
23-24
Dunja Vrbaški
Fakultet tehničkih nauka, Novi Sad
Polazni jezik
Leksika
(source code)
Sintaksa Semantika
Generisanje
Ciljni jezik
koda
2
Polazni jezik
Leksika
(source code)
Generisanje
Ciljni jezik
koda
3
Polazni jezik
Leksika
(source code) Upravljanje greškama
Transformacije koda
Analiza koda
Sintaksa Semantika
Optimizacije
Upravljanje resursima
Generisanje
Ciljni jezik
koda
...
4
Polazni jezik Leksika Polazni jezik Leksika
Generisanje Generisanje
Ciljni jezik IR
koda IR
Generisanje
Ciljni jezik
koda
5
Polazni jezik Leksika
Front end
Sintaksa Semantika SL 1 TL 1
SL 2 IR TL 2
Generisanje
IR
IR Middle end
SL 3 TL 3
Generisanje
koda
Ciljni jezik Back end
6
VEŽBE
Razvoj prevodioca
7
Leksička analiza - Skener
string tokeni
leksička pravila greške
8
if (x == 5)
{ if ( x == 5 ) { y = 3 ; }
y = 3; //komentar
}
lekseme
tokeni
9
identifier -> letter ( letter | digit )*
regularni izrazi
automati
flex
C
build
test primeri
10
Sintaksna analiza - Parser
tokeni
greške
sintaksna pravila
11
x = 5; <IDENT, x> <ASSIGN, >, <NUM, 5> - OK
y 3; <IDENT, y> , <NUM, 3> - Greška
12
gramatike num_exp ::= exp
flex
| num_exp _ar_operator exp
bison
exp ::= literal
| _identifier
| function_call
C | “(” num_exp “)”
build
test primeri
13
Semantička analiza
14
int x = 5;
string str = “abc”;
x = str;
15
pravila semantike
flex - svi globalni identifikatori moraju biti međusobno različiti
- lokalni identifikatori raznih funkcija mogu biti identični
test primeri
tabela simbola
16
Generisanje koda
* generisanje međukoda
17
int f(int p) { f:
int a; PUSH %14
return p + a; MOV %15,%14
} SUBS %15,$4,%15
@f_body:
ADDS 8(%14),-4(%14),%0
...
18
asembler (hipotetski)
flex source hip asm
bison code("\n\t\t%s\t", ar_instructions[ADD + (get_type(idx) - 1) * AROP_NUMBER]);
C gen_sym_name(idx);
code(",$1,");
build
gen_sym_name(idx);
test primeri
emulator
19
PREDAVANJA
- podrška za vežbe (faze)
- runtime
- upravljanje memorijom
- kompajliranje, interpretiranje, JIT
- virtualne mašine, međukod
- optimizacije
- tipovi
- …
Računarske nauke (Computer Science; CS) > Programski jezici (Programming Languages; PL)
20