From 5ce2154c74d770b4e4c1fb0868f744418a90df80 Mon Sep 17 00:00:00 2001 From: seyko Date: Mon, 20 Apr 2015 03:44:08 +0300 Subject: -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. --- tccpp.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'tccpp.c') diff --git a/tccpp.c b/tccpp.c index b0f4102..42ebf48 100644 --- a/tccpp.c +++ b/tccpp.c @@ -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) { -- cgit v1.3.1