0
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
1 /* Copyright 1990-2011, Jsoftware Inc. All rights reserved. */ |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
2 /* License in license.txt. */ |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
3 /* */ |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
4 /* Adverbs: Macros and Defined-Constants (for Adverbs and Conjunctions) */ |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
5 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
6 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
7 #define GAPPEND (I)0 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
8 #define GINSERT (I)3 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
9 #define GTRAIN (I)6 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
10 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
11 #define COMPOSE(c) ((c)==CAT||(c)==CATCO||(c)==CAMP||(c)==CAMPCO) |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
12 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
13 #define CONJCASE(a,w) (2*!(VERB&AT(a))+!(VERB&AT(w))) |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
14 #define NN 3 /* NOUN NOUN */ |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
15 #define NV 2 /* NOUN VERB */ |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
16 #define VN 1 /* VERB NOUN */ |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
17 #define VV 0 /* VERB VERB */ |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
18 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
19 #define DECLF V*sv=VAV(self);A fs=sv->f; \ |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
20 AF f1=fs?VAV(fs)->f1:0,f2=fs?VAV(fs)->f2:0 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
21 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
22 #define DECLG V*sv=VAV(self);A gs=sv->g; \ |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
23 AF g1=gs?VAV(gs)->f1:0,g2=gs?VAV(gs)->f2:0 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
24 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
25 #define DECLFG DECLF; A gs=sv->g; \ |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
26 AF g1=gs?VAV(gs)->f1:0,g2=gs?VAV(gs)->f2:0 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
27 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
28 #define DECLFGH DECLFG; A hs=sv->h; \ |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
29 AF h1=hs?VAV(hs)->f1:0,h2=hs?VAV(hs)->f2:0 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
30 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
31 #define PREF1(f) {I m=mr(self); F1RANK( m,f,self);} |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
32 #define PREF2(f) {I l=lr(self),r=rr(self); F2RANK(l,r,f,self);} |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
33 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
34 #define AS1(f,exp) DF1(f){PROLOG;DECLF ;A z; PREF1(f); z=(exp); EPILOG(z);} |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
35 #define AS2(f,exp) DF2(f){PROLOG;DECLF ;A z; PREF2(f); z=(exp); EPILOG(z);} |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
36 #define CS1(f,exp) DF1(f){PROLOG;DECLFG;A z; PREF1(f); z=(exp); EPILOG(z);} |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
37 #define CS2(f,exp) DF2(f){PROLOG;DECLFG;A z; PREF2(f); z=(exp); EPILOG(z);} |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
38 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
39 #define ADERIV(id,f1,f2,m,l,r) fdef(id,VERB,(AF)(f1),(AF)(f2),w,0L,0L,0L,(I)(m),(I)(l),(I)(r)) |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
40 #define CDERIV(id,f1,f2,m,l,r) fdef(id,VERB,(AF)(f1),(AF)(f2),a,w ,0L,0L,(I)(m),(I)(l),(I)(r)) |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
41 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
42 #define ASSERTVV(a,w) RZ(a&&w); ASSERT(VERB&AT(a)&&VERB&AT(w),EVDOMAIN) |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
43 #define ASSERTVN(a,w) RZ(a&&w); ASSERT(VERB&AT(a)&&NOUN&AT(w),EVDOMAIN) |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
44 #define ASSERTNN(a,w) RZ(a&&w); ASSERT(NOUN&AT(a)&&NOUN&AT(w),EVDOMAIN) |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
45 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
46 #define SCALARFN(id,w) (id==ID(w)&&!lr(w)&&!rr(w)) |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
47 |
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
diff
changeset
|
48 #define FIT0(c,v) (CFIT==v->id&&c==ID(v->f)&&equ(zero,v->g)) |