X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=ast.h;h=ce69810e152fbc7ea8e338ed0fe0e00bc89b3cf0;hb=36d02d010e2dbfb76247a6c09a919b4710efc4da;hp=5dee4443825687eb7ebb0ef55e6457bb74bc09b8;hpb=f1fa8f6055953368006a0877d2938f5f2693c012;p=xonotic%2Fgmqcc.git diff --git a/ast.h b/ast.h index 5dee444..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 @@ -142,6 +142,10 @@ typedef struct } ast_expression_common; #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 * @@ -155,6 +159,7 @@ struct ast_value_s ast_expression_common expression; const char *name; + const char *desc; /* int vtype; @@ -323,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*); @@ -519,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*);