Symbol Table 0 ref := EnterId(Stacktop) ref Id size Id age - - PowerPoint PPT Presentation

symbol table
SMART_READER_LITE
LIVE PREVIEW

Symbol Table 0 ref := EnterId(Stacktop) ref Id size Id age - - PowerPoint PPT Presentation

Symbol Table 0 ref := EnterId(Stacktop) ref Id size Id age Id Max Id next 1 Symbol Table 0 ref := EnterId(Stacktop) ref Id size Id age Id Max Id next HASH(size) 2 Symbol Table size 4 ref := EnterId(Stacktop) (0,4),


slide-1
SLIDE 1

1

Symbol Table

Id size Id age Id Max Id next

ref := EnterId(Stacktop) ref

slide-2
SLIDE 2

2

Symbol Table

Id size Id age Id Max Id next

ref := EnterId(Stacktop) ref

HASH(size)

slide-3
SLIDE 3

3

Symbol Table

Id size Id age Id Max Id next

ref := EnterId(Stacktop) ref

(0,4), 1, ... size 4 HASH(size)

slide-4
SLIDE 4

4

Symbol Table

Id size Id age Id Max Id next

ref := EnterId(Stacktop) ref^.namekind := variable ref^.address := ... ... ref

(0,4), 1, ... variable ... size 4 HASH(size)

slide-5
SLIDE 5

5

Symbol Table

Id size Id age Id Max Id next

ref := EnterId(Stacktop-1) ref

(0,4), 1, ... variable ... size 4 HASH(age)

slide-6
SLIDE 6

6

Symbol Table

Id size Id age Id Max Id next

ref := EnterId(Stacktop-1) ref

(0,4), 1, ... variable ... sizeage (4,3), 1, ... 7 HASH(age)

slide-7
SLIDE 7

7

Symbol Table

Id size Id age Id Max Id next

ref := EnterId(Stacktop-1) ref^.namekind := variable ref^.address := ... ... ref

(0,4), 1, ... variable ... sizeage (4,3), 1, ... variable ... 7 HASH(age)

slide-8
SLIDE 8

8

Symbol Table

Id size Id age Id Max Id next

ref := EnterId(Stacktop-2) ref

(0,4), 1, ... variable ... sizeage (4,3), 1, ... variable ... 7 HASH(Max)

slide-9
SLIDE 9

9

Symbol Table

Id size Id age Id Max Id next

ref := EnterId(Stacktop-2) ref^.namekind := constant ref^.value := ... ref

sizeageMax (4,3), 1, ... variable ... (0,4), 1, ... variable ... (7,3), 1, ... constant ... 10 HASH(Max)

slide-10
SLIDE 10

10

EnterId Notes: Later entries are ahead of earlier entries. The symbol table is “Stack-like” EnterId is like push. Later removals will be pops. EnterId fills in some fields. The caller fills in rest. ALL other fixed fields & All fields for this variant. The caller **ALWAYS** fills in the tag field, namekind. The name itself is stored indirectly in a “spelling table.”

slide-11
SLIDE 11

11

Symbol Table

Id size Id age Id Max Id next

ref := LookupID(stacktop) ref

sizeageMax (4,3), 1, ... variable ... (0,4), 1, ... variable ... (7,3), 1, ... constant ... 10

slide-12
SLIDE 12

12

Symbol Table

Id size Id age Id Max Id next

ref := LookupID(stacktop) ref

sizeageMax (4,3), 1, ... variable ... (0,4), 1, ... variable ... (7,3), 1, ... constant ... 10 HASH(size) search miss

slide-13
SLIDE 13

13

Symbol Table

Id size Id age Id Max Id next

ref := LookupID(stacktop) ref

sizeageMax (4,3), 1, ... variable ... (0,4), 1, ... variable ... (7,3), 1, ... constant ... 10 search hit HASH(size)

slide-14
SLIDE 14

14

Symbol Table

Id size Id age Id Max Id next

ref := LookupID(stacktop) ref

sizeageMax (4,3), 1, ... variable ... (0,4), 1, ... variable ... (7,3), 1, ... constant ... 10 HASH(size)

slide-15
SLIDE 15

15

Symbol Table

Id size Id age Id Max Id next

ref := LookupID(stacktop-1) ref

sizeageMax (4,3), 1, ... variable ... (0,4), 1, ... variable ... (7,3), 1, ... constant ... 10 HASH(next) search miss

slide-16
SLIDE 16

16

Symbol Table

Id size Id age Id Max Id next

ref := LookupID(stacktop-1) ref

sizeageMax (4,3), 1, ... variable ... (0,4), 1, ... variable ... (7,3), 1, ... constant ... 10 HASH(next) search

NIL

slide-17
SLIDE 17

17

LookupId Notes: The caller gets back a pointer if the name is stored. Otherwise NIL. The pointer gives access to all stored data.