|
|
researchv10 Norman
typedef struct Symbol { /* symbol table entry */
char *name;
short type;
union {
double val; /* VAR */
double (*ptr)(); /* BLTIN */
int (**defn)(); /* FUNCTION, PROCEDURE */
char *str; /* STRING */
} u;
struct Symbol *next; /* to link to another */
} Symbol;
Symbol *install(), *lookup();
typedef union Datum { /* interpreter stack type */
double val;
Symbol *sym;
} Datum;
extern Datum pop();
extern xpop(), eval(), add(), sub(), mul(), div(), mod(), negate(), power();
extern addeq(), subeq(), muleq(), diveq(), modeq();
typedef int (*Inst)();
#define STOP (Inst) 0
extern Inst *progp, *progbase, prog[], *code();
extern assign(), bltin(), varpush(), constpush(), print(), varread();
extern prexpr(), prstr();
extern gt(), lt(), eq(), ge(), le(), ne(), and(), or(), not();
extern ifcode(), whilecode(), forcode(), call(), arg(), argassign();
extern funcret(), procret();
extern preinc(), predec(), postinc(), postdec();
extern argaddeq(), argsubeq(), argmuleq(), argdiveq(), argmodeq();
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.