X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=ast.h;h=ce69810e152fbc7ea8e338ed0fe0e00bc89b3cf0;hb=cbb91c20268bed939c91654c3935bd33055118e7;hp=b9b2ab875a6df7dcf1f6fd1c1e8ade2bfd93d695;hpb=3567abbd64d4cb5a0db5e434955c83a924635d6f;p=xonotic%2Fgmqcc.git diff --git a/ast.h b/ast.h index b9b2ab8..ce69810 100644 --- a/ast.h +++ b/ast.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 + * Copyright (C) 2012, 2013 * Wolfgang Bumiller * * Permission is hereby granted, free of charge, to any person obtaining a copy of @@ -143,6 +143,9 @@ typedef struct #define AST_FLAG_VARIADIC (1<<0) #define AST_FLAG_NORETURN (1<<1) #define AST_FLAG_INLINE (1<<2) +#define AST_FLAG_INITIALIZED (1<<3) +#define AST_FLAG_DEPRECATED (1<<4) +#define AST_FLAG_TYPE_MASK (AST_FLAG_VARIADIC | AST_FLAG_NORETURN) /* Value * @@ -156,6 +159,7 @@ struct ast_value_s ast_expression_common expression; const char *name; + const char *desc; /* int vtype; @@ -324,6 +328,7 @@ struct ast_member_s ast_expression *owner; unsigned int field; const char *name; + bool rvalue; }; ast_member* ast_member_new(lex_ctx ctx, ast_expression *owner, unsigned int field, const char *name); void ast_member_delete(ast_member*); @@ -520,9 +525,11 @@ struct ast_label_s const char *name; ir_block *irblock; ast_goto **gotos; + /* means it has not yet been defined */ + bool undefined; }; -ast_label* ast_label_new(lex_ctx ctx, const char *name); +ast_label* ast_label_new(lex_ctx ctx, const char *name, bool undefined); void ast_label_delete(ast_label*); void ast_label_register_goto(ast_label*, ast_goto*);