diff --git a/symbol_table.c b/symbol_table.c new file mode 100644 index 0000000..31d2945 --- /dev/null +++ b/symbol_table.c @@ -0,0 +1,50 @@ +//Defining a symbol table +//Using a Linked List Structure. Head of linked List points to parent scope (if one exists) +//Tail of Linked List points to a Linked List of all the child scopes +//T +#include "symbol_table.h" + +typedef struct ListOfTable{ + struct SymbolTable* table; + struct ListOfTable* prev; + struct ListOfTable* next; +}ListOfTable; + +typedef union Value{ + int* value_of_int; + void* value_of_pointer; + bool* value_of_bool; + char* value_of_char; + int* size_of_char_array; + }Value; + +typedef struct TableNode{ + string* theType; + string* theName; + Value* value; + struct TableNode* next; +}TableNode; + +typedef struct SymbolTable{ + TableNode* entries; + struct SymbolTable* Parent_Scope; + struct ListOfTable* Children_Scope; +}SymbolTable; + +SymbolTable* CreateScope(SymbolTable* ParentScope){ + SymbolTable* table = (SymbolTable*)malloc(sizeof(SymbolTable)); + table.Parent_Scope = ParentScope; + table.Children_Scope = NULL; + table.entries = NULL; + return table; +} + +Entry* CreateEntry(SymbolTable* table, string typeOf, string id, Value value){ + if( + + + + + + + diff --git a/symbol_table.h b/symbol_table.h new file mode 100644 index 0000000..e69de29 diff --git a/test_comment_issues.tok b/test_comment_issues.tok new file mode 100644 index 0000000..e69de29 diff --git a/tests/test_comment_issues.tok b/tests/test_comment_issues.tok new file mode 100644 index 0000000..e69de29