7 #define CAELEMENTEXPR_LABEL 1
8 #define CAELEMENTEXPR_SUB 2
9 #define CAELEMENTEXPR_ADD 3
10 #define CAELEMENTEXPR_MULT 4
11 #define CAELEMENTEXPR_LIT 5
12 #define CAELEMENTEXPR_NULL 8
13 #define CAELEMENTEXPR_SIZEOF 9
14 #define CAELEMENTEXPR_ELEMENT 10
15 #define CAELEMENTEXPR_RELATION 11
16 #define CAELEMENTEXPR_DIV 12
17 class CAElementexpr:public AElementexpr {
19 CAElementexpr(CAElementexpr *index, Setexpr *se);
20 CAElementexpr(Setexpr *se);
21 CAElementexpr(CAElementexpr *,Relation *r);
22 CAElementexpr(CAElementexpr *l, CAElementexpr *r, int op);
23 CAElementexpr(Literal *lit);
24 CAElementexpr(Label *lab);
26 CAElementexpr * getleft();
27 CAElementexpr * getright();
28 Setexpr * getsetexpr();
30 Relation * getrelation();
44 Expr(Expr *, Field *);
45 Expr(Expr *, Field *, CAElementexpr *);
51 CAElementexpr * getindex();
64 #define CSTATEMENTB_FIELDASSIGN 3
65 #define CSTATEMENTB_ARRAYASSIGN 4
67 class CStatementb:public Statementb {
70 CStatementb(Expr *l, Field *f, CAElementexpr *rvalue);
71 CStatementb(Expr *l, Field *f, CAElementexpr *index, CAElementexpr *rvalue);