8. tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/vezbe/tabelasimbola_v2.pdf · u glavnom opsegu se...

29
1 8. Tabela simbola Zadatak 1. Prikazati izgled tabele simbola u karakterističnim tačkama za priloženi MikroJava program. class P (** 1 **) final int c = 15; char r; (** 2 **) class Unutra { int u[]; } (** 3 **) Unutra k; { (** 4 **) int m1 (** 5 **) (int w, Unutra d) { (** 6 **) print(w); read(d.u[5]); return 0; } (** 7 **) void main ()(** 8 **) int a, b; (** 9 **) { read(a); k = new Unutra; b = m1(a, k); } (** 10 **) } (** 11 **) Rešenje: Tabela simbola za jezik MikroJava će imati 3 vrste čvorova: Objektni čvorovi (Object nodes) čuvaju informacije o deklarisanim imenima.

Upload: others

Post on 01-Feb-2020

11 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

1

8. Tabela simbola

Zadatak 1.

Prikazati izgled tabele simbola u karakterističnim tačkama za priloženi MikroJava program.

class P (** 1 **)

final int c = 15;

char r;

(** 2 **)

class Unutra {

int u[];

}

(** 3 **)

Unutra k;

{ (** 4 **)

int m1 (** 5 **) (int w, Unutra d) {

(** 6 **)

print(w);

read(d.u[5]);

return 0;

} (** 7 **)

void main ()(** 8 **)

int a, b; (** 9 **)

{

read(a);

k = new Unutra;

b = m1(a, k);

} (** 10 **)

}

(** 11 **)

Rešenje:

Tabela simbola za jezik MikroJava će imati 3 vrste čvorova:

Objektni čvorovi (Object nodes) čuvaju informacije o deklarisanim imenima.

Page 2: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

2

Strukturni čvorovi (Structure nodes) čuvaju informacije o strukturama tipa.

Čvorovi opsega (Scope nodes) služe za manipulaciju opsezima važenja imena.

Tačka (** 1 **)

kind

name

type

next

adr

level

locals

kind

elemType

n

fields

nVars

locals

outer

Page 3: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

3

Tačka (** 2 **)

topScope

Page 4: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

4

Tačka (** 3 **)

topScope

Con

“c”

intTyp

15

0

-

Var

“r”

charTyp

0

0

-

Page 5: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

5

Tačka (** 4 **)

topScope

Con

“c”

intTyp

15

0

-

Var

“r”

charTyp

0

0

-

Typ

“Unutra”

-

-

-

Class

1

Fld

“u”

0

-

-

Arr

intTyp

-

-

Page 6: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

6

Tačka (** 5 **)

topScope

Con

“c”

intTyp

15

0

-

Var

“r”

charTyp

0

0

-

Typ

“Unutra”

-

-

-

Class

1

Fld

“u”

0

-

-

Arr

intTyp

-

-

Var

“k”

1

0

-

Page 7: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

7

Tačka (** 6 **)

topScope

Con

“c”

intTyp

15

0

-

Var

“r”

charTyp

0

0

-

Typ

“Unutra”

-

-

-

Class

1

Fld

“u”

0

-

-

Arr

intTyp

-

-

Var

“k”

1

0

-

Meth

“m1”

intTyp

-

0

Page 8: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

8

Tačka (** 7 **)

topScope

Con

“c”

intTyp

15

0

-

Var

“r”

charTyp

0

0

-

Typ

“Unutra”

-

-

-

Class

1

Fld

“u”

0

-

-

Arr

intTyp

-

-

Var

“k”

1

0

-

Meth

“m1”

intTyp

-

2

Var

“w”

intTyp

0

1

-

Var

“d”

1

1

-

Page 9: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

9

Tačka (** 8 **)

topScope

Con

“c”

intTyp

15

0

-

Var

“r”

charTyp

0

0

-

Typ

“Unutra”

-

-

-

Class

1

Fld

“u”

0

-

-

Arr

intTyp

-

-

Var

“k”

1

0

-

Meth

“m1”

intTyp

-

2

Var

“w”

intTyp

0

1

-

Var

“d”

1

1

-

Page 10: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

10

Tačka (** 9 **)

topScope

Con

“c”

intTyp

15

0

-

Var

“r”

charTyp

0

0

-

Typ

“Unutra”

-

-

-

Class

1

