diff options
| author | seyko <seyko2@gmail.com> | 2015-04-20 03:44:08 +0300 |
|---|---|---|
| committer | seyko <seyko2@gmail.com> | 2015-04-20 03:44:08 +0300 |
| commit | 5ce2154c74d770b4e4c1fb0868f744418a90df80 (patch) | |
| tree | 16ef3870ea2cd1b4ecb097fdf9c0efa9eafda3ee /tccpp.c | |
| parent | 9336fa7ae50ef60cb0049136a7831e7e8d94a20a (diff) | |
| download | tinycc-5ce2154c74d770b4e4c1fb0868f744418a90df80.tar.gz tinycc-5ce2154c74d770b4e4c1fb0868f744418a90df80.tar.bz2 | |
-fdollar-in-identifiers addon
* disable a -fdollar-in-identifiers option in assembler files
* a test is added
This is a patch addon from Daniel Holden.
Diffstat (limited to 'tccpp.c')
| -rw-r--r-- | tccpp.c | 18 |
1 files changed, 11 insertions, 7 deletions
@@ -2313,9 +2313,11 @@ maybe_newline: } break; - /* treat $ as allowed char in indentifier */ - case '$': if (!tcc_state->dollars_in_identifiers) goto parse_simple; - + /* dollar is allowed to start identifiers when not parsing asm */ + case '$': + if (!tcc_state->dollars_in_identifiers + || (parse_flags & PARSE_FLAG_ASM_FILE)) goto parse_simple; + case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': @@ -2338,7 +2340,8 @@ maybe_newline: p++; for(;;) { c = *p; - if (!isidnum_table[c-CH_EOF]) + if (!isidnum_table[c-CH_EOF] + && (tcc_state->dollars_in_identifiers ? (c != '$') : 1)) break; h = TOK_HASH_FUNC(h, c); p++; @@ -2373,7 +2376,8 @@ maybe_newline: p--; PEEKC(c, p); parse_ident_slow: - while (isidnum_table[c-CH_EOF]) { + while (isidnum_table[c-CH_EOF] + || (tcc_state->dollars_in_identifiers ? (c == '$') : 0)) { cstr_ccat(&tokcstr, c); PEEKC(c, p); } @@ -3202,9 +3206,9 @@ ST_FUNC void preprocess_new(void) const char *p, *r; /* init isid table */ + for(i=CH_EOF;i<256;i++) - isidnum_table[i-CH_EOF] = (isid(i) || isnum(i) || - (tcc_state->dollars_in_identifiers ? i == '$' : 0)); + isidnum_table[i-CH_EOF] = isid(i) || isnum(i); /* add all tokens */ if (table_ident) { |
