Blame


1 c5b9ff9f 2003-12-04 devnull typedef void (*Inst)(void);
2 c5b9ff9f 2003-12-04 devnull #define STOP (Inst) 0
3 c5b9ff9f 2003-12-04 devnull
4 c5b9ff9f 2003-12-04 devnull typedef struct Symbol Symbol;
5 c5b9ff9f 2003-12-04 devnull typedef union Datum Datum;
6 c5b9ff9f 2003-12-04 devnull typedef struct Formal Formal;
7 c5b9ff9f 2003-12-04 devnull typedef struct Saveval Saveval;
8 c5b9ff9f 2003-12-04 devnull typedef struct Fndefn Fndefn;
9 c5b9ff9f 2003-12-04 devnull typedef union Symval Symval;
10 c5b9ff9f 2003-12-04 devnull
11 c5b9ff9f 2003-12-04 devnull union Symval { /* value of a symbol */
12 c5b9ff9f 2003-12-04 devnull double val; /* VAR */
13 c5b9ff9f 2003-12-04 devnull double (*ptr)(double); /* BLTIN */
14 c5b9ff9f 2003-12-04 devnull Fndefn *defn; /* FUNCTION, PROCEDURE */
15 c5b9ff9f 2003-12-04 devnull char *str; /* STRING */
16 c5b9ff9f 2003-12-04 devnull };
17 c5b9ff9f 2003-12-04 devnull
18 c5b9ff9f 2003-12-04 devnull struct Symbol { /* symbol table entry */
19 c5b9ff9f 2003-12-04 devnull char *name;
20 c5b9ff9f 2003-12-04 devnull long type;
21 c5b9ff9f 2003-12-04 devnull Symval u;
22 c5b9ff9f 2003-12-04 devnull struct Symbol *next; /* to link to another */
23 c5b9ff9f 2003-12-04 devnull };
24 c5b9ff9f 2003-12-04 devnull Symbol *install(char*, int, double), *lookup(char*);
25 c5b9ff9f 2003-12-04 devnull
26 c5b9ff9f 2003-12-04 devnull union Datum { /* interpreter stack type */
27 c5b9ff9f 2003-12-04 devnull double val;
28 c5b9ff9f 2003-12-04 devnull Symbol *sym;
29 c5b9ff9f 2003-12-04 devnull };
30 c5b9ff9f 2003-12-04 devnull
31 c5b9ff9f 2003-12-04 devnull struct Saveval { /* saved value of variable */
32 c5b9ff9f 2003-12-04 devnull Symval val;
33 c5b9ff9f 2003-12-04 devnull long type;
34 c5b9ff9f 2003-12-04 devnull Saveval *next;
35 c5b9ff9f 2003-12-04 devnull };
36 c5b9ff9f 2003-12-04 devnull
37 c5b9ff9f 2003-12-04 devnull struct Formal { /* formal parameter */
38 c5b9ff9f 2003-12-04 devnull Symbol *sym;
39 c5b9ff9f 2003-12-04 devnull Saveval *save;
40 c5b9ff9f 2003-12-04 devnull Formal *next;
41 c5b9ff9f 2003-12-04 devnull };
42 c5b9ff9f 2003-12-04 devnull
43 c5b9ff9f 2003-12-04 devnull struct Fndefn { /* formal parameter */
44 c5b9ff9f 2003-12-04 devnull Inst *code;
45 c5b9ff9f 2003-12-04 devnull Formal *formals;
46 c5b9ff9f 2003-12-04 devnull int nargs;
47 c5b9ff9f 2003-12-04 devnull };
48 c5b9ff9f 2003-12-04 devnull
49 c5b9ff9f 2003-12-04 devnull extern Formal *formallist(Symbol*, Formal*);
50 c5b9ff9f 2003-12-04 devnull extern double Fgetd(int);
51 c5b9ff9f 2003-12-04 devnull extern int moreinput(void);
52 c5b9ff9f 2003-12-04 devnull extern void restore(Symbol*);
53 c5b9ff9f 2003-12-04 devnull extern void restoreall(void);
54 c5b9ff9f 2003-12-04 devnull extern void execerror(char*, char*);
55 c5b9ff9f 2003-12-04 devnull extern void define(Symbol*, Formal*), verify(Symbol*);
56 c5b9ff9f 2003-12-04 devnull extern Datum pop(void);
57 c5b9ff9f 2003-12-04 devnull extern void initcode(void), push(Datum), xpop(void), constpush(void);
58 c5b9ff9f 2003-12-04 devnull extern void varpush(void);
59 c5b9ff9f 2003-12-04 devnull #define div hocdiv
60 c5b9ff9f 2003-12-04 devnull extern void eval(void), add(void), sub(void), mul(void), div(void), mod(void);
61 c5b9ff9f 2003-12-04 devnull extern void negate(void), power(void);
62 c5b9ff9f 2003-12-04 devnull extern void addeq(void), subeq(void), muleq(void), diveq(void), modeq(void);
63 c5b9ff9f 2003-12-04 devnull
64 c5b9ff9f 2003-12-04 devnull extern Inst *progp, *progbase, prog[], *code(Inst);
65 c5b9ff9f 2003-12-04 devnull extern void assign(void), bltin(void), varread(void);
66 c5b9ff9f 2003-12-04 devnull extern void prexpr(void), prstr(void);
67 c5b9ff9f 2003-12-04 devnull extern void gt(void), lt(void), eq(void), ge(void), le(void), ne(void);
68 c5b9ff9f 2003-12-04 devnull extern void and(void), or(void), not(void);
69 c5b9ff9f 2003-12-04 devnull extern void ifcode(void), whilecode(void), forcode(void);
70 c5b9ff9f 2003-12-04 devnull extern void call(void), arg(void), argassign(void);
71 c5b9ff9f 2003-12-04 devnull extern void funcret(void), procret(void);
72 c5b9ff9f 2003-12-04 devnull extern void preinc(void), predec(void), postinc(void), postdec(void);
73 c5b9ff9f 2003-12-04 devnull extern void execute(Inst*);
74 c5b9ff9f 2003-12-04 devnull extern void printtop(void);
75 c5b9ff9f 2003-12-04 devnull
76 c5b9ff9f 2003-12-04 devnull extern double Log(double), Log10(double), Gamma(double), Sqrt(double), Exp(double);
77 c5b9ff9f 2003-12-04 devnull extern double Asin(double), Acos(double), Sinh(double), Cosh(double), integer(double);
78 c5b9ff9f 2003-12-04 devnull extern double Pow(double, double);
79 c5b9ff9f 2003-12-04 devnull
80 c5b9ff9f 2003-12-04 devnull extern void init(void);
81 c5b9ff9f 2003-12-04 devnull extern int yyparse(void);
82 c5b9ff9f 2003-12-04 devnull extern void execerror(char*, char*);
83 c5b9ff9f 2003-12-04 devnull extern void *emalloc(unsigned);