+#ifndef TS
+#define TS(x,str,val)
+#endif
+
+TS(HEADERNAME, "header name", = 256)
+TS(IDENTIFIER, "identifier",)
+TS(NUMBER, "number",)
+TS(CHARACTER_CONSTANT, "character constant",)
+TS(WIDE_CHARACTER_CONSTANT, "character constant",)
+TS(STRING_LITERAL, "string literal",)
+TS(WIDE_STRING_LITERAL, "wide string literal",)
+TS(PUNCTUATOR, "punctuator",)
+TS(NEWLINE, "newline", = '\n')
+
+#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
+