/* test of a fragment of colp */ /* this program will be scaled up to a "broker" */ #include #include #include /* #include "coltests.h" */ #define COLPORT 20027 #define BUFSIZE 1024 #define HALFBUF 512 #define APP 0 #define ABS 1 #define CIC 2 #define CRC 3 #define CSC 4 #define ID 5 #define IND 6 #define CONS 7 #define NIL 8 #define TID 9 /* COLtoC parser */ struct cterm; struct appterm; struct appterm { struct cterm *left; struct cterm *right; }; struct cterm { char ctype; union{ char sval[512]; int ival; double dval; struct appterm appval; struct cterm * absval; } val; struct cterm * next; }; struct cterm *serializeterm(struct cterm *); void * match[1024]; /* global dispatch table - pointers to functions */ void inittable(); struct cterm * tocterm(struct cterm *term); int toint(struct cterm *term); double todouble(struct cterm *term); char * tostring(struct cterm *term); struct cterm* itocterm(int x); struct cterm* dtocterm(double x); struct cterm* stocterm(char* x); struct cterm *nthterm(struct cterm *term, int n); struct cterm *idtocterm(int i); struct cterm *mkapp2(struct cterm* f, struct cterm* r1,struct cterm* r2); struct cterm *mkappterm(struct cterm* left, struct cterm* right); struct cterm *app1(int leftID, struct cterm* right); struct cterm *app2(int fID, struct cterm* r1,struct cterm* r2);