mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-23 03:22:08 +00:00
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:
9
test/asm/ff00+c-bad.asm
Normal file
9
test/asm/ff00+c-bad.asm
Normal 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
test/asm/ff00+c-bad.err
Normal file
5
test/asm/ff00+c-bad.err
Normal 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
test/asm/ff00+c-label.asm
Normal file
11
test/asm/ff00+c-label.asm
Normal 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
test/asm/ff00+c-label.out
Normal file
1
test/asm/ff00+c-label.out
Normal file
@@ -0,0 +1 @@
|
||||
$FF2A
|
||||
1
test/asm/ff00+c-label.out.bin
Normal file
1
test/asm/ff00+c-label.out.bin
Normal file
@@ -0,0 +1 @@
|
||||
<EFBFBD>*<2A><><0C><>*<2A><><0C>
|
||||
0
test/asm/ff00+c.err
Normal file
0
test/asm/ff00+c.err
Normal file
0
test/asm/ff00+c.out
Normal file
0
test/asm/ff00+c.out
Normal file
Reference in New Issue
Block a user