#ifndef TS #define TS(x,str,val) #endif TS(IDENTIFIER, "identifier", = 256) TS(INTEGER, "integer number",) TS(FLOATINGPOINT, "floatingpoint number",) TS(STRING_LITERAL, "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(__builtin_nanf) S(__PRETTY_FUNCTION__) S(__FUNCTION__) S(__func__) S(__alignof__) S(__real__) S(__imag__) #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(typeof, "typeof",) T(__typeof__, "__typeof__", = T_typeof) 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(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, "#", = '#') TS(NEWLINE, "newline", = '\n')