-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.
This commit is contained in:
seyko
2015-04-12 15:32:03 +03:00
parent e8ad336ac5
commit dcb36587b5
4 changed files with 13 additions and 4 deletions

12
tccpp.c
View File

@ -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) {