--- ray/src/common/calcomp.h 1989/05/18 08:33:47 1.3 +++ ray/src/common/calcomp.h 1991/11/12 16:55:05 2.1 @@ -15,11 +15,12 @@ #define ARG 6 #define TICK 7 #define SYM 8 - /* also: '+', '-', '*', '/', '^', '=' */ + /* also: '+', '-', '*', '/', '^', '=', ':' */ typedef struct { char *fname; /* function name */ - int nargs; /* # of required arguments */ + short nargs; /* # of required arguments */ + short atyp; /* assignment type (':' or '=') */ double (*f)(); /* pointer to function */ } LIBR; /* a library function */ @@ -44,11 +45,17 @@ typedef struct epnode { typedef struct vardef VARDEF; /* a variable definition */ +#define MAXWORD 63 /* maximum word/id length */ +#define CNTXMARK '`' /* context mark */ + +#define isid(c) (isalnum(c) || (c) == '_' || \ + (c) == '.' || (c) == CNTXMARK) + extern double eval(), varvalue(), chanvalue(), funvalue(); extern double argument(), getnum(); extern double (*eoper[])(); extern int getinum(); -extern char *getname(), *argfun(); +extern char *getname(), *qualname(), *setcontext(), *argfun(); extern EPNODE *eparse(), *ekid(), *dlookup(), *dpop(), *dfirst(), *dnext(); extern EPNODE *getdefn(), *getchan(); extern EPNODE *getE1(), *getE2(), *getE3(), *getE4(), *getE5(), *rconst();