Added some debug print out for the instruction list and a helper function to get a string for any Registers enum.

This commit is contained in:
2022-10-06 21:05:57 +00:00
parent f38da9cc74
commit d53833c25f
4 changed files with 132 additions and 60 deletions
+17 -15
View File
@@ -31,9 +31,21 @@ IRState* ParseTokens(List* tokens) {
HandleOperation();
break;
case LabelClass:
AdvanceParser();
AddSymbolToTable(t->Lemexe, NULL, strlen(t->Lemexe), MachineState.SymbolsTable)->Resolved = 1;
AdvanceParser(); //Consume the NewLine
{
Symbol* symbol = TryGetSymbol(t->Lemexe, MachineState.SymbolsTable);
if (symbol && symbol->Resolved) {
fprintf(stderr, "[Error] Line %d: Redefinition of symbol '%s'\n", t->LineNumber, t->Lemexe);
exit(1);
}
AdvanceParser(); //Consume the label token
if (!symbol) AddSymbolToTable(t->Lemexe, NULL, strlen(t->Lemexe), MachineState.SymbolsTable)->Resolved = 1;
else symbol->Resolved = 1;
AdvanceParser(); //Consume the NewLine
}
break;
default:
fprintf(stderr, "[Warning] Line %d: Syntax error, expected start of expression, got '%c' [%d].\n", t->LineNumber, t->Value.Punctuation, t->Class);
@@ -45,16 +57,6 @@ IRState* ParseTokens(List* tokens) {
if (MachineState.SymbolsTable->Size > 0) PrintSymbols();
for(int i = 0; i < MachineState.Instructions->size; i++) {
char mn[12];
Instruction* ins = MachineState.Instructions->content[i];
GetMnemonicText(ins->Mnemonic, mn);
printf("%s\n", mn);
}
return &MachineState;
}
@@ -73,10 +75,10 @@ Parameter* GetParameterType() {
AdvanceParser();
return param;
case LabelClass:
//case LabelClass:
case IdentifierClass:
param->ParameterType = AddressParameter;
param->InterpretedAs = AddressParameter;
param->InterpretedAs = ConstantParameter;
symbol = TryGetSymbol(token->Lemexe, MachineState.SymbolsTable);