Fixed a bug in the SymbolsTable where it wouldn't update its size.

This commit is contained in:
2022-10-03 20:11:04 -05:00
parent cd1258a724
commit 1f7989533b
2 changed files with 6 additions and 77 deletions
+4 -76
View File
@@ -7,8 +7,6 @@
Symbol* CreateSymbol(Token* token, int length, int address, int resolved);
const List* TokensList;
int CurrentToken = 0;
//int HeapStart = 4; // zero indexed, used for declared variables.
//int BinaryEnd = 4; // Zero indexed (binary starts with a 4 byte header)
void PrintSymbols(void);
void HandleOperation(void);
@@ -41,18 +39,16 @@ IRState* ParseTokens(List* tokens) {
break;
case LabelClass:
AdvanceParser();
printf("%s: \n", t->Lemexe);
AddSymbolToTable(t->Lemexe, NULL, strlen(t->Lemexe), MachineState.SymbolsTable);
AddSymbolToTable(t->Lemexe, NULL, strlen(t->Lemexe), MachineState.SymbolsTable)->Resolved = 1;
AdvanceParser(); //Consume the NewLine
break;
default:
fprintf(stderr, "[Error] Line %d: Syntax error, expected start of expression, got '%c' [%d].\n", t->LineNumber, t->Value.Punctuation, t->Class);
fprintf(stderr, "[Warning] Line %d: Syntax error, expected start of expression, got '%c' [%d].\n", t->LineNumber, t->Value.Punctuation, t->Class);
//exit(1);
AdvanceParser();
IgnoreParserLine();
AdvanceParser(); //Consume the new line
break;
}
//AdvanceParser();
}
if (MachineState.SymbolsTable->Size > 0) PrintSymbols();
@@ -67,23 +63,6 @@ IRState* ParseTokens(List* tokens) {
printf("%s\n", mn);
}
//DestroyList(SymbolsTable);
//memcpy(&Heap[HeapTop], Memory, ProgramCounter);
//int totalSize = HeapTop + ProgramCounter;
// Heap[0] = 2 >> HeapTop & 0xFF;
// Heap[1] = HeapTop & 0xFF;
// Heap[2] = 2 >> totalSize & 0xFF;
// Heap[3] = totalSize & 0xFF;
// for(int i = 0; i < 33; i++) {
// if (i != 0 && i % 3 == 0) printf("\n");
// printf("%02X ", Heap[i] & 0xFF);
// }
// printf("\n");
// printf("Program Counter: %d\n", ProgramCounter);
// printf("Heap Top: %#06X\n", HeapTop);
return &MachineState;
}
@@ -133,57 +112,6 @@ OpcodeParameter GetParameterType(Token** sourceToken) {
break;
}
// while(!ParserAtEnd()) {
// if (token->EndOfFile || (token->Class == PunctuationClass && token->Value.Punctuation == NewLine)) break;
// if (token->Class == RegisterClass) {
// *sourceToken = token;
// AdvanceParser();
// return RegisterParameter;
// }
// if (token->Class == PunctuationClass) {
// if (token->Value.Punctuation == LBracket) {
// AdvanceParser();
// token = PeekToken();
// *sourceToken = token;
// AdvanceParser();
// if (PeekToken()->Class == PunctuationClass && PeekToken()->Value.Punctuation != RBracket) {
// //error
// fprintf(stderr, "[Error] Line %d Expected closing bracket.\n", token->LineNumber);
// exit(1);
// }
// else AdvanceParser();
// return AddressParameter;
// }
// else {
// //error
// fprintf(stderr, "[Error] Line: %d Expected opening bracket.\n", token->LineNumber);
// exit(1);
// }
// }
// if (token->Class == NumberClass) {
// *sourceToken = token;
// AdvanceParser();
// return ConstantParameter;
// }
// if (token->Class & AddressClass) {
// *sourceToken = token;
// AdvanceParser();
// return AddressParameter;
// }
// }
return NoParameter;
}