typedef struct Symbol Symbol;
typedef union Datum Datum;
typedef struct Formal Formal;
typedef struct Saveval Saveval;
typedef struct Fndefn Fndefn;
typedef union Symval Symval;
union Symval { /* value of a symbol */
double val; /* VAR */
double (*ptr)(double); /* BLTIN */
Fndefn *defn; /* FUNCTION, PROCEDURE */
char *str; /* STRING */
};
struct Symbol { /* symbol table entry */
char *name;
long type;
Symval u;
struct Symbol *next; /* to link to another */
};
Symbol *install(char*, int, double), *lookup(char*);
union Datum { /* interpreter stack type */
double val;
Symbol *sym;
};
struct Saveval { /* saved value of variable */
Symval val;
long type;
Saveval *next;
};