Fld

“u”

0

-

-

Arr

intTyp

-

-

Var

“k”

1

0

-

Meth

“m1”

intTyp

-

2

Var

“w”

intTyp

0

1

-

Var

“d”

1

1

-

Meth

“main”

noTyp

-

0

Page 11: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

11

Tačka (** 10 **)

topScope

Con

“c”

intTyp

15

0

-

Var

“r”

charTyp

0

0

-

Typ

“Unutra”

-

-

-

Class

1

Fld

“u”

0

-

-

Arr

intTyp

-

-

Var

“k”

1

0

-

Meth

“m1”

intTyp

-

2

Var

“w”

intTyp

0

1

-

Var

“d”

1

1

-

Meth

“main”

noTyp

-

0

Var

“a”

intTyp

0

1

-

Var

“b”

intTyp

1

1

-

Page 12: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

12

Tačka (** 11 **)

topScope

Con

“c”

intTyp

15

0

-

Var

“r”

charTyp

0

0

-

Typ

“Unutra”

-

-

-

Class

1

Fld

“u”

0

-

-

Arr

intTyp

-

-

Var

“k”

1

0

-

Meth

“m1”

intTyp

-

2

Var

“w”

intTyp

0

1

-

Var

“d”

1

1

-

Meth

“main”

noTyp

-

0

Var

“a”

intTyp

0

1

-

Var

“b”

intTyp

1

1

-

Page 13: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

13

Zadatak 2.

topScope

Con

“c”

intTyp

15

0

-

Var

“r”

charTyp

0

0

-

Typ

“Unutra”

-

-

-

Class

1

Fld

“u”

0

-

-

Arr

intTyp

-

-

Var “k”

1

0

-

Meth “m1”

intTyp

-

2

Var

“w”

intTyp

0

1

-

Var

“d”

1

1

-

Meth

“main”

noTyp

-

0

Var

“a”

intTyp

0

1

-

Var

“b”

intTyp

1

1

-

Page 14: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

14

Prikazati izgled tabele simbola u karakterističnim tačkama za priloženi MikroJava program.

class ABC (** 1 **)

char c[];

int max;

char npp;

{

int put (** 2 **)(int x)

{

(** 3 **)

x++;

print(x, 5);

npp = 'C';

return x;

}(** 4 **)

}

(** 5 **)

Rešenje:

Tačka (** 1 **)

U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi iza deklaracije

glavne klase u tabeli simbola se nalazi i ime glavne klase tj. programa.

Tačka (** 2 **)

ObraĎene su deklaracije globalnih promenljivih (niza karaktera c, celobrojne promenljive max i karaktera

npp) i početak definicije metode put. Simboli se ubacuju u opseg koji pripada glavnoj klasi tj. u opseg

“ABC”.

Page 15: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

15

Tačka (** 3 **)

ObraĎeni su argumenti metode put i simbol x je unet u tabelu simbola. Pošto je x vidljiv samo u metodi put,

simbol x se stavlja u opseg koji pripada metodi put.

Tačka (** 4 **)

Page 16: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

16

Parser je izašao iz opsega metode put i odgovarajući opseg je skinut sa steka.

Tačka (** 5 **)

Parser je završio sa radom, skinuo je poslednji opseg sa steka i dodelio ga Object čvoru glavne klase.

Zadatak 3

Prodiskutovati prednosti i mane organizovanja tabele simbola

a) kao jedinstvene tabele

b) uz postojanje posebne tabele za svaki opseg

ako se tabele realizuju uz upotrebu ili heš funkcije ili leksičkog stabla.

Page 17: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

17

Rešenje:

Postoje 4 varijante: jedinstvena tabela - heš funkcija,

jedinstvena tabela - leksičko stablo,

lokalna tabela - heš funkcija,

lokalna tabela - leksičko stablo.

Razmotrićemo pretraživanje tabela (funkcija LookUp), otvaranje i zatvaranje leksičkog opsega funkcije

OpenScope i CloseScope na primeru:

{ int H, A, L;

{float X, Y;

}

{char A, C, M;

/* trenutna pozicija*/

}

}

b) individualne tabele

M, A, L

A, C, M

pojedine tabele

scope stack

pri otvaranju opsega na vrh steka ide tabela za taj opseg,

pretraživanje: nelokalna imena više tabela (mana),

