From 2d7aad16173b7cee49a86dce22d171bc25931757 Mon Sep 17 00:00:00 2001 From: glm94 Date: Tue, 28 Mar 2023 12:41:56 -0500 Subject: [PATCH] Fixed a bug with labels not advancing the parser after being processed resulting in a redefinition error. --- misc/test.asm | 1 + src/parser.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/misc/test.asm b/misc/test.asm index 295609f..e200780 100644 --- a/misc/test.asm +++ b/misc/test.asm @@ -5,6 +5,7 @@ .db null_byte 0 ;load r2, label +something_insance: load byte r1, r3 load r1, r3 load r1, 5 \ No newline at end of file diff --git a/src/parser.c b/src/parser.c index 575e5f4..a75920c 100644 --- a/src/parser.c +++ b/src/parser.c @@ -56,6 +56,9 @@ IRState* ParseTokens(List* tokens) { if (!found) AddSymbolToTable(t->Lemexe, HeapSize, 1, MachineState.SymbolsTable); else tmp->Resolved = 1; + + RemoveCurrentToken(); //label + RemoveCurrentToken(); //newline } break; default: @@ -191,7 +194,7 @@ void HandleAssemblerDirective() { directive->Lemexe = "LAA"; } - AdvanceParser(); //Number or identifier + AdvanceParser(); //Number, register or identifier } else if (reg->Class == DirectiveClass) { if (reg->Value.Directive != Byte) {