X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=lexer.c;h=9b6d36930f17ef254da96fb1c6a318da63f42596;hb=1fed691f0daf9eb74d4726868048766323adfe67;hp=16a3798c9c7a03d1f1b13494051eaba752358d84;hpb=930b5d23cc57298f8f211e5eb4475ea883e7907b;p=cparser diff --git a/lexer.c b/lexer.c index 16a3798..9b6d369 100644 --- a/lexer.c +++ b/lexer.c @@ -56,6 +56,7 @@ static char buf[1024 + MAX_PUTBACK]; static const char *bufend; static const char *bufpos; static strset_t stringset; +bool allow_dollar_in_symbol = true; /** * Prints a parse error message at the current token. @@ -194,6 +195,7 @@ end_of_next_char:; } #define SYMBOL_CHARS \ + case '$': if (!allow_dollar_in_symbol) goto dollar_sign; \ case 'a': \ case 'b': \ case 'c': \ @@ -246,8 +248,7 @@ end_of_next_char:; case 'X': \ case 'Y': \ case 'Z': \ - case '_': \ - case '$': // TODO add option to deactivate $ in identifers + case '_': #define DIGITS \ case '0': \ @@ -282,6 +283,7 @@ static void parse_symbol(void) break; default: +dollar_sign: goto end_symbol; } } @@ -1565,6 +1567,7 @@ void lexer_next_preprocessing_token(void) return; default: +dollar_sign: errorf(&lexer_token.source_position, "unknown character '%c' found", c); next_char(); lexer_token.type = T_ERROR;