|
|
1.1 root 1: #ifndef EXPR_H
2: #define EXPR_H
3: #ifndef UNIV_H
4: #include "univ.h"
5: #endif
6: #include "dtype.pub"
7: #include "op.h"
8: #include "format.pub"
9: >pri
10:
11: enum EDisc{
12: E_UNARY = 1,
13: E_BINARY = 2,
14: E_LCONST = 3,
15: E_DCONST = 4,
16: E_ID = 5,
17: E_SYMNODE = 6,
18: };
19:
20: char *OpName(Op);
21: >
22:
23: class Spy{
24: friend Expr;
25: friend Phrase;
26: Bls b;
27: Spy() {}
28: };
29:
30: class Expr : private PadRcv {
31: >pub
32: char pub_filler[4];
33: >pri
34: friend Phrase;
35: EDisc edisc;
36: char *under(Expr*);
37: char *left(Expr*);
38: char *evalunary(Frame*);
39: char *evalbinary(Frame*);
40: char *evalindex(Frame*,Expr*,long);
41: char *evalcast();
42: char *ascii(Frame*,int limit);
43: char *enumformat();
44: char *utypeformat(Frame*, Bls&);
45: char *getval(Frame*);
46: char *evaldotarrow(Frame*);
47: char *evalcall(Frame*);
48: char *evalassign(Frame*);
49: char *invalidoperands(char* =0);
50: char *evaltextcomma(Frame*, Bls&);
51: char *doevaltext(Frame*, Bls&);
52: Expr *actual(int i);
53: char *eval(Frame*);
54: char *evalenv(Frame*);
55: Index castcarte();
56: char *textunary();
57: char *textbinary();
58: char *evalrange();
59: char *floaterror();
60: char *evalflop();
61: void catchfpe();
62: char *enumid(Frame*);
63: static double *fp1;
64: static double *fp2;
65: static char *fpe;
66: >
67: PUBLIC(Expr,U_EXPR)
68: Expr();
69: Expr(EDisc, Op, Expr*, Expr*, Cslfd, char*, int, Symbol*);
70: char *id;
71: Symbol *sym;
72: Expr *sub1;
73: Expr *sub2;
74: DType type;
75: Cslfd val;
76: long addr;
77: Spy *spy;
78: short bitaddr;
79: char op;
80: char evalerr;
81: char *evaltext(Frame*, Bls&);
82: char *text();
83: Index carte(Frame*);
84: int format();
85: void setspy(long);
86: void reformat(int,int=0);
87: };
88:
89: Expr *E_Id(char*),
90: *E_Sym(Symbol*),
91: *E_Unary(Op,Expr*),
92: *E_Binary(Expr*,Op,Expr*),
93: *E_IConst(long);
94: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.