From dcb36587b5950b000f536e374eeed3787937db27 Mon Sep 17 00:00:00 2001 From: seyko Date: Sun, 12 Apr 2015 15:32:03 +0300 Subject: -fdollar-in-identifiers switch which enables '$' in identifiers library Cello: http://libcello.org/ which uses `$` and several variations of as macros. There is also RayLanguage which also uses it as a macro for a kind of ObjC style message passing: https://github.com/kojiba/RayLanguage This is a patch from Daniel Holden. --- tccpp.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'tccpp.c') diff --git a/tccpp.c b/tccpp.c index f38e41a..111ea2b 100644 --- a/tccpp.c +++ b/tccpp.c @@ -2286,7 +2286,10 @@ maybe_newline: } } break; - + + /* treat $ as allowed char in indentifier */ + case '$': if (!tcc_state->dollars_in_identifiers) 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': @@ -2589,8 +2592,8 @@ maybe_newline: case ':': case '?': case '~': - case '$': /* only used in assembler */ - case '@': /* dito */ + case '@': /* only used in assembler */ + parse_simple: tok = c; p++; break; @@ -3174,7 +3177,8 @@ ST_FUNC void preprocess_new(void) /* init isid table */ for(i=CH_EOF;i<256;i++) - isidnum_table[i-CH_EOF] = isid(i) || isnum(i); + isidnum_table[i-CH_EOF] = (isid(i) || isnum(i) || + (tcc_state->dollars_in_identifiers ? i == '$' : 0)); /* add all tokens */ if (table_ident) { -- cgit v1.3.1