| 1 |
< |
/* Copyright (c) 1986 Regents of the University of California */ |
| 1 |
> |
/* Copyright (c) 1992 Regents of the University of California */ |
| 2 |
|
|
| 3 |
|
/* SCCSid "$SunId$ LBL" */ |
| 4 |
|
|
| 7 |
|
* |
| 8 |
|
*/ |
| 9 |
|
/* EPNODE types */ |
| 10 |
< |
#define VAR 1 |
| 11 |
< |
#define NUM 2 |
| 12 |
< |
#define UMINUS 3 |
| 13 |
< |
#define CHAN 4 |
| 14 |
< |
#define FUNC 5 |
| 15 |
< |
#define ARG 6 |
| 16 |
< |
#define TICK 7 |
| 17 |
< |
#define SYM 8 |
| 10 |
> |
#define VAR 1 |
| 11 |
> |
#define NUM 2 |
| 12 |
> |
#define UMINUS 3 |
| 13 |
> |
#define CHAN 4 |
| 14 |
> |
#define FUNC 5 |
| 15 |
> |
#define ARG 6 |
| 16 |
> |
#define TICK 7 |
| 17 |
> |
#define SYM 8 |
| 18 |
|
/* also: '+', '-', '*', '/', '^', '=', ':' */ |
| 19 |
|
|
| 20 |
|
typedef struct { |
| 25 |
|
} LIBR; /* a library function */ |
| 26 |
|
|
| 27 |
|
typedef struct epnode { |
| 28 |
< |
int type; /* node type */ |
| 28 |
> |
int type; /* node type */ |
| 29 |
|
struct epnode *sibling; /* next child this level */ |
| 30 |
|
union { |
| 31 |
|
struct epnode *kid; /* first child */ |
| 32 |
< |
double num; /* number */ |
| 32 |
> |
double num; /* number */ |
| 33 |
|
char *name; /* symbol name */ |
| 34 |
|
int chan; /* channel number */ |
| 35 |
|
long tick; /* timestamp */ |
| 36 |
|
struct vardef { |
| 37 |
|
char *name; /* variable name */ |
| 38 |
< |
int nlinks; /* number of references */ |
| 38 |
> |
int nlinks; /* number of references */ |
| 39 |
|
struct epnode *def; /* definition */ |
| 40 |
|
LIBR *lib; /* library definition */ |
| 41 |
|
struct vardef *next; /* next in hash list */ |
| 45 |
|
|
| 46 |
|
typedef struct vardef VARDEF; /* a variable definition */ |
| 47 |
|
|
| 48 |
< |
#define MAXWORD 63 /* maximum word/id length */ |
| 49 |
< |
#define CNTXMARK '`' /* context mark */ |
| 48 |
> |
#define MAXWORD 63 /* maximum word/id length */ |
| 49 |
> |
#define CNTXMARK '`' /* context mark */ |
| 50 |
|
|
| 51 |
< |
#define isid(c) (isalnum(c) || (c) == '_' || \ |
| 51 |
> |
#define isid(c) (isalnum(c) || (c) == '_' || \ |
| 52 |
|
(c) == '.' || (c) == CNTXMARK) |
| 53 |
|
|
| 54 |
|
extern double eval(), varvalue(), chanvalue(), funvalue(); |
| 63 |
|
extern LIBR *liblookup(); |
| 64 |
|
extern long eclock; |
| 65 |
|
extern int nextc; |
| 66 |
– |
extern int errno; |
| 66 |
|
|
| 67 |
< |
#define evalue(ep) (*eoper[(ep)->type])(ep) |
| 67 |
> |
#define evalue(ep) (*eoper[(ep)->type])(ep) |