mirror of
https://github.com/mirror/tinycc.git
synced 2025-01-15 05:20:06 +08:00
-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:
parent
e8ad336ac5
commit
dcb36587b5
1
libtcc.c
1
libtcc.c
@ -1482,6 +1482,7 @@ static const FlagDef flag_defs[] = {
|
||||
{ offsetof(TCCState, leading_underscore), 0, "leading-underscore" },
|
||||
{ offsetof(TCCState, ms_extensions), 0, "ms-extensions" },
|
||||
{ offsetof(TCCState, old_struct_init_code), 0, "old-struct-init-code" },
|
||||
{ offsetof(TCCState, dollars_in_identifiers), 0, "dollars-in-identifiers" },
|
||||
};
|
||||
|
||||
/* set/reset a flag */
|
||||
|
@ -241,6 +241,9 @@ Allow a MS C compiler extensions to the language. Curretly this
|
||||
assume a nested named structure declaration without identifier behave
|
||||
like an unnamed one.
|
||||
|
||||
@item -fdollars-in-identifiers
|
||||
Allow a dollars in identifiers
|
||||
|
||||
@end table
|
||||
|
||||
Warning options:
|
||||
|
1
tcc.h
1
tcc.h
@ -605,6 +605,7 @@ struct TCCState {
|
||||
int ms_extensions; /* allow nested named struct w/o identifier behave like unnamed */
|
||||
int old_struct_init_code; /* use old algorithm to init array in struct when there is no '{' used.
|
||||
Liuux 2.4.26 can't find initrd when compiled with a new algorithm */
|
||||
int dollars_in_identifiers; /* allows '$' char in indentifiers */
|
||||
|
||||
/* warning switches */
|
||||
int warn_write_strings;
|
||||
|
12
tccpp.c
12
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) {
|
||||
|
Loading…
Reference in New Issue
Block a user