zatvaranje opsega skine se tabela sa vrha steka,

memorijski zahtevi: bolja realizacija sa stablima zbog fiksnog overheada heš tabela

a) jedinstvena tabela

A(3 ) L(1) A(1)

C(3 ) M(1)

M(3)

heš tabela

OpenScope: dodeli se opsegu jedinstven broj i čuva se uz ime (više memorije),

LookUp: traži se dok se ne naleti na prvo A (efikasno),

Insert: stavlja se na početak lanca kolizije

CloseScope: izbrišu se imena sa početka svih lanaca (efikasno)

Page 18: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

18

M(1)

A(1) L(1)

A(3) L(3) M(3)

leksičko stablo

OpenScope: kao gore,

Insert: uvek se dodaju listovi, pa pri look up-u ne smemo se zadovoljiti prvim A nego treba ići do

lista (neefikasno),

CloseScope: mora se pretraživati celo stablo (neefikasno),

rezime: pogodnije kombinacije heš - jedinstvena tabela i stablo - lokalne tabele.

Kod višeprolaznih prevodilaca gotovo isključivo se koriste lokalne tabele jer pri CloseScope ne smemo

jednostavno uništiti informacije iz tabele (trebaju nam za druge prolaze).

Page 19: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

19

Nasleđivanje i polimorfizam

Zadatak 4

Dat je sledeći program na programskom jeziku Mikrojava. Prikazati izgled tabele simbola u trenucima

prevoĎenja koji su naznačeni u programu. Mikrojava podržava nasleĎivanje klasa i polimorfizam.

class OOMJ (* T1 *)

class TCalc (* T2 *) { // TaxCalculator

double tax; // [0,1] interval (* T3 *)

{

double calcPrice(double cost) { return cost*(1+tax); }

int check(double v) { return d>0; }

} (* T4 *)

}

(* T5 *)

class ATCalc (* T6 *) extends TCalc {

// Tax with amortization

double a;

{ (* T7 *)

// @Overriden

double calcPrice(double c) { return (cost*a)*(1*tax); }

} (* T8 *)

} (* T9 *)

{

void main()

TCalc c1, c2;

double cost; (* T10 *)

{

cost = 1000;

c1 = new Tcalc; c1.tax = (0.09);

c2 = new ATCalc; c2.tax = 0.18; c2.a = 0.2;

print(c1.calcPrice(cost));

print(c2.calcPrice(cost));

}

}

(* T11 *)

Page 20: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

20

Prog

“OOMJ”

noType

null

Type

“int”

intType

Type

“char”

charType

Con

“null”

nullType

Con

“eol”

charType

10

Meth

“chr”

charType

1

Meth

“ord”

intType

1

Meth

“len”

intType

1

Var

i

intType

0

1

Var

ch

chrType

0

1

Var

arr

0

1

Arr

noType

--

--

Figure 1 Izgled tabele simbola u tački T1.

Prog

“OOMJ”

noType

null

Type

“int”

intType

Type

“char”

charType

Con

“null”

nullType

Con

“eol”

charType

10

Meth

“chr”

charType

1

Meth

“ord”

intType

1

Meth

“len”

intType

1

Var

i

intType

0

1

Var

ch

chrType

0

1

Var

arr

0

1

Arr

noType

--

--

Type

“TCalc”

Class

--

0

--

Figure 2 Izgled tabele simbola u tački T2.

Page 21: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

21

Prog

“OOMJ”

noType

null

Type

“int”

intType

Type

“char”

charType

Con

“null”

nullType

Con

“eol”

charType

10

Meth

“chr”

charType

1

Meth

“ord”

intType

1

Meth

“len”

intType

1

Var

i

intType

0

1

Var

ch

chrType

0

1

Var

arr

0

1

Arr

noType

--

--

Type

“TCalc”

Class

--

0

--

Fld

“tax”

dblType

0

Figure 3 Izgled tabele simbola u trenutku T3.

Page 22: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

22

Prog

“OOMJ”

noType

null

Type

“int”

intType

Type

“char”

charType

Con

“null”

nullType

Con

“eol”

charType

10

Meth

“chr”

charType

1

Meth

“ord”

intType

1

Meth

“len”

intType

1

Var

i

intType

0

1

Var

ch

chrType

0

1

Var

arr

0

1

Arr

noType

--

--

Type

