X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=token_t.h;h=317cc3be584714e48d58ab23a80226b52f283a21;hb=bac85a85987cc17958a445187ade7e76f2a83eff;hp=be48841cafae76aea7271e879effb6c9afea3c15;hpb=fbad4d6c6c4f43d7ae379d1ff48c1c1c21768edf;p=cparser diff --git a/token_t.h b/token_t.h index be48841..317cc3b 100644 --- a/token_t.h +++ b/token_t.h @@ -2,11 +2,13 @@ #define TOKEN_T_H #include +#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 @@ -16,13 +18,34 @@ typedef enum { T_ERROR = -2 } token_type_t; +typedef enum { +#define T(mode,x,str,val) TP_##x val, +#define TS(x,str,val) TP_##x val, +#include "tokens_preprocessor.inc" +#undef TS +#undef T +} 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; + const char *string; + wide_string_t wide_string; } v; + type_t *datatype; + source_position_t source_position; } token_t; void init_tokens(void);