Updated the way symbols are represented and how they are marked as resolved.

This commit is contained in:
2023-07-09 22:04:55 -05:00
parent 9c8fe17c8f
commit 65383cded2
6 changed files with 82 additions and 45 deletions
+1 -1
View File
@@ -11,6 +11,6 @@
#include "opcodes.h"
#include "symbols_table.h"
SymbolTable* ParseTokens(List* tokens);
void ParseTokens(List* tokens, SymbolTable** symbolsTable);
#endif
+16 -4
View File
@@ -12,12 +12,23 @@
#define SYMBOLSTABLE_DEFAULT_CAPACITY 128
typedef struct {
typedef enum {
RefUnknown,
RefLiteral,
RefExpression,
RefPointer
} ReferenceType;
typedef struct _symbol {
char* Name;
int Address;
int Resolved;
int Length;
Token* References;
union {
Token* Mnemonic;
struct _symbol* Symbol;
unsigned short Number;
} Value;
ReferenceType Type;
} Symbol;
typedef struct {
@@ -28,8 +39,9 @@ typedef struct {
SymbolTable* CreateSymbolTable(void);
int TryGetSymbol(char* name, SymbolTable* table, Symbol** outSymbol);
Symbol* AddSymbolToTable(char* name, int address, int resolved, SymbolTable* table);
Symbol* AddSymbolToTable(char* name, int address, SymbolTable* table);
void FreeSymbolTable(SymbolTable* table);
void FreeSymbol(Symbol* symbol);
int SymbolResolved(Symbol* symbol);
#endif