1 // Defines the Model Definition Language (MDL)
22 #define AELEMENTEXPR_LABEL 1
23 #define AELEMENTEXPR_SUB 2
24 #define AELEMENTEXPR_ADD 3
25 #define AELEMENTEXPR_MULT 4
26 #define AELEMENTEXPR_LIT 5
27 #define AELEMENTEXPR_FIELD 6
28 #define AELEMENTEXPR_FIELDARRAY 7
29 #define AELEMENTEXPR_NULL 8
30 #define AELEMENTEXPR_DIV 12
31 #define AELEMENTEXPR_CAST 13
35 AElementexpr(AElementexpr *l, AElementexpr *r, int op);
36 AElementexpr(Literal *lit);
37 AElementexpr(Label *lab);
38 AElementexpr(char *ctype, AElementexpr *l);
39 AElementexpr(AElementexpr *l,Field *f);
41 AElementexpr(AElementexpr *l,Field *f, AElementexpr * i);
42 AElementexpr * getleft();
43 AElementexpr * getright();
46 Literal * getliteral();
54 AElementexpr *left, *right;
66 Type(char *s, int n, Label** l);
69 Label * getlabel(int i);
83 TypeEle(char *s, int n, AElementexpr ** e);
86 AElementexpr * getexpr(int i);
97 #define AQUANTIFIER_SING 1
98 #define AQUANTIFIER_TUPLE 2
99 #define AQUANTIFIER_RANGE 3
103 AQuantifier(Label *l,Type *t, Set *s);
104 AQuantifier(Label *l,Type *tl, Label *r, Type *tr, Set *s);
105 AQuantifier(Label *l,AElementexpr *e1, AElementexpr *e2);
113 AElementexpr * getlower();
114 AElementexpr * getupper();
118 AElementexpr *lower, *upper;
129 #define STATEMENTA_OR 1
130 #define STATEMENTA_AND 2
131 #define STATEMENTA_NOT 3
132 #define STATEMENTA_EQUALS 4
133 #define STATEMENTA_LT 5
134 #define STATEMENTA_TRUE 6
135 #define STATEMENTA_SET 7
136 #define STATEMENTA_VALID 8
140 Statementa(Statementa *l, Statementa *r, int t);
141 Statementa(Statementa *l);
143 Statementa(AElementexpr *l, AElementexpr *r, int t);
144 Statementa(AElementexpr *l, Set *s);
145 Statementa(AElementexpr *, char *);
148 Statementa * getleft();
149 Statementa * getright();
150 AElementexpr * getleftee();
151 AElementexpr * getrightee();
153 char *getvalidtype();
158 Statementa *left,*right;
159 AElementexpr *leftee, *rightee;
168 #define STATEMENTB_SING 1
169 #define STATEMENTB_TUPLE 2
173 Statementb(TypeEle *tl,AElementexpr *l, Setlabel *sl);
174 Statementb(TypeEle *tl,AElementexpr *l, TypeEle *tr,AElementexpr *r, Setlabel *sl);
176 virtual void print();
178 AElementexpr *getleft();
179 AElementexpr *getright();
180 Setlabel *getsetlabel();
181 TypeEle * gettleft();
182 TypeEle * gettright();
185 TypeEle *tleft, *tright;
186 AElementexpr *left, *right;
199 Rule(AQuantifier **q, int nq);
200 void setstatementa(Statementa *sa);
201 void setstatementb(Statementb *sb);
205 AQuantifier* getquant(int i);
206 Statementa *getstatementa();
207 Statementb *getstatementb();
216 AQuantifier **quantifiers;
217 Statementa *statementa;
218 Statementb *statementb;