#ifndef _GE_EXPR_ #define _GE_EXPR_ #include typedef struct GE_EXPRESSION_ GE_EXPRESSION; struct GE_EXPRESSION_ { char *name; const char *type; GE_EXPRESSION *next; GE_EXPRESSION *down; GE_EXPRESSION *arg; GE_EXPRESSION *details; GE_EXPRESSION *parent; uint8_t is_range; uint8_t kind; uint16_t up_frame_count; int32_t column; }; typedef enum { is_count = 1, is_all, is_if, is_bracket, is_details, is_placeholder, is_equality, is_character, is_integer, is_real, is_string, } KindOfExpression; enum { plus_op = 1, minus_op, mult_op, div_op, idiv_op, imod_op, power_op, not_op, and_op, or_op, xor_op, implies_op, interval_op, eq_op, ne_op, le_op, lt_op, ge_op, gt_op, sim_op, nsim_op, } OpearationSymbol; extern GE_EXPRESSION *GE_new_expression(); extern void GE_push_back(GE_EXPRESSION **ex); extern GE_EXPRESSION *expr_bottom(GE_EXPRESSION *expr); extern GE_EXPRESSION *expr_last(GE_EXPRESSION *expr); #endif