17dd7cddfSDavid du Colombier /**************************************************************** 27dd7cddfSDavid du Colombier Copyright (C) Lucent Technologies 1997 37dd7cddfSDavid du Colombier All Rights Reserved 47dd7cddfSDavid du Colombier 57dd7cddfSDavid du Colombier Permission to use, copy, modify, and distribute this software and 67dd7cddfSDavid du Colombier its documentation for any purpose and without fee is hereby 77dd7cddfSDavid du Colombier granted, provided that the above copyright notice appear in all 87dd7cddfSDavid du Colombier copies and that both that the copyright notice and this 97dd7cddfSDavid du Colombier permission notice and warranty disclaimer appear in supporting 107dd7cddfSDavid du Colombier documentation, and that the name Lucent Technologies or any of 117dd7cddfSDavid du Colombier its entities not be used in advertising or publicity pertaining 127dd7cddfSDavid du Colombier to distribution of the software without specific, written prior 137dd7cddfSDavid du Colombier permission. 147dd7cddfSDavid du Colombier 157dd7cddfSDavid du Colombier LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 167dd7cddfSDavid du Colombier INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. 177dd7cddfSDavid du Colombier IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY 187dd7cddfSDavid du Colombier SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 197dd7cddfSDavid du Colombier WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 207dd7cddfSDavid du Colombier IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 217dd7cddfSDavid du Colombier ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 227dd7cddfSDavid du Colombier THIS SOFTWARE. 237dd7cddfSDavid du Colombier ****************************************************************/ 247dd7cddfSDavid du Colombier 253e12c5d1SDavid du Colombier extern int yywrap(void); 263e12c5d1SDavid du Colombier extern void setfname(Cell *); 273e12c5d1SDavid du Colombier extern int constnode(Node *); 287dd7cddfSDavid du Colombier extern char *strnode(Node *); 293e12c5d1SDavid du Colombier extern Node *notnull(Node *); 303e12c5d1SDavid du Colombier extern int yyparse(void); 313e12c5d1SDavid du Colombier 323e12c5d1SDavid du Colombier extern int yylex(void); 333e12c5d1SDavid du Colombier extern void startreg(void); 343e12c5d1SDavid du Colombier extern int input(void); 353e12c5d1SDavid du Colombier extern void unput(int); 36*a2c41696SDavid du Colombier extern void unputstr(const char *); 373e12c5d1SDavid du Colombier extern int yylook(void); 383e12c5d1SDavid du Colombier extern int yyback(int *, int); 393e12c5d1SDavid du Colombier extern int yyinput(void); 403e12c5d1SDavid du Colombier 417dd7cddfSDavid du Colombier extern void *compre(char *); 423e12c5d1SDavid du Colombier extern int hexstr(char **); 437dd7cddfSDavid du Colombier extern void quoted(char **, char **, char *); 447dd7cddfSDavid du Colombier extern int match(void *, char *, char *); 457dd7cddfSDavid du Colombier extern int pmatch(void *, char *, char *); 467dd7cddfSDavid du Colombier extern int nematch(void *, char *, char *); 477dd7cddfSDavid du Colombier extern int countposn(char *, int); 483e12c5d1SDavid du Colombier extern void overflow(void); 493e12c5d1SDavid du Colombier 503e12c5d1SDavid du Colombier extern int pgetc(void); 517dd7cddfSDavid du Colombier extern char *cursource(void); 523e12c5d1SDavid du Colombier 533e12c5d1SDavid du Colombier extern Node *nodealloc(int); 543e12c5d1SDavid du Colombier extern Node *exptostat(Node *); 553e12c5d1SDavid du Colombier extern Node *node1(int, Node *); 563e12c5d1SDavid du Colombier extern Node *node2(int, Node *, Node *); 573e12c5d1SDavid du Colombier extern Node *node3(int, Node *, Node *, Node *); 583e12c5d1SDavid du Colombier extern Node *node4(int, Node *, Node *, Node *, Node *); 593e12c5d1SDavid du Colombier extern Node *stat3(int, Node *, Node *, Node *); 603e12c5d1SDavid du Colombier extern Node *op2(int, Node *, Node *); 613e12c5d1SDavid du Colombier extern Node *op1(int, Node *); 623e12c5d1SDavid du Colombier extern Node *stat1(int, Node *); 633e12c5d1SDavid du Colombier extern Node *op3(int, Node *, Node *, Node *); 643e12c5d1SDavid du Colombier extern Node *op4(int, Node *, Node *, Node *, Node *); 653e12c5d1SDavid du Colombier extern Node *stat2(int, Node *, Node *); 663e12c5d1SDavid du Colombier extern Node *stat4(int, Node *, Node *, Node *, Node *); 677dd7cddfSDavid du Colombier extern Node *celltonode(Cell *, int); 683e12c5d1SDavid du Colombier extern Node *rectonode(void); 693e12c5d1SDavid du Colombier extern Node *makearr(Node *); 703e12c5d1SDavid du Colombier extern Node *pa2stat(Node *, Node *, Node *); 713e12c5d1SDavid du Colombier extern Node *linkum(Node *, Node *); 723e12c5d1SDavid du Colombier extern void defn(Cell *, Node *, Node *); 73*a2c41696SDavid du Colombier extern int isarg(const char *); 747dd7cddfSDavid du Colombier extern char *tokname(int); 753e12c5d1SDavid du Colombier extern Cell *(*proctab[])(Node **, int); 767dd7cddfSDavid du Colombier extern int ptoi(void *); 777dd7cddfSDavid du Colombier extern Node *itonp(int); 783e12c5d1SDavid du Colombier 793e12c5d1SDavid du Colombier extern void syminit(void); 807dd7cddfSDavid du Colombier extern void arginit(int, char **); 817dd7cddfSDavid du Colombier extern void envinit(char **); 823e12c5d1SDavid du Colombier extern Array *makesymtab(int); 833e12c5d1SDavid du Colombier extern void freesymtab(Cell *); 84*a2c41696SDavid du Colombier extern void freeelem(Cell *, const char *); 85*a2c41696SDavid du Colombier extern Cell *setsymtab(const char *, const char *, double, unsigned int, Array *); 86*a2c41696SDavid du Colombier extern int hash(const char *, int); 873e12c5d1SDavid du Colombier extern void rehash(Array *); 88*a2c41696SDavid du Colombier extern Cell *lookup(const char *, Array *); 893e12c5d1SDavid du Colombier extern double setfval(Cell *, double); 90*a2c41696SDavid du Colombier extern void funnyvar(Cell *, const char *); 91*a2c41696SDavid du Colombier extern char *setsval(Cell *, const char *); 927dd7cddfSDavid du Colombier extern double getfval(Cell *); 937dd7cddfSDavid du Colombier extern char *getsval(Cell *); 94*a2c41696SDavid du Colombier extern char *getpssval(Cell *); /* for print */ 95*a2c41696SDavid du Colombier extern char *tostring(const char *); 96*a2c41696SDavid du Colombier extern char *qstring(const char *, int); 973e12c5d1SDavid du Colombier 98219b2ee8SDavid du Colombier extern void recinit(unsigned int); 993e12c5d1SDavid du Colombier extern void initgetrec(void); 1007dd7cddfSDavid du Colombier extern void makefields(int, int); 1017dd7cddfSDavid du Colombier extern void growfldtab(int n); 1027dd7cddfSDavid du Colombier extern int getrec(char **, int *, int); 1037dd7cddfSDavid du Colombier extern void nextfile(void); 1047dd7cddfSDavid du Colombier extern int readrec(char **buf, int *bufsize, FILE *inf); 1057dd7cddfSDavid du Colombier extern char *getargv(int); 1067dd7cddfSDavid du Colombier extern void setclvar(char *); 1073e12c5d1SDavid du Colombier extern void fldbld(void); 1083e12c5d1SDavid du Colombier extern void cleanfld(int, int); 1093e12c5d1SDavid du Colombier extern void newfld(int); 110*a2c41696SDavid du Colombier extern int refldbld(const char *, const char *); 1113e12c5d1SDavid du Colombier extern void recbld(void); 1123e12c5d1SDavid du Colombier extern Cell *fieldadr(int); 113*a2c41696SDavid du Colombier extern void yyerror(const char *); 1143e12c5d1SDavid du Colombier extern void fpecatch(int); 1153e12c5d1SDavid du Colombier extern void bracecheck(void); 1163e12c5d1SDavid du Colombier extern void bcheck2(int, int, int); 117*a2c41696SDavid du Colombier extern void SYNTAX(const char *, ...); 118*a2c41696SDavid du Colombier extern void FATAL(const char *, ...); 119*a2c41696SDavid du Colombier extern void WARNING(const char *, ...); 1207dd7cddfSDavid du Colombier extern void error(void); 1213e12c5d1SDavid du Colombier extern void eprint(void); 1223e12c5d1SDavid du Colombier extern void bclass(int); 123*a2c41696SDavid du Colombier extern double errcheck(double, const char *); 124*a2c41696SDavid du Colombier extern int isclvar(const char *); 125*a2c41696SDavid du Colombier extern int is_number(const char *); 1263e12c5d1SDavid du Colombier 127*a2c41696SDavid du Colombier extern int adjbuf(char **pb, int *sz, int min, int q, char **pbp, const char *what); 1283e12c5d1SDavid du Colombier extern void run(Node *); 1297dd7cddfSDavid du Colombier extern Cell *execute(Node *); 1303e12c5d1SDavid du Colombier extern Cell *program(Node **, int); 1313e12c5d1SDavid du Colombier extern Cell *call(Node **, int); 1323e12c5d1SDavid du Colombier extern Cell *copycell(Cell *); 1333e12c5d1SDavid du Colombier extern Cell *arg(Node **, int); 1343e12c5d1SDavid du Colombier extern Cell *jump(Node **, int); 135*a2c41696SDavid du Colombier extern Cell *awkgetline(Node **, int); 1363e12c5d1SDavid du Colombier extern Cell *getnf(Node **, int); 1373e12c5d1SDavid du Colombier extern Cell *array(Node **, int); 1387dd7cddfSDavid du Colombier extern Cell *awkdelete(Node **, int); 1393e12c5d1SDavid du Colombier extern Cell *intest(Node **, int); 1403e12c5d1SDavid du Colombier extern Cell *matchop(Node **, int); 1413e12c5d1SDavid du Colombier extern Cell *boolop(Node **, int); 1423e12c5d1SDavid du Colombier extern Cell *relop(Node **, int); 1433e12c5d1SDavid du Colombier extern void tfree(Cell *); 1443e12c5d1SDavid du Colombier extern Cell *gettemp(void); 1453e12c5d1SDavid du Colombier extern Cell *field(Node **, int); 1463e12c5d1SDavid du Colombier extern Cell *indirect(Node **, int); 1473e12c5d1SDavid du Colombier extern Cell *substr(Node **, int); 1483e12c5d1SDavid du Colombier extern Cell *sindex(Node **, int); 149*a2c41696SDavid du Colombier extern int format(char **, int *, const char *, Node *); 1507dd7cddfSDavid du Colombier extern Cell *awksprintf(Node **, int); 1517dd7cddfSDavid du Colombier extern Cell *awkprintf(Node **, int); 1523e12c5d1SDavid du Colombier extern Cell *arith(Node **, int); 1533e12c5d1SDavid du Colombier extern double ipow(double, int); 1543e12c5d1SDavid du Colombier extern Cell *incrdecr(Node **, int); 1553e12c5d1SDavid du Colombier extern Cell *assign(Node **, int); 1563e12c5d1SDavid du Colombier extern Cell *cat(Node **, int); 1573e12c5d1SDavid du Colombier extern Cell *pastat(Node **, int); 1583e12c5d1SDavid du Colombier extern Cell *dopa2(Node **, int); 1593e12c5d1SDavid du Colombier extern Cell *split(Node **, int); 1603e12c5d1SDavid du Colombier extern Cell *condexpr(Node **, int); 1613e12c5d1SDavid du Colombier extern Cell *ifstat(Node **, int); 1623e12c5d1SDavid du Colombier extern Cell *whilestat(Node **, int); 1633e12c5d1SDavid du Colombier extern Cell *dostat(Node **, int); 1643e12c5d1SDavid du Colombier extern Cell *forstat(Node **, int); 1653e12c5d1SDavid du Colombier extern Cell *instat(Node **, int); 1663e12c5d1SDavid du Colombier extern Cell *bltin(Node **, int); 1673e12c5d1SDavid du Colombier extern Cell *printstat(Node **, int); 1683e12c5d1SDavid du Colombier extern Cell *nullproc(Node **, int); 1693e12c5d1SDavid du Colombier extern FILE *redirect(int, Node *); 170*a2c41696SDavid du Colombier extern FILE *openfile(int, const char *); 171*a2c41696SDavid du Colombier extern const char *filename(FILE *); 1723e12c5d1SDavid du Colombier extern Cell *closefile(Node **, int); 1733e12c5d1SDavid du Colombier extern void closeall(void); 1743e12c5d1SDavid du Colombier extern Cell *sub(Node **, int); 1753e12c5d1SDavid du Colombier extern Cell *gsub(Node **, int); 1763e12c5d1SDavid du Colombier 1777dd7cddfSDavid du Colombier extern FILE *popen(const char *, const char *); 1787dd7cddfSDavid du Colombier extern int pclose(FILE *); 179