“TCalc”

Meth

calcPrice

dblType

2

Var

“cost”

dblType

1

2

Class

--

0

--

Fld

“tax”

dblType

0

1

Var

“this”

TCalcTyp

0

2

TCalcTyp

Meth

check

intType

2

Var

“v”

dblType

1

2

Var

“this”

TCalcTyp

0

2

Figure 4 Izgled tabele simbola u tački T4.

Page 23: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

23

Prog

“OOMJ”

noType

null

Type

“int”

intType

Type

“char”

charType

Con

“null”

nullType

Con

“eol”

charType

10

Meth

“chr”

charType

1

Meth

“ord”

intType

1

Meth

“len”

intType

1

Var

i

intType

0

1

Var

ch

chrType

0

1

Var

arr

0

1

Arr

noType

--

--

Type

“TCalc”

Meth

calcPrice

dblType

2

Var

“cost”

dblType

1

2

Class

--

1

--

Fld

“tax”

dblType

0

Var

“this”

TCalcTyp

0

2

TCalcTyp

Meth

check

intType

2

Var

“v”

dblType

1

2

Var

“this”

TCalcTyp

0

2

Figure 5 Izgled tabele simbola u tački T5.

Page 24: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

24

Izgled tabele simbola

Figure 6 Izgled tabele simbola u tački T6.

Prog

“OOMJ”

noType

null

Type

“int”

intType

Type

“char”

charType

Con

“null”

nullType

Con

“eol”

charType

10

Meth

“chr”

charType

1

Meth

“ord”

intType

1

Meth

“len”

intType

1

Var

i

intType

0

1

Var

ch

chrType

0

1

Var

arr

0

1

Arr

noType

--

--

Type

“TCalc”

Class

--

1

--

Fld

“tax”

dblType

0

Type

“ATCalc” Class

--

0

--

TCalcTyp

Meth

calcPrice

dblType

2Var

“cost”

dblType

1

2

Var

“this”

TCalcTyp

0

2

Meth

check

intType

2

Var

“v”

dblType

1

2

Var

“this”

TCalcTyp

0

2

Page 25: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

25

Izgled tabele simbola: Prog

“OOMJ”

noType

null

Type

“int”

intType

Type

“char”

charType

Con

“null”

nullType

Con

“eol”

charType

10

Meth

“chr”

charType

1

Meth

“ord”

intType

1

Meth

“len”

intType

1

Var

i

intType

0

1

Var

ch

chrType

0

1

Var

arr

0

1

Arr

noType

--

--

Type

“TCalc”

Class

--

1

--

Fld

“tax”

dblType

0

Type

“ATCalc” Class

--

0

--

Fld

“tax”

dblType

0

Fld

“a”

dblType

1

Meth

calcPrice

dblType

2

TCalcTyp

2

Var

“cost”

dblType

1

2

Var

“this”

TCalcTyp

0

2

ATCalcTp

Meth

calcPrice

dblType

2Var

“cost”

dblType

1

2

Var

“this”

TCalcTyp

0

2

Meth

check

intType

2

Var

“v”

dblType

1

2

Var

“this”

TCalcTyp

0

2

Meth

check

intType

2

Var

“v”

dblType

1

2

Var

“this”

TCalcTyp

0

2

Figure 7 Izgled tabele simbola u tački T7.

Page 26: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

26

Prog

“OOMJ”

noType

null

Type

“int”

intType

Type

“char”

charType

Con

“null”

nullType

Con

“eol”

charType

10

Meth

“chr”

charType

1

Meth

“ord”

intType

1

Meth

“len”

intType

1

Var

i

intType

0

1

Var

ch

chrType

0

1

Var

arr

0

1

Arr

noType

--

--

Type

“TCalc”

Meth

“check”

intType

2Var

“v”

dblType

1

2

Meth

calcPrice

dblType

2Var

“cost”

dblType

1

2

Class

--

1

--

Fld

“tax”

dblType

0

Type

“ATCalc” Class

--

0

--

Fld

“tax”

dblType

0

Fld

“a”

dblType

1

Meth

calcPrice

dblType

2

Var

“this”

TCalcTyp

0

2

Var

“this”

TCalcTyp

0

2

TCalcTyp

2

Var

“c”

dblType

1

2

Var

“this”

ATCalcT

0

2

ATCalcT

Meth

check

intType

2

Var

“v”

dblType

1

2

Var

“this”

ATcalcT

0

2

Figure 8 Izgled tabele simbola u tački T8.

Page 27: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

27

Prog

“OOMJ”

noType

null

Type

“int”

intType

Type

“char”

charType

Con

“null”

nullType

Con

“eol”

charType

10

Meth

“chr”

charType

1

Meth

“ord”

intType

1

Meth

“len”

intType

1

Var

i

intType

0

1

Var

ch

chrType

0

1

Var

arr

0

1

Arr

noType

--

--

Type

“TCalc”

Meth

“check”

intType

2

Var

“v”

dblType

1

2

Meth

calcPrice

dblType

2

Var

“cost”

dblType

1

2

Class

--

1

--

Fld

“tax”

dblType

0

Type

“ATCalc”

Class

--

2

--

Fld

“tax”

dblType

0

Fld

“a”

dblType

1

Meth

calcPrice

dblType

2

Var

“this”

TCalcTyp

0

2

Var

“this”

TCalcTyp

0

2

TCalcTyp

Var

“c”

dblType

1

2

Var

“this”

ATCalcT

0

2

ATCalcT

Meth

check

intType

2

Var

“v”

dblType

1

2

Var

“this”

ATcalcT

0

2

Figure 9 Izgled tabele simbola u tački T9.

Page 28: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

28

Prog

“OOMJ”

noType

null

Type

“int”

intType

Type

“char”

charType

Con

“null”

nullType

Con

“eol”

charType

10

Meth

“chr”

charType

1

Meth

“ord”

intType

1

Meth

“len”

intType

1

Var

i

intType

0

1

Var

ch

chrType

0

1

Var

arr

0

1

Arr

noType

--

--

Type

“TCalc”

Meth

“check”

intType

2

Var

“v”

dblType

1

2

Meth

calcPrice

dblType

2

Var

“cost”

dblType

1

2

Class

--

1

--

Fld

“tax”

dblType

0

Type

“ATCalc”

Class

--

2

--

Fld

“tax”

dblType

0

Fld

“a”

dblType

1

Meth

calcPrice

dblType

2

Var

“this”

TCalcTyp

0

2

Var

“this”

TCalcTyp

0

2

TCalcTyp

Var

“c”

dblType

1

2

Var

“this”

ATCalcT

0

2

ATCalcT

Meth

“main”

noType

0

Var

“c1”

TCalcTyp

0

1

Var

“c2”

TCalcTyp

1

1

Var

“cost”

dblType

2

1

Meth

check

intType

2

Var

“v”

dblType

1

2

Var

“this”

ATcalcT

0

2

Figure 10 Izgled tabele simbola u tački T10.

Page 29: 8. Tabela simbola - ir4pp1.etf.rsir4pp1.etf.rs/Vezbe/TabelaSimbola_v2.pdf · U glavnom opsegu se nalaze predefinisani simboli(“int”, “char”,…), a pošto se tačka 1 nalazi

29

Prog

“OOMJ”

noType

null

Type

“int”

intType

Type

“char”

charType

Con

“null”

nullType

Con

“eol”

charType

10

Meth

“chr”

charType

1

Meth

“ord”

intType

1

Meth

“len”

intType

1

Var

i

intType

0

1

Var

ch

chrType

0

1

Var

arr

0

1

Arr

noType

--

--

Type

“TCalc”

Meth

“Tcalc”

noType

2

Var

“t”

dblType

1

2

Meth

calcPrice

dblType

2

Var

“cost”

dblType

1

2

Class

--

1

--

Fld

“tax”

dblType

0

Type

“ATCalc”

Class

--

2

--

Var

“this”

TCalcTyp

0

2

Var

“this”

TCalcTyp

0

2

TCalcTyp ATCalcT

Meth

“main”

noType

3

Var

“c1”

TCalcTyp

0

1

Var

“c2”

TCalcTyp

1

1

Var

“cost”

dblType

2

1

Fld

“tax”

dblType

0

Fld

“a”

dblType

1

Meth

calcPrice

dblType

2

Var

“c”

dblType

1

2

Var

“this”

ATCalcT

0

2

Meth

check

intType

2

Var

“v”

dblType

1

2

Var

“this”

ATcalcT

0

2

Figure 11 Izgled tabele simbola u tački T11.