-#define T(x,str,val) \
- assert(T_##x >= 0 && T_##x < T_LAST_TOKEN); \
- symbol = symbol_table_insert(str); \
- symbol->ID = T_##x; \
- token_symbols[T_##x] = symbol;
+#define T(mode,x,str,val) \
+ if (T_##x > 255) { \
+ assert(T_##x >= last_id); \
+ last_id = T_##x; \
+ } \
+ if (c_mode & (mode)) { \
+ assert(T_##x >= 0 && T_##x < T_LAST_TOKEN); \
+ symbol = symbol_table_insert(str); \
+ symbol->ID = T_##x; \
+ token_symbols[T_##x] = symbol; \
+ }