15 |
|
#define ARG 6 |
16 |
|
#define TICK 7 |
17 |
|
#define SYM 8 |
18 |
< |
/* also: '+', '-', '*', '/', '^', '=' */ |
18 |
> |
/* also: '+', '-', '*', '/', '^', '=', ':' */ |
19 |
|
|
20 |
|
typedef struct { |
21 |
|
char *fname; /* function name */ |
22 |
< |
int nargs; /* # of required arguments */ |
22 |
> |
short nargs; /* # of required arguments */ |
23 |
> |
short atyp; /* assignment type (':' or '=') */ |
24 |
|
double (*f)(); /* pointer to function */ |
25 |
|
} LIBR; /* a library function */ |
26 |
|
|
45 |
|
|
46 |
|
typedef struct vardef VARDEF; /* a variable definition */ |
47 |
|
|
48 |
+ |
#define MAXWORD 63 /* maximum word/id length */ |
49 |
+ |
#define CNTXMARK '`' /* context mark */ |
50 |
+ |
|
51 |
+ |
#define isid(c) (isalnum(c) || (c) == '_' || \ |
52 |
+ |
(c) == '.' || (c) == CNTXMARK) |
53 |
+ |
|
54 |
|
extern double eval(), varvalue(), chanvalue(), funvalue(); |
55 |
|
extern double argument(), getnum(); |
56 |
|
extern double (*eoper[])(); |
57 |
|
extern int getinum(); |
58 |
< |
extern char *getname(), *argfun(); |
58 |
> |
extern char *getname(), *qualname(), *setcontext(), *argfun(); |
59 |
|
extern EPNODE *eparse(), *ekid(), *dlookup(), *dpop(), *dfirst(), *dnext(); |
60 |
|
extern EPNODE *getdefn(), *getchan(); |
61 |
|
extern EPNODE *getE1(), *getE2(), *getE3(), *getE4(), *getE5(), *rconst(); |