Support /* block comments */ in macro arguments

Fixes #746
This commit is contained in:
Rangi
2021-02-17 16:30:03 -05:00
committed by Rangi
parent e7d6ddf593
commit fad48326f8
4 changed files with 42 additions and 1 deletions

View File

@@ -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);