EXPR_UNARY_FIRST,
EXPR_UNARY_NEGATE = EXPR_UNARY_FIRST,
EXPR_UNARY_PLUS,
- EXPR_UNARY_BITWISE_NEGATE,
+ EXPR_UNARY_COMPLEMENT,
EXPR_UNARY_NOT,
EXPR_UNARY_DEREFERENCE,
EXPR_UNARY_TAKE_ADDRESS,
EXPR_UNARY_DELETE,
EXPR_UNARY_DELETE_ARRAY,
EXPR_UNARY_THROW,
- EXPR_UNARY_LAST = EXPR_UNARY_THROW,
+ EXPR_UNARY_REAL,
+ EXPR_UNARY_IMAG,
+ EXPR_UNARY_LAST = EXPR_UNARY_IMAG,
EXPR_BINARY_FIRST,
EXPR_BINARY_ADD = EXPR_BINARY_FIRST,
#define EXPR_UNARY_CASES_MANDATORY \
EXPR_UNARY_NEGATE: \
case EXPR_UNARY_PLUS: \
- case EXPR_UNARY_BITWISE_NEGATE: \
+ case EXPR_UNARY_COMPLEMENT: \
case EXPR_UNARY_NOT: \
case EXPR_UNARY_DEREFERENCE: \
case EXPR_UNARY_TAKE_ADDRESS: \
case EXPR_UNARY_CAST: \
case EXPR_UNARY_ASSUME: \
case EXPR_UNARY_DELETE: \
- case EXPR_UNARY_DELETE_ARRAY
+ case EXPR_UNARY_DELETE_ARRAY: \
+ case EXPR_UNARY_IMAG: \
+ case EXPR_UNARY_REAL
/**
* unary expression with optional operand
* The base class of every expression.
*/
struct expression_base_t {
- expression_kind_t kind; /**< The expression kind. */
- type_t *type; /**< The type of the expression. */
- source_position_t source_position; /**< The source position of this expression. */
- bool parenthesized : 1;
+ expression_kind_t kind; /**< The expression kind. */
+ type_t *type; /**< The type of the expression. */
+ position_t pos; /**< The source position of this expression. */
+ bool parenthesized : 1;
#ifndef NDEBUG
- bool transformed : 1; /**< Set if this expression was transformed. */
+ bool transformed : 1; /**< Set if this expression was transformed. */
#endif
- bool implicit : 1; /**< compiler generated expression.
- Examples:
- select into anonymous structs
- implicit casts
- */
+ bool implicit : 1; /**< compiler generated expression.
+ Examples: select into anonymous structs,
+ implicit casts */
};
/**
};
struct designator_t {
- source_position_t source_position;
- symbol_t *symbol; /**< the symbol if any */
- expression_t *array_index; /**< the array index if any */
- designator_t *next;
+ position_t pos;
+ symbol_t *symbol; /**< the symbol if any */
+ expression_t *array_index; /**< the array index if any */
+ designator_t *next;
};
struct offsetof_expression_t {
* The base class of every statement.
*/
struct statement_base_t {
- statement_kind_t kind;
- statement_t *next; /**< Point to the next statement in a compound statement. */
- source_position_t source_position;
- statement_t *parent; /**< The Parent statement that controls the execution. */
- bool reachable; /**< True, if this statement is reachable. */
+ statement_kind_t kind;
+ statement_t *next; /**< Point to the next statement in a compound statement. */
+ position_t pos;
+ statement_t *parent; /**< The Parent statement that controls the execution. */
+ bool reachable; /**< True, if this statement is reachable. */
#ifndef NDEBUG
- bool transformed;
+ bool transformed;
#endif
};