shithub: rgbds

Download patch

ref: eac365aef0d6971c83da5b9a57a7b472eb70c663
parent: 4de6266442a2ef8e2291d245cfb53e278b90c21d
author: ISSOtm <eldredhabert0@gmail.com>
date: Wed Dec 9 04:30:15 EST 2020

Allow argument to `rb`, `rw` and `rl` to be optional

Fixes #617

--- a/src/asm/parser.y
+++ b/src/asm/parser.y
@@ -182,6 +182,7 @@
 %type	<sVal>		relocexpr_no_str
 %type	<nConstValue>	const
 %type	<nConstValue>	uconst
+%type	<nConstValue>	rs_uconst
 %type	<nConstValue>	const_3bit
 %type	<sVal>		reloc_8bit
 %type	<sVal>		reloc_8bit_no_str
@@ -616,19 +617,27 @@
 rsreset		: T_POP_RSRESET	{ sym_AddSet("_RS", 0); }
 ;
 
-rl		: T_LABEL T_POP_RL uconst {
+rs_uconst	: /* empty */ {
+			$$ = 1;
+		}
+		| uconst {
+			$$ = $1;
+		}
+;
+
+rl		: T_LABEL T_POP_RL rs_uconst {
 			sym_AddEqu($1, sym_GetConstantValue("_RS"));
 			sym_AddSet("_RS", sym_GetConstantValue("_RS") + 4 * $3);
 		}
 ;
 
-rw		: T_LABEL T_POP_RW uconst {
+rw		: T_LABEL T_POP_RW rs_uconst {
 			sym_AddEqu($1, sym_GetConstantValue("_RS"));
 			sym_AddSet("_RS", sym_GetConstantValue("_RS") + 2 * $3);
 		}
 ;
 
-rb		: T_LABEL T_POP_RB uconst {
+rb		: T_LABEL T_POP_RB rs_uconst {
 			sym_AddEqu($1, sym_GetConstantValue("_RS"));
 			sym_AddSet("_RS", sym_GetConstantValue("_RS") + $3);
 		}