mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 10:12:06 +00:00
@@ -903,7 +903,7 @@ restart:
|
||||
char const *str = readMacroArg(c);
|
||||
|
||||
/*
|
||||
* If the argument is an empty string, it cannot be
|
||||
* If the macro arg is an empty string, it cannot be
|
||||
* expanded, so skip it and keep peeking.
|
||||
*/
|
||||
if (!str[0]) {
|
||||
@@ -2164,6 +2164,16 @@ static int yylex_RAW(void)
|
||||
dbgPrint("Read raw string \"%s\"\n", yylval.tzString);
|
||||
return T_STRING;
|
||||
|
||||
case '/': /* Block comments inside macro args */
|
||||
shiftChars(1); /* Shift the slash */
|
||||
if (peek(0) == '*') {
|
||||
shiftChars(1);
|
||||
discardBlockComment();
|
||||
continue;
|
||||
}
|
||||
append_yylval_tzString(c); /* Append the slash */
|
||||
break;
|
||||
|
||||
case '\\': /* Character escape */
|
||||
shiftChars(1); /* Shift the backslash */
|
||||
c = peek(0);
|
||||
|
||||
16
test/asm/macro-arguments.asm
Normal file
16
test/asm/macro-arguments.asm
Normal file
@@ -0,0 +1,16 @@
|
||||
mac: MACRO
|
||||
println "'mac \#':"
|
||||
for i, _NARG
|
||||
println strfmt("\\%d: <\1>", i+1)
|
||||
shift
|
||||
endr
|
||||
println
|
||||
ENDM
|
||||
|
||||
mac /* block
|
||||
...comment */ ; comment
|
||||
mac /*a*/ 1 , 2 /*b*/
|
||||
mac \
|
||||
c, d
|
||||
mac 1, 2 + /* another ;
|
||||
; comment */ 2, 3
|
||||
0
test/asm/macro-arguments.err
Normal file
0
test/asm/macro-arguments.err
Normal file
15
test/asm/macro-arguments.out
Normal file
15
test/asm/macro-arguments.out
Normal file
@@ -0,0 +1,15 @@
|
||||
'mac ':
|
||||
|
||||
'mac 1,2':
|
||||
\1: < 1>
|
||||
\2: <2>
|
||||
|
||||
'mac c,d':
|
||||
\1: < c>
|
||||
\2: <d>
|
||||
|
||||
'mac 1,2 + 2,3':
|
||||
\1: <1>
|
||||
\2: <2 + 2>
|
||||
\3: <3>
|
||||
|
||||
Reference in New Issue
Block a user