#define TS(x,str,val)
#endif
-TS(IDENTIFIER, "identifier", = 256)
-TS(INTEGER, "integer number",)
-TS(FLOATINGPOINT, "floatingpoint number",)
-TS(STRING_LITERAL, "string literal",)
+TS(IDENTIFIER, "identifier", = 256)
+TS(INTEGER, "integer number",)
+TS(CHARS, "character constant",)
+TS(FLOATINGPOINT, "floatingpoint number",)
+TS(STRING_LITERAL, "string literal",)
+TS(WIDE_STRING_LITERAL, "wide string literal",)
-#define S(x) T(x,#x,)
-S(auto)
-S(break)
-S(case)
-S(char)
-S(continue)
-S(default)
-S(do)
-S(double)
-S(else)
-S(enum)
-S(extern)
-S(float)
-S(for)
-S(goto)
-S(if)
-S(int)
-S(long)
-S(register)
-S(return)
-S(short)
-S(signed)
-S(sizeof)
-S(static)
-S(struct)
-S(switch)
-S(typedef)
-S(union)
-S(unsigned)
-S(void)
-S(while)
-S(_Bool)
-S(_Complex)
-S(_Imaginary)
-S(__thread)
-S(__extension__)
-S(__attribute__)
-S(__builtin_classify_type)
-S(__builtin_va_list)
-S(__builtin_expect)
-S(__builtin_offsetof)
-S(__builtin_va_start)
-S(__builtin_va_arg)
-S(__builtin_va_end)
-S(__builtin_alloca)
-S(__PRETTY_FUNCTION__)
-S(__FUNCTION__)
-S(__func__)
-S(__alignof__)
-S(__typeof__)
-S(__real__)
-S(__imag__)
+#define S(mode,x) T(mode,x,#x,)
+S(_ALL, auto)
+S(_ALL, break)
+S(_ALL, case)
+S(_ALL, char)
+S(_ALL, continue)
+S(_ALL, default)
+S(_ALL, do)
+S(_ALL, double)
+S(_ALL, else)
+S(_ALL, enum)
+S(_ALL, extern)
+S(_ALL, float)
+S(_ALL, for)
+S(_ALL, goto)
+S(_ALL, if)
+S(_ALL, int)
+S(_ALL, long)
+S(_ALL, register)
+S(_ALL, return)
+S(_ALL, short)
+S(_ANSI|_C99, signed)
+S(_ALL, sizeof)
+S(_ALL, static)
+S(_ALL, struct)
+S(_ALL, switch)
+S(_ALL, typedef)
+S(_ALL, union)
+S(_ALL, unsigned)
+S(_ALL, void)
+S(_ALL, while)
+
+S(_C99|_GNUC, _Bool)
+S(_C99|_GNUC, _Complex)
+S(_C99|_GNUC, _Imaginary)
+S(_GNUC, __thread)
+S(_GNUC, __extension__)
+S(_GNUC, __builtin_classify_type)
+S(_GNUC, __builtin_va_list)
+S(_GNUC, __builtin_expect)
+S(_GNUC, __builtin_offsetof)
+S(_GNUC, __builtin_va_arg)
+S(_GNUC, __builtin_va_end)
+S(_GNUC, __builtin_alloca)
+S(_GNUC, __builtin_nanf)
+S(_GNUC, __builtin_nan)
+S(_GNUC, __builtin_nand)
+S(_GNUC, __builtin_isgreater)
+S(_GNUC, __builtin_isgreaterequal)
+S(_GNUC, __builtin_isless)
+S(_GNUC, __builtin_islessequal)
+S(_GNUC, __builtin_islessgreater)
+S(_GNUC, __builtin_isunordered)
+S(_GNUC, __builtin_constant_p)
+S(_GNUC, __builtin_prefetch)
+S(_GNUC, __PRETTY_FUNCTION__)
+S(_ALL, __FUNCTION__)
+S(_C99, __func__)
#undef S
-T(const, "__const",)
-T(_const, "const", = T_const)
-T(restrict, "__restrict",)
-T(_restrict, "restrict", = T_restrict)
-T(asm, "asm",)
-T(__asm__, "__asm__", = T_asm)
-T(volatile, "volatile",)
-T(__volatile__, "__volatile__", = T_volatile)
-T(inline, "inline",)
-T(__inline, "__inline", = T_inline)
-T(__inline__, "__inline__", = T_inline)
+T(_GNUC, __real__, "__real__",)
+T(_GNUC, __real, "__real", = T___real__)
+T(_GNUC, __imag__, "__imag__",)
+T(_GNUC, __imag, "__imag", = T___imag__)
+T(_GNUC|_MS, __alignof__, "__alignof__",)
+T(_GNUC|_MS, __alignof, "__alignof", = T___alignof__)
+T(_MS, _alignof, "_alignof", = T___alignof__)
+T(_ANSI|_C99, const, "const",)
+T(_GNUC, __const, "__const", = T_const)
+T(_C99, restrict, "restrict",)
+T(_GNUC, __restrict__, "__restrict__", = T_restrict)
+T(_GNUC, __restrict, "__restrict", = T_restrict)
+T(_MS, _restrict, "_restrict", = T_restrict)
+T(_ALL, asm, "asm",)
+T(_GNUC, __asm__, "__asm__", = T_asm)
+T(_MS, _asm, "_asm", = T_asm)
+T(_GNUC|_MS, __asm, "__asm", = T_asm)
+T(_ANSI|_C99, volatile, "volatile",)
+T(_GNUC, __volatile__, "__volatile__", = T_volatile)
+T(_C99, inline, "inline",)
+T(_GNUC|_MS, __inline, "__inline", = T_inline)
+T(_GNUC, __inline__, "__inline__", = T_inline)
+T(_GNUC, typeof, "typeof",)
+T(_GNUC, __typeof, "__typeof", = T_typeof)
+T(_GNUC, __typeof__, "__typeof__", = T_typeof)
+T(_GNUC, __attribute__, "__attribute__",)
+
+T(_GNUC, __builtin_va_start, "__builtin_va_start",)
+T(_GNUC, __builtin_stdarg_start, "__builtin_stdarg_start", = T___builtin_va_start)
+
+T(_MS, near, "_near",)
+T(_MS, _near, "__near", = T_near)
+T(_MS, far, "_far",)
+T(_MS, _far, "__far", = T_far)
+T(_MS, cdecl, "cdecl",)
+T(_MS, _cdecl, "_cdecl", = T_cdecl)
+T(_MS, __cdecl, "__cdecl", = T_cdecl)
+T(_MS, stdcall, "_stdcall",)
+T(_MS, __stdcall, "__stdcall", = T_stdcall)
+T(_MS, fastcall, "_fastcall",)
+T(_MS, __fastcall, "__fastcall", = T_fastcall)
+T(_MS, thiscall, "_thiscall",)
+T(_MS, __thiscall, "__thiscall", = T_thiscall)
+T(_MS, forceinline, "_forceinline",)
+T(_MS, __forceinline, "__forceinline", = T_forceinline)
+T(_MS, unaligned, "_unaligned",)
+T(_MS, __unaligned, "__unaligned", = T_unaligned)
+T(_MS, assume, "_assume",)
+T(_MS, __assume, "__assume", = T_assume)
+T(_MS, try, "_try",)
+T(_MS, __try, "__try", = T_try)
+T(_MS, finally, "_finally",)
+T(_MS, __finally, "__finally", = T_finally)
+T(_MS, leave, "_leave",)
+T(_MS, __leave, "__leave", = T_leave)
+T(_MS, except, "_except",)
+T(_MS, __except, "__except", = T_except)
+T(_MS, declspec, "_declspec",)
+T(_MS, __declspec, "__declspec", = T_declspec)
+T(_MS, based, "_based",)
+T(_MS, __based, "__based", = T_based)
-T(MINUSGREATER, "->",)
-T(PLUSPLUS, "++",)
-T(MINUSMINUS, "--",)
-T(LESSLESS, "<<",)
-T(GREATERGREATER, ">>",)
-T(LESSEQUAL, "<=",)
-T(GREATEREQUAL, ">=",)
-T(EQUALEQUAL, "==",)
-T(EXCLAMATIONMARKEQUAL, "!=",)
-T(ANDAND, "&&",)
-T(PIPEPIPE, "||",)
-T(DOTDOTDOT, "...",)
-T(ASTERISKEQUAL, "*=",)
-T(SLASHEQUAL, "/=",)
-T(PERCENTEQUAL, "%=",)
-T(PLUSEQUAL, "+=",)
-T(MINUSEQUAL, "-=",)
-T(LESSLESSEQUAL, "<<=",)
-T(GREATERGREATEREQUAL, ">>=",)
-T(ANDEQUAL, "&=",)
-T(CARETEQUAL, "^=",)
-T(PIPEEQUAL, "|=",)
-T(HASHHASH, "##",)
+T(_MS, int8, "_int8",)
+T(_MS, __int8, "__int8", = T_int8)
+T(_MS, int16, "_int16",)
+T(_MS, __int16, "__int16", = T_int16)
+T(_MS, int32, "_int32",)
+T(_MS, __int32, "__int32", = T_int32)
+T(_MS, int64, "_int64",)
+T(_MS, __int64, "__int64", = T_int64)
+
+#define _T(x,str,val) T(_ALL,x,str,val)
+
+_T(MINUSGREATER, "->",)
+_T(PLUSPLUS, "++",)
+_T(MINUSMINUS, "--",)
+_T(LESSLESS, "<<",)
+_T(GREATERGREATER, ">>",)
+_T(LESSEQUAL, "<=",)
+_T(GREATEREQUAL, ">=",)
+_T(EQUALEQUAL, "==",)
+_T(EXCLAMATIONMARKEQUAL, "!=",)
+_T(ANDAND, "&&",)
+_T(PIPEPIPE, "||",)
+_T(DOTDOTDOT, "...",)
+_T(ASTERISKEQUAL, "*=",)
+_T(SLASHEQUAL, "/=",)
+_T(PERCENTEQUAL, "%=",)
+_T(PLUSEQUAL, "+=",)
+_T(MINUSEQUAL, "-=",)
+_T(LESSLESSEQUAL, "<<=",)
+_T(GREATERGREATEREQUAL, ">>=",)
+_T(ANDEQUAL, "&=",)
+_T(CARETEQUAL, "^=",)
+_T(PIPEEQUAL, "|=",)
+_T(HASHHASH, "##",)
#define T_LAST_TOKEN (T_HASHHASH+1)
-T(LESSCOLON, "<:", = '[')
-T(COLONGREATER, ":>", = ']')
-T(LESSPERCENT, "<%", = '{')
-T(PERCENTGREATER, "%>", = '}')
-T(PERCENTCOLON, "%:", = '#')
-T(PERCENTCOLONPERCENTCOLON, "%:%:", = T_HASHHASH)
+_T(LESSCOLON, "<:", = '[')
+_T(COLONGREATER, ":>", = ']')
+_T(LESSPERCENT, "<%", = '{')
+_T(PERCENTGREATER, "%>", = '}')
+_T(PERCENTCOLON, "%:", = '#')
+_T(PERCENTCOLONPERCENTCOLON, "%:%:", = T_HASHHASH)
+
+_T(RBRACK, "[", = '[')
+_T(LBRACK, "]", = ']')
+_T(LBRACE, "(", = '(')
+_T(RBRACE, ")", = ')')
+_T(RCURLY, "{", = '{')
+_T(LCURLY, "}", = '}')
+_T(DOT, ".", = '.')
+_T(AND, "&", = '&')
+_T(ASTERISK, "*", = '*')
+_T(PLUS, "+", = '+')
+_T(MINUS, "-", = '-')
+_T(TILDE, "~", = '~')
+_T(EXCLAMATIONMARK, "!", = '!')
+_T(SLASH, "/", = '/')
+_T(PERCENT, "%", = '%')
+_T(LESS, "<", = '<')
+_T(GREATER, ">", = '>')
+_T(CARET, "^", = '^')
+_T(PIPE, "|", = '|')
+_T(QUESTIONMARK, "?", = '?')
+_T(COLON, ":", = ':')
+_T(SEMICOLON, ";", = ';')
+_T(EQUAL, "=", = '=')
+_T(COMMA, ",", = ',')
+_T(HASH, "#", = '#')
-T(RBRACK, "[", = '[')
-T(LBRACK, "]", = ']')
-T(LBRACE, "(", = '(')
-T(RBRACE, ")", = ')')
-T(RCURLY, "{", = '{')
-T(LCURLY, "}", = '}')
-T(DOT, ".", = '.')
-T(AND, "&", = '&')
-T(ASTERISK, "*", = '*')
-T(PLUS, "+", = '+')
-T(MINUS, "-", = '-')
-T(TILDE, "~", = '~')
-T(EXCLAMATIONMARK, "!", = '!')
-T(SLASH, "/", = '/')
-T(PERCENT, "%", = '%')
-T(LESS, "<", = '<')
-T(GREATER, ">", = '>')
-T(CARET, "^", = '^')
-T(PIPE, "|", = '|')
-T(QUESTIONMARK, "?", = '?')
-T(COLON, ":", = ':')
-T(SEMICOLON, ";", = ';')
-T(EQUAL, "=", = '=')
-T(COMMA, ",", = ',')
-T(HASH, "#", = '#')
+#undef _T
TS(NEWLINE, "newline", = '\n')