ref: 3c5e1caa7c29d1a559d1144d3d00d9d981a7ac9a
parent: d4028fff102a0fd1cd3d522b8483e3b5a2a7254a
author: Rangi <[email protected]>
date: Tue Feb 23 14:31:58 EST 2021
Disallow "." as a local label Fixes #760
--- a/src/asm/lexer.c
+++ b/src/asm/lexer.c
@@ -287,7 +287,9 @@
{"PUSHO", T_POP_PUSHO},
{"POPO", T_POP_POPO},
- {"OPT", T_POP_OPT}
+ {"OPT", T_POP_OPT},
+
+ {".", T_PERIOD},
};
static bool isWhitespace(int c)
@@ -576,7 +578,7 @@
uint16_t children[0x60 - ' '];
struct KeywordMapping const *keyword;
/* Since the keyword structure is invariant, the min number of nodes is known at compile time */
-} keywordDict[350] = {0}; /* Make sure to keep this correct when adding keywords! */
+} keywordDict[351] = {0}; /* Make sure to keep this correct when adding keywords! */
/* Convert a char into its index into the dict */
static inline uint8_t dictIndex(char c)
--- a/src/asm/parser.y
+++ b/src/asm/parser.y
@@ -460,6 +460,7 @@
%token <nConstValue> T_NUMBER "number"
%token <tzString> T_STRING "string"
+%token T_PERIOD "."
%token T_COMMA ","
%token T_COLON ":"
%token T_LBRACK "[" T_RBRACK "]"
--- /dev/null
+++ b/test/asm/period.asm
@@ -1,0 +1,5 @@
+section "period", rom0
+
+global1: db 1
+.local db 2
+. db 3
--- /dev/null
+++ b/test/asm/period.err
@@ -1,0 +1,3 @@
+ERROR: period.asm(5):
+ syntax error, unexpected .
+error: Assembly aborted (1 errors)!
--- /dev/null
+++ b/test/asm/period.simple.err
@@ -1,0 +1,3 @@
+ERROR: period.asm(5):
+ syntax error
+error: Assembly aborted (1 errors)!
--- a/test/asm/undefined-dot.asm
+++ /dev/null
@@ -1,3 +1,0 @@
-SECTION "sec", ROM0
-foo:
- add sp, .
--- /dev/null
+++ b/test/asm/undefined-local.asm
@@ -1,0 +1,3 @@
+SECTION "sec", ROM0
+foo:
+ add sp, .bar ; rgblink gives an "Unknown symbol" error here