43 lines
1.2 KiB
C
43 lines
1.2 KiB
C
#include <stdbool.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
typedef struct ListOfTable {
|
|
struct SymbolTable* table;
|
|
// struct ListOfTable* prev;
|
|
struct ListOfTable* next;
|
|
|
|
} ListOfTable;
|
|
|
|
typedef struct TableNode {
|
|
char* theType;
|
|
char* theName;
|
|
struct TableNode* next;
|
|
} TableNode;
|
|
|
|
typedef struct SymbolTable {
|
|
TableNode* entries;
|
|
struct SymbolTable* Parent_Scope;
|
|
struct ListOfTable* Children_Scope;
|
|
int Line_Number;
|
|
int Column_Number;
|
|
} SymbolTable;
|
|
|
|
SymbolTable* CreateScope(SymbolTable* ParentScope, int Line, int Column);
|
|
TableNode* CreateEntry(SymbolTable* table, char* typeOf, char* id);
|
|
TableNode* table_lookup(SymbolTable* table, char* x);
|
|
TableNode* look_up(SymbolTable* table, char* x);
|
|
void print_symbol_table(SymbolTable* table, FILE* file_ptr);
|
|
|
|
SymbolTable* getAncestor(SymbolTable* table);
|
|
SymbolTable* getParent(SymbolTable* st);
|
|
ListOfTable* getChildren(SymbolTable* st);
|
|
SymbolTable* getFirstChild(ListOfTable* lt);
|
|
ListOfTable* getRestOfChildren(ListOfTable* lt);
|
|
TableNode* getFirstEntry(SymbolTable* st);
|
|
TableNode* getNextEntry(TableNode* tn);
|
|
char* getType(TableNode* tn);
|
|
char* getName(TableNode* tn);
|
|
int getLine(SymbolTable* st);
|
|
int getColumn(SymbolTable* st); |