recognizre preprocessor hashs
[cparser] / tokens.inc
1 #ifndef TS
2 #define TS(x,str,val)
3 #endif
4
5 TS(IDENTIFIER,     "identifier", = 256)
6 TS(INTEGER,        "integer number",)
7 TS(STRING_LITERAL, "string literal",)
8 TS(PP_NEWLINE,     "praeprocessor newline",)
9 TS(PP_HEADER_NAME, "praeprocessor header name",)
10
11 #define S(x)   T(x,#x,)
12 S(auto)
13 S(break)
14 S(case)
15 S(char)
16 S(const)
17 S(continue)
18 S(default)
19 S(do)
20 S(double)
21 S(else)
22 S(enum)
23 S(extern)
24 S(float)
25 S(for)
26 S(goto)
27 S(if)
28 S(inline)
29 S(int)
30 S(long)
31 S(register)
32 S(restrict)
33 S(return)
34 S(short)
35 S(signed)
36 S(sizeof)
37 S(static)
38 S(struct)
39 S(switch)
40 S(typedef)
41 S(union)
42 S(unsigned)
43 S(void)
44 S(volatile)
45 S(while)
46 S(_Bool)
47 S(_Complex)
48 S(_Imaginary)
49 #undef S
50
51 T(SELECT,                   "->",)
52 T(PLUSPLUS,                 "++",)
53 T(MINUSMINUS,               "--",)
54 T(LESSLESS,                 "<<",)
55 T(GREATERGREATER,           ">>",)
56 T(LESSEQUAL,                "<=",)
57 T(GREATEREQUAL,             ">=",)
58 T(EQUALEQUAL,               "==",)
59 T(EXCLAMATIONMARKEQUAL,     "!=",)
60 T(ANDAND,                   "&&",)
61 T(PIPEPIPE,                 "||",)
62 T(DOTDOTDOT,                "...",)
63 T(ASTERISKEQUAL,            "*=",)
64 T(SLASHEQUAL,               "/=",)
65 T(PERCENTEQUAL,             "%=",)
66 T(PLUSEQUAL,                "+=",)
67 T(MINUSEQUAL,               "-=",)
68 T(LESSLESSEQUAL,            "<<=",)
69 T(GREATERGREATEREQUAL,      ">>=",)
70 T(ANDEQUAL,                 "&=",)
71 T(CARETEQUAL,               "^=",)
72 T(PIPEEQUAL,                "|=",)
73 T(HASHHASH,                 "##",)
74
75 #define T_LAST_TOKEN  (T_HASHHASH+1)
76
77 T(RBRACK,          "[", = '[')
78 T(LBRACK,          "]", = ']')
79 T(LBRACE,          "(", = '(')
80 T(RBRACE,          ")", = ')')
81 T(RCURLY,          "{", = '{')
82 T(LCURLY,          "}", = '}')
83 T(DOT,             ".", = '.')
84 T(AND,             "&", = '&')
85 T(ASTERISK,        "*", = '*')
86 T(PLUS,            "+", = '+')
87 T(MINUS,           "-", = '-')
88 T(TILDE,           "~", = '~')
89 T(EXCLAMATIONMARK, "!", = '!')
90 T(SLASH,           "/", = '/')
91 T(PERCENT,         "%", = '%')
92 T(LESS,            "<", = '<')
93 T(GREATER,         ">", = '>')
94 T(CARET,           "^", = '^')
95 T(PIPE,            "|", = '|')
96 T(QUESTIONMARK,    "?", = '?')
97 T(COLON,           ":", = ':')
98 T(SEMICOLON,       ";", = ';')
99 T(EQUAL,           "=", = '=')
100 T(COMMA,           ",", = ',')
101 T(HASH,            "#", = '#')
102
103 T(LESSCOLON,                "<:",   = '[')
104 T(COLONGREATER,             ":>",   = ']')
105 T(LESSPERCENT,              "<%",   = '{')
106 T(PERCENTGREATER,           "%>",   = '}')
107 T(PERCENTCOLON,             "%:",   = '#')
108 T(PERCENTCOLONPERCENTCOLON, "%:%:", = T_HASHHASH)