crude -g implementation
[cparser] / token_t.h
index 21669af..c8e0e10 100644 (file)
--- a/token_t.h
+++ b/token_t.h
@@ -2,11 +2,13 @@
 #define TOKEN_T_H
 
 #include <stdio.h>
+#include "string_rep.h"
 #include "symbol.h"
 #include "symbol_table.h"
+#include "type.h"
 
 typedef enum {
-#define T(x,str,val) T_##x val,
+#define T(mode,x,str,val) T_##x val,
 #define TS(x,str,val) T_##x val,
 #include "tokens.inc"
 #undef TS
@@ -17,23 +19,33 @@ typedef enum {
 } token_type_t;
 
 typedef enum {
-#define T(x,str,val) TP_##x val,
+#define T(mode,x,str,val) TP_##x val,
 #define TS(x,str,val) TP_##x val,
-#include "tokens.inc"
+#include "tokens_preprocessor.inc"
 #undef TS
 #undef T
-
-       TP_EOF   = T_EOF,
-       TP_ERROR = T_ERROR
 } preprocessor_token_type_t;
 
+typedef struct source_position_t source_position_t;
+struct source_position_t {
+       const char *input_name;
+       unsigned    linenr;
+};
+
+/* position used for "builtin" declarations/types */
+extern source_position_t builtin_source_position;
+
 typedef struct {
        int type;
        union {
-               symbol_t   *symbol;
-               int         intvalue;
-               const char *string;
+               symbol_t      *symbol;
+               long long      intvalue;
+               long double    floatvalue;
+               string_t       string;
+               wide_string_t  wide_string;
        } v;
+       type_t            *datatype;
+       source_position_t  source_position;
 } token_t;
 
 void init_tokens(void);