-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsymtab.h
57 lines (44 loc) · 1.68 KB
/
symtab.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#ifndef SYMTAB_H
#define SYMTAB_H
// Element tabele simbola
typedef struct sym_entry {
char * name; // ime simbola
unsigned kind; // vrsta simbola
unsigned type; // tip vrednosti simbola
unsigned atr1; // dodatni attribut simbola
unsigned atr2; // dodatni attribut simbola
} SYMBOL_ENTRY;
// Vraca indeks prvog sledeceg praznog elementa.
int get_next_empty_element(void);
// Vraca indeks poslednjeg zauzetog elementa.
int get_last_element(void);
// Ubacuje novi simbol (jedan red u tabeli)
// i vraca indeks ubacenog elementa u tabeli simbola
// ili -1 u slucaju da nema slobodnog elementa u tabeli.
int insert_symbol(char *name, unsigned kind, unsigned type,
unsigned atr1, unsigned atr2);
// Ubacuje konstantu u tabelu simbola (ako vec ne postoji).
int insert_literal(char *str, unsigned type);
// Vraca indeks pronadjenog simbola ili vraca -1.
int lookup_symbol(char *name, unsigned kind);
// set i get metode za polja tabele simbola
void set_name(int index, char *name);
char* get_name(int index);
void set_kind(int index, unsigned kind);
unsigned get_kind(int index);
void set_type(int index, unsigned type);
unsigned get_type(int index);
void set_atr1(int index, unsigned atr1);
unsigned get_atr1(int index);
void set_atr2(int index, unsigned atr2);
unsigned get_atr2(int index);
// Brise elemente tabele od zadatog indeksa
void clear_symbols(unsigned begin_index);
// Brise sve elemente tabele simbola.
void clear_symtab(void);
// Ispisuje sve elemente tabele simbola.
void print_symtab(void);
unsigned logarithm2(unsigned value);
// Inicijalizacija tabele simbola.
void init_symtab(void);
#endif