Mais um atributo redundante removido: is_parameter de Symbol.
[toypasc.git] / symbol_table.h
blobd412deb045dd574647ca4fba845d48caa61f9545
1 #ifndef SYMBOL_TABLE_H
2 #define SYMBOL_TABLE_H
4 #include "base.h"
6 typedef struct _symbol {
7 char *name;
8 Type type;
9 Value value;
10 int decl_linenum;
12 // For procedures and functions
13 int params;
14 Type *param_types;
16 bool is_global;
17 int stack_index;
18 struct _symbol *next;
19 } Symbol;
21 static Symbol *global_symbol_table;
23 Symbol *symbol_new(char const * name);
24 Symbol *symbol_lookup(Symbol *symtab, char const *name);
25 Symbol *symbol_insert(Symbol *symtab, Symbol *symbol);
27 void symbol_create_params(Symbol *symbol, int quantity);
28 bool symbol_is_procfunc(Symbol *symbol);
29 void symbol_print(Symbol *symbol);
31 void symbol_table_destroy(Symbol *table);
32 void symbol_table_dump(Symbol *table);
34 #endif // SYMBOL_TABLE_H