10 CAElementexpr::CAElementexpr(CAElementexpr *index, Setexpr *se) {
11 left=index;right=NULL;type=CAELEMENTEXPR_ELEMENT;
16 CAElementexpr::CAElementexpr(CAElementexpr *l, CAElementexpr *r, int op) {
17 left=l;right=r;type=op;
20 CAElementexpr::CAElementexpr(Literal *lit) {
22 type=CAELEMENTEXPR_LIT;
25 CAElementexpr::CAElementexpr(Label *lab) {
27 type=CAELEMENTEXPR_LABEL;
29 CAElementexpr::CAElementexpr() {
30 type=CAELEMENTEXPR_NULL;
33 CAElementexpr * CAElementexpr::getleft() {
34 return (CAElementexpr *) left;
37 CAElementexpr * CAElementexpr::getright() {
38 return (CAElementexpr *) right;
41 Relation * CAElementexpr::getrelation() {
45 CAElementexpr::CAElementexpr(CAElementexpr *index, Relation *r) {
46 left=index;right=NULL;type=CAELEMENTEXPR_RELATION;
50 CAElementexpr::CAElementexpr(Setexpr *se) {
52 type=CAELEMENTEXPR_SIZEOF;
56 void CAElementexpr::print() {
58 case CAELEMENTEXPR_LABEL:
61 case CAELEMENTEXPR_NULL:
64 case CAELEMENTEXPR_RELATION:
69 case CAELEMENTEXPR_SUB:
74 case CAELEMENTEXPR_ADD:
79 case CAELEMENTEXPR_MULT:
84 case CAELEMENTEXPR_DIV:
89 case CAELEMENTEXPR_LIT:
92 case CAELEMENTEXPR_SIZEOF:
97 case CAELEMENTEXPR_ELEMENT:
106 Setexpr * CAElementexpr::getsetexpr() {
117 Expr::Expr(Label *l) {
122 Expr::Expr(Expr *e, Field *f) {
123 field=f;expr=e; type=EXPR_FIELD;
126 Expr::Expr(char *ctype, Expr *e) {
132 char * Expr::getcasttype() {
136 Expr::Expr(Expr *e, Field *f, CAElementexpr *cae) {
137 field=f;expr=e;index=cae;
141 Expr * Expr::getexpr() {
145 int Expr::gettype() {
149 Field * Expr::getfield() {
153 Label * Expr::getlabel() {
157 CAElementexpr * Expr::getindex() {
172 printf("cast(%s,",casttype);
194 void CStatementb::print() {
196 case CSTATEMENTB_ARRAYASSIGN:
205 case CSTATEMENTB_FIELDASSIGN:
215 CStatementb::CStatementb(Expr *l, Field *f, CAElementexpr *rvalue) {
219 type=CSTATEMENTB_FIELDASSIGN;
222 CStatementb::CStatementb(Expr *l, Field *f, CAElementexpr *index, CAElementexpr *rvalue) {
227 type=CSTATEMENTB_ARRAYASSIGN;
230 Expr * CStatementb::getexpr() {
234 Field * CStatementb::getfield() {