TS(STRING_LITERAL, "string literal",)
TS(WIDE_STRING_LITERAL, "wide string literal",)
-#define PUNCTUATOR(name,string,val) T(_ALL,name,string,val)
+#define ALTERNATE(name, val) T(_CXX, name, #name, val)
+#define PUNCTUATOR(name, string, val) T(_ALL, name, string, val)
#include "tokens_punctuator.inc"
#undef PUNCTUATOR
+#undef ALTERNATE
#define S(mode,x) T(mode,x,#x,)
S(_ALL, auto)
S(_ALL, void)
S(_ALL, while)
+/* C++ keywords */
+#undef bool
+S(_CXX, bool)
+#define bool _Bool
+S(_CXX, catch)
+S(_CXX, class)
+S(_CXX, const_cast)
+S(_CXX, delete)
+S(_CXX, dynamic_cast)
+S(_CXX, explicit)
+S(_CXX, export)
+S(_CXX, false)
+S(_CXX, friend)
+S(_CXX, mutable)
+S(_CXX, namespace)
+S(_CXX, new)
+S(_CXX, operator)
+S(_CXX, private)
+S(_CXX, protected)
+S(_CXX, public)
+S(_CXX, reinterpret_cast)
+S(_CXX, static_cast)
+S(_CXX, template)
+S(_CXX, this)
+S(_CXX, throw)
+S(_CXX, true)
+S(_CXX, try)
+S(_CXX, typeid)
+S(_CXX, typename)
+S(_CXX, using)
+S(_CXX, virtual)
+S(_CXX, wchar_t)
+
S(_C99|_GNUC, _Bool)
S(_ALL, __thread)
S(_ALL, __extension__)
S(_ANSI|_C99, volatile, )
S(_ALL, __volatile, = T_volatile)
S(_ALL, __volatile__, = T_volatile)
-S(_C99, inline, )
+S(_C99|_CXX, inline, )
S(_ALL, __inline, = T_inline)
S(_ALL, __inline__, = T_inline)
S(_GNUC, typeof, )