Fixed issue #1 Scanner Bug where the start of comment would become part of an identifier or throw off number parsing.

This commit is contained in:
2023-04-14 13:28:44 -05:00
parent aa3888b578
commit a9e57132be
2 changed files with 8 additions and 7 deletions
+6 -5
View File
@@ -10,13 +10,13 @@ something_insance:
load r1, unknown_symbol load r1, unknown_symbol
load byte r1, r3 load byte r1, r3
load r1, 5 load r1, 5
.db fun_alright 0x70 .db fun_alright 0x70;does this break?
load r3, r4 load r3, r4
store byte r3, r5 store byte r3, r5
store r5, r7 store r5, r7
unknown_symbol: unknown_symbol:;Does this work?
cmp r1, 5 cmp r1, 5;or one after the register?
cmp r1, r2 cmp r1, r2;This might work
and r1, r2 and r1, r2
add r4, r7 add r4, r7
inc r1 ;increment r1 inc r1 ;increment r1
@@ -24,4 +24,5 @@ xor r1, r1 ;clear self
pop r3 pop r3
jmp unknown_symbol jmp unknown_symbol
jmp r4 jmp r4
jz unknown_symbol jz unknown_symbol
;And a comment at the end
+2 -2
View File
@@ -128,7 +128,7 @@ Token* ParseNumber(void) {
if ((ahead >= 'a' && ahead <= 'f') || isdigit(ahead)) { if ((ahead >= 'a' && ahead <= 'f') || isdigit(ahead)) {
AdvanceScanner(); //Consume the 'x' AdvanceScanner(); //Consume the 'x'
while(!ScannerAtEnd() && PeekScanner() != '\n' && !IsWhiteSpace(PeekScanner())) { while(!ScannerAtEnd() && PeekScanner() != '\n' && !IsWhiteSpace(PeekScanner()) && PeekScanner() != ';') {
if (isdigit(PeekScanner())) { if (isdigit(PeekScanner())) {
AdvanceScanner(); AdvanceScanner();
continue; continue;
@@ -243,7 +243,7 @@ Token* ParseString(void) {
Token* ParseIdentifier(void) { Token* ParseIdentifier(void) {
int start = Position; int start = Position;
while(!ScannerAtEnd() && !IsPunctuation(PeekScanner()) && PeekScanner() != ' ' && PeekScanner() != '\n') { while(!ScannerAtEnd() && !IsPunctuation(PeekScanner()) && PeekScanner() != ' ' && PeekScanner() != '\n' && PeekScanner() != ';') {
AdvanceScanner(); AdvanceScanner();
} }