type: Make an assert()ion independent of the last entry of an enum.
[cparser] / tokens.inc
1 /*
2  * This file is part of cparser.
3  * Copyright (C) 2012 Matthias Braun <matze@braunis.de>
4  */
5
6 /* These must go first. Some set explicit values. */
7 #define ALTERNATE(name, val)          T(_CXX, T_##name, #name,  val)
8 #define PUNCTUATOR(name, string, val) T(_ALL, T_##name, string, val)
9 #include "tokens_punctuator.inc"
10 #undef PUNCTUATOR
11 #undef ALTERNATE
12
13 #define S(name, description) T(_ALL, T_##name, description,)
14 S(EOF,                "end of input")
15 S(IDENTIFIER,         "identifier")
16 S(NUMBER,             "number constant")
17 S(CHARACTER_CONSTANT, "character constant")
18 S(STRING_LITERAL,     "string literal")
19 S(MACRO_PARAMETER,    "macro parameter")
20 S(UNKNOWN_CHAR,       "unknown character")
21 #undef S
22
23 #define S(mode,x)   T(mode,T_##x,#x,)
24 S(_ALL, auto)
25 S(_ALL, break)
26 S(_ALL, case)
27 S(_ALL, char)
28 S(_ALL, continue)
29 S(_ALL, default)
30 S(_ALL, do)
31 S(_ALL, double)
32 S(_ALL, else)
33 S(_ALL, enum)
34 S(_ALL, extern)
35 S(_ALL, float)
36 S(_ALL, for)
37 S(_ALL, goto)
38 S(_ALL, if)
39 S(_ALL, int)
40 S(_ALL, long)
41 S(_ALL, register)
42 S(_ALL, return)
43 S(_ALL, short)
44 S(_ALL, sizeof)
45 S(_ALL, static)
46 S(_ALL, struct)
47 S(_ALL, switch)
48 S(_ALL, typedef)
49 S(_ALL, union)
50 S(_ALL, unsigned)
51 S(_ALL, void)
52 S(_ALL, while)
53
54 /* C++ keywords */
55 S(_CXX, bool)
56 S(_CXX, catch)
57 S(_CXX, class)
58 S(_CXX, const_cast)
59 S(_CXX, delete)
60 S(_CXX, dynamic_cast)
61 S(_CXX, explicit)
62 S(_CXX, export)
63 S(_CXX, false)
64 S(_CXX, friend)
65 S(_CXX, mutable)
66 S(_CXX, namespace)
67 S(_CXX, new)
68 S(_CXX, operator)
69 S(_CXX, private)
70 S(_CXX, protected)
71 S(_CXX, public)
72 S(_CXX, reinterpret_cast)
73 S(_CXX, static_cast)
74 S(_CXX, template)
75 S(_CXX, this)
76 S(_CXX, throw)
77 S(_CXX, true)
78 S(_CXX, try)
79 S(_CXX, typeid)
80 S(_CXX, typename)
81 S(_CXX, using)
82 S(_CXX, virtual)
83 S(_CXX, wchar_t)
84
85 S(_C99|_GNUC, _Bool)
86
87 S(_C11, _Alignas)
88 S(_C11, _Atomic)
89 S(_C11, _Generic)
90 S(_C11, _Noreturn)
91 S(_C11, _Static_assert)
92
93 S(_ALL, __extension__)
94 S(_ALL, __builtin_classify_type)
95 S(_ALL, __builtin_va_list)
96 S(_ALL, __builtin_va_arg)
97 S(_ALL, __builtin_va_copy)
98 S(_ALL, __builtin_offsetof)
99 S(_ALL, __builtin_constant_p)
100 S(_ALL, __builtin_types_compatible_p)
101 S(_ALL, __builtin_isgreater)
102 S(_ALL, __builtin_isgreaterequal)
103 S(_ALL, __builtin_isless)
104 S(_ALL, __builtin_islessequal)
105 S(_ALL, __builtin_islessgreater)
106 S(_ALL, __builtin_isunordered)
107 S(_ALL, __PRETTY_FUNCTION__)
108 S(_ALL, __label__)
109 S(_MS, __FUNCSIG__)
110 S(_MS, __FUNCDNAME__)
111 #undef S
112
113 #define S(mode, x, val) T(mode, T_##x, #x, val)
114 S(_C99,            __func__,)
115 S(_ALL,            __FUNCTION__,           = T___func__)
116 S(_C11,             _Thread_local,         )
117 S(_ALL,            __thread,               = T__Thread_local)
118 S(_ALL,              signed,               )
119 S(_ALL,            __signed,               = T_signed)
120 S(_ALL,            __signed__,             = T_signed)
121 S(_C99|_GNUC,       _Complex,              )
122 S(_ALL,            __complex__,            = T__Complex)
123 S(_ALL,            __complex,              = T__Complex)
124 S(_C99|_GNUC,       _Imaginary,            )
125 S(_ALL,            __real__,               )
126 S(_ALL,            __real,                 = T___real__)
127 S(_ALL,            __imag__,               )
128 S(_ALL,            __imag,                 = T___imag__)
129 S(_C11,             _Alignof,              )
130 S(_ALL,            __alignof__,            = T__Alignof)
131 S(_ALL,            __alignof,              = T__Alignof)
132 S(_MS,              _alignof,              = T__Alignof)
133 S(_ALL,              const,                )
134 S(_ALL,            __const,                = T_const)
135 S(_ALL,            __const__,              = T_const)
136 S(_C99,              restrict,             )
137 S(_ALL,            __restrict__,           = T_restrict)
138 S(_ALL,            __restrict,             = T_restrict)
139 S(_MS,              _restrict,             = T_restrict)
140 S(_ALL,              asm,                  )
141 S(_ALL,            __asm__,                = T_asm)
142 S(_MS,              _asm,                  = T_asm)
143 S(_ALL,            __asm,                  = T_asm)
144 S(_ALL,              volatile,             )
145 S(_ALL,            __volatile,             = T_volatile)
146 S(_ALL,            __volatile__,           = T_volatile)
147 S(_C99|_CXX|_GNUC,   inline,               )
148 S(_ALL,            __inline,               = T_inline)
149 S(_ALL,            __inline__,             = T_inline)
150 S(_GNUC,             typeof,               )
151 S(_ALL,            __typeof,               = T_typeof)
152 S(_ALL,            __typeof__,             = T_typeof)
153 S(_ALL,            __attribute__,          )
154
155 S(_ALL,            __builtin_va_start,     )
156 S(_ALL,            __builtin_stdarg_start, = T___builtin_va_start)
157
158 S(_MS,              _near,                 )
159 S(_MS,             __near,                 = T__near)
160 S(_MS,              _far,                  )
161 S(_MS,             __far,                  = T__far)
162 S(_MS,               cdecl,                )
163 S(_MS,              _cdecl,                = T_cdecl)
164 S(_MS,             __cdecl,                = T_cdecl)
165 S(_MS,              _stdcall,              )
166 S(_MS,             __stdcall,              = T__stdcall)
167 S(_MS,              _fastcall,             )
168 S(_MS,             __fastcall,             = T__fastcall)
169 S(_MS,             __thiscall,             )
170 S(_MS,              _forceinline,          )
171 S(_MS,             __forceinline,          = T__forceinline)
172 S(_MS,             __unaligned,            )
173 S(_MS,              _assume,               )
174 S(_MS,             __assume,               = T__assume)
175 S(_MS,              _try,                  )
176 S(_MS,             __try,                  = T__try)
177 S(_MS,              _finally,              )
178 S(_MS,             __finally,              = T__finally)
179 S(_MS,              _leave,                )
180 S(_MS,             __leave,                = T__leave)
181 S(_MS,              _except,               )
182 S(_MS,             __except,               = T__except)
183 S(_MS,              _declspec,             )
184 S(_MS,             __declspec,             = T__declspec)
185 S(_MS,              _based,                )
186 S(_MS,             __based,                = T__based)
187 S(_MS,             __noop,                 )
188
189 S(_MS,             __ptr32,                )
190 S(_MS,             __ptr64,                )
191 S(_MS,             __sptr,                 )
192 S(_MS,             __uptr,                 )
193 S(_MS,              _w64,                  )
194 S(_MS,             __w64,                  = T__w64)
195
196 S(_MS,              _int8,                 )
197 S(_MS,             __int8,                 = T__int8)
198 S(_MS,              _int16,                )
199 S(_MS,             __int16,                = T__int16)
200 S(_MS,              _int32,                )
201 S(_MS,             __int32,                = T__int32)
202 S(_MS,              _int64,                )
203 S(_MS,             __int64,                = T__int64)
204 S(_MS,              _int128,               )
205 S(_MS,             __int128,               = T__int128)
206 #undef S
207
208 /* Redefine required macros for MinGW headers */
209 #if defined(__MINGW32__) || defined(__CYGWIN__)
210 #define __stdcall __attribute__((__stdcall__))
211 #define __fastcall __attribute__((__fastcall__))
212 #define __cdecl __attribute__((__cdecl__))
213 #endif