Fix incorrect lexing of "$ff00+c" (#882)

Fixes #881 by moving the task from the lexer to the parser.
This both alleviates the need for backtracking in the lexer,
removing what is (was) arguably a hack, and causes tokenization
boundaries to be properly respected, fixing the issue mentioned above.

Co-authored-by: Rangi <remy.oukaour+rangi42@gmail.com>
This commit is contained in:
Eldred Habert
2021-05-05 02:04:19 +02:00
committed by GitHub
parent c502804192
commit c06985a7ad
13 changed files with 31 additions and 28 deletions
+9
View File
@@ -0,0 +1,9 @@
SECTION "ff00+c or not to ff00+c", ROMX
ld a, [$ff00 + c]
ld [65280 + c], a
; Not ok
ld a, [$ff01 + c]
ld [xyz + c], a
+5
View File
@@ -0,0 +1,5 @@
ERROR: ff00+c-bad.asm(8):
Expected constant expression equal to $FF00 for "$ff00+c"
ERROR: ff00+c-bad.asm(9):
Expected constant expression equal to $FF00 for "$ff00+c"
error: Assembly aborted (2 errors)!
+11
View File
@@ -0,0 +1,11 @@
CONSTANT equ 42
PRINTLN $ff00 + CONSTANT
SECTION "Overreading much?", ROM0[0]
jp $ff00 + CONSTANT
jp $ff00 + carryOnPlease
jp $ff00+CONSTANT
jp $ff00+carryOnPlease
carryOnPlease:
+1
View File
@@ -0,0 +1 @@
$FF2A
+1
View File
@@ -0,0 +1 @@
テ* テ*
View File
View File