X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast_t.h;h=f7598b8d9729da5e51592233a60752a988d91d2f;hb=8e32d3ef5acf95570f32c8f7a6c64e897170bdf6;hp=7d078eceaf86243556909806a0c703873ef6e3b4;hpb=f406801b369c6b4410f41d8ee9f467ccb7f02765;p=cparser diff --git a/ast_t.h b/ast_t.h index 7d078ec..f7598b8 100644 --- a/ast_t.h +++ b/ast_t.h @@ -2,6 +2,7 @@ #define AST_T_H #include +#include #include "ast.h" #include "symbol.h" @@ -153,6 +154,7 @@ struct array_access_expression_t { expression_t expression; expression_t *array_ref; expression_t *index; + bool flipped; /* index/ref was written in a 5[a] way */ }; struct sizeof_expression_t { @@ -217,21 +219,36 @@ typedef enum { typedef enum { INITIALIZER_VALUE, INITIALIZER_LIST, + INITIALIZER_STRING, + INITIALIZER_COUNT } initializer_type_t; -struct initializer_t { - initializer_type_t type; +struct initializer_base_t { + initializer_type_t type; }; struct initializer_value_t { - initializer_t initializer; - expression_t *value; + initializer_base_t initializer; + expression_t *value; }; struct initializer_list_t { - initializer_t initializer; - size_t len; - initializer_t *initializers[]; + initializer_base_t initializer; + size_t len; + initializer_t *initializers[]; +}; + +struct initializer_string_t { + initializer_base_t initializer; + const char *string; +}; + +union initializer_t { + initializer_type_t type; + initializer_base_t base; + initializer_value_t value; + initializer_list_t list; + initializer_string_t string; }; struct declaration_t { @@ -261,6 +278,7 @@ struct declaration_t { unsigned int value_number; /* used in ast2firm module */ ir_entity *entity; /* used in ast2firm module */ ir_node *block; /* used in ast2firm module */ + tarval *enum_val; /* used in ast2firm module */ } v; };