typedef enum expression_kind_t {
EXPR_ERROR = 1,
EXPR_REFERENCE,
- EXPR_REFERENCE_ENUM_VALUE,
+ EXPR_ENUM_CONSTANT,
EXPR_LITERAL_BOOLEAN,
EXPR_LITERAL_INTEGER,
- EXPR_LITERAL_INTEGER_OCTAL,
- EXPR_LITERAL_INTEGER_HEXADECIMAL,
EXPR_LITERAL_FLOATINGPOINT,
- EXPR_LITERAL_FLOATINGPOINT_HEXADECIMAL,
EXPR_LITERAL_CHARACTER,
EXPR_LITERAL_WIDE_CHARACTER,
EXPR_LITERAL_MS_NOOP, /**< MS __noop extension */
#define EXPR_LITERAL_CASES \
EXPR_LITERAL_BOOLEAN: \
case EXPR_LITERAL_INTEGER: \
- case EXPR_LITERAL_INTEGER_OCTAL: \
- case EXPR_LITERAL_INTEGER_HEXADECIMAL: \
case EXPR_LITERAL_FLOATINGPOINT: \
- case EXPR_LITERAL_FLOATINGPOINT_HEXADECIMAL: \
case EXPR_LITERAL_CHARACTER: \
case EXPR_LITERAL_WIDE_CHARACTER: \
case EXPR_LITERAL_MS_NOOP
struct if_statement_t {
statement_base_t base;
+ scope_t scope;
expression_t *condition;
statement_t *true_statement;
statement_t *false_statement;
struct switch_statement_t {
statement_base_t base;
+ scope_t scope;
expression_t *expression;
statement_t *body;
case_label_statement_t *first_case, *last_case; /**< List of all cases, including default. */
struct while_statement_t {
statement_base_t base;
+ scope_t scope;
expression_t *condition;
statement_t *body;
};
struct do_while_statement_t {
statement_base_t base;
+ scope_t scope;
expression_t *condition;
statement_t *body;
};
struct for_statement_t {
statement_base_t base;
+ scope_t scope;
expression_t *initialisation;
expression_t *condition;
expression_t *step;
statement_t *body;
- scope_t scope;
bool condition_reachable:1;
bool step_reachable:1;
};