mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-21 18:52:07 +00:00
discard block comments delimited with /* */
This commit is contained in:
@@ -921,6 +921,33 @@ void lexer_DumpStringExpansions(void)
|
||||
free(stack);
|
||||
}
|
||||
|
||||
/* Discards an block comment */
|
||||
static void discardBlockComment(void)
|
||||
{
|
||||
dbgPrint("Discarding block comment\n");
|
||||
for (;;) {
|
||||
switch (nextChar()) {
|
||||
case EOF:
|
||||
error("Unterminated block comment\n");
|
||||
return;
|
||||
case '/':
|
||||
if (peek(0) == '*') {
|
||||
warning(WARNING_NESTED_COMMENT,
|
||||
"/* in block comment\n");
|
||||
}
|
||||
continue;
|
||||
case '*':
|
||||
if (peek(0) == '/') {
|
||||
shiftChars(1);
|
||||
return;
|
||||
}
|
||||
/* fallthrough */
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Function to discard all of a line's comments */
|
||||
|
||||
static void discardComment(void)
|
||||
@@ -1476,8 +1503,6 @@ static int yylex_NORMAL(void)
|
||||
return T_OP_ADD;
|
||||
case '-':
|
||||
return T_OP_SUB;
|
||||
case '/':
|
||||
return T_OP_DIV;
|
||||
case '~':
|
||||
return T_OP_NOT;
|
||||
|
||||
@@ -1498,7 +1523,14 @@ static int yylex_NORMAL(void)
|
||||
|
||||
/* Handle ambiguous 1- or 2-char tokens */
|
||||
char secondChar;
|
||||
|
||||
case '/': /* Either division or a block comment */
|
||||
secondChar = peek(0);
|
||||
if (secondChar == '*') {
|
||||
shiftChars(1);
|
||||
discardBlockComment();
|
||||
break;
|
||||
}
|
||||
return T_OP_DIV;
|
||||
case '|': /* Either binary or logical OR */
|
||||
secondChar = peek(0);
|
||||
if (secondChar == '|') {
|
||||
|
||||
@@ -36,6 +36,7 @@ static enum WarningState const defaultWarnings[NB_WARNINGS] = {
|
||||
[WARNING_EMPTY_ENTRY] = WARNING_DISABLED,
|
||||
[WARNING_LARGE_CONSTANT] = WARNING_DISABLED,
|
||||
[WARNING_LONG_STR] = WARNING_DISABLED,
|
||||
[WARNING_NESTED_COMMENT] = WARNING_ENABLED,
|
||||
[WARNING_OBSOLETE] = WARNING_ENABLED,
|
||||
[WARNING_SHIFT] = WARNING_DISABLED,
|
||||
[WARNING_SHIFT_AMOUNT] = WARNING_DISABLED,
|
||||
@@ -75,6 +76,7 @@ static char const *warningFlags[NB_WARNINGS_ALL] = {
|
||||
"empty-entry",
|
||||
"large-constant",
|
||||
"long-string",
|
||||
"nested-comment",
|
||||
"obsolete",
|
||||
"shift",
|
||||
"shift-amount",
|
||||
@@ -104,6 +106,7 @@ static uint8_t const _wallCommands[] = {
|
||||
/* Warnings that are less likely to indicate an error */
|
||||
static uint8_t const _wextraCommands[] = {
|
||||
WARNING_EMPTY_ENTRY,
|
||||
WARNING_NESTED_COMMENT,
|
||||
META_WARNING_DONE
|
||||
};
|
||||
|
||||
@@ -115,6 +118,7 @@ static uint8_t const _weverythingCommands[] = {
|
||||
WARNING_EMPTY_ENTRY,
|
||||
WARNING_LARGE_CONSTANT,
|
||||
WARNING_LONG_STR,
|
||||
WARNING_NESTED_COMMENT,
|
||||
WARNING_OBSOLETE,
|
||||
WARNING_SHIFT,
|
||||
WARNING_SHIFT_AMOUNT,
|
||||
|
||||
Reference in New Issue
Block a user