-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsymbol_table.h
50 lines (38 loc) · 1.17 KB
/
symbol_table.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
/*
* =====================================================================================
*
* Filename: symbol_table.h
*
* Description: Symbol table definitions and prototypes
*
* Version: 1.0
* Created: 11/03/2017 01:29:21 PM
* Revision: none
* Compiler: gcc
*
* Author: Brad Theilman (BHT), [email protected]
* Organization:
*
* =====================================================================================
*/
#ifndef SYMBOLTABLE_H
#define SYMBOLTABLE_H
enum symtab_type = {SYM_FUNC, SYM_VAR};
struct symtab_entry {
enum symtab_type kind;
char name[MAXIDENT];
Node * expr;
};
struct symtab {
struct symtab_entry * entry;
struct symtab * next;
};
struct symtab * create_empty_symtab();
void delete_symtab(struct symtab * tab);
void check_if_defined(struct symtab * tab, char * symbol);
void define_symbol(struct symtab * tab, char * symbol, enum symtab_type kind,
Node * expr);
void redefine_symbol(struct symtab * tab, char * symbol, enum symtab_type kind,
Node * expr);
void clear_symbol(struct symtab * tab, char * symbol);
#endif