shithub: rgbds

Download patch

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