1*7dd7cddfSDavid du Colombier /**************************************************************** 2*7dd7cddfSDavid du Colombier Copyright (C) Lucent Technologies 1997 3*7dd7cddfSDavid du Colombier All Rights Reserved 4*7dd7cddfSDavid du Colombier 5*7dd7cddfSDavid du Colombier Permission to use, copy, modify, and distribute this software and 6*7dd7cddfSDavid du Colombier its documentation for any purpose and without fee is hereby 7*7dd7cddfSDavid du Colombier granted, provided that the above copyright notice appear in all 8*7dd7cddfSDavid du Colombier copies and that both that the copyright notice and this 9*7dd7cddfSDavid du Colombier permission notice and warranty disclaimer appear in supporting 10*7dd7cddfSDavid du Colombier documentation, and that the name Lucent Technologies or any of 11*7dd7cddfSDavid du Colombier its entities not be used in advertising or publicity pertaining 12*7dd7cddfSDavid du Colombier to distribution of the software without specific, written prior 13*7dd7cddfSDavid du Colombier permission. 14*7dd7cddfSDavid du Colombier 15*7dd7cddfSDavid du Colombier LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 16*7dd7cddfSDavid du Colombier INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. 17*7dd7cddfSDavid du Colombier IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY 18*7dd7cddfSDavid du Colombier SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 19*7dd7cddfSDavid du Colombier WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 20*7dd7cddfSDavid du Colombier IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 21*7dd7cddfSDavid du Colombier ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 22*7dd7cddfSDavid du Colombier THIS SOFTWARE. 23*7dd7cddfSDavid du Colombier ****************************************************************/ 24*7dd7cddfSDavid du Colombier 253e12c5d1SDavid du Colombier extern int yywrap(void); 263e12c5d1SDavid du Colombier extern void setfname(Cell *); 273e12c5d1SDavid du Colombier extern int constnode(Node *); 28*7dd7cddfSDavid 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); 363e12c5d1SDavid du Colombier extern void unputstr(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 41*7dd7cddfSDavid du Colombier extern void *compre(char *); 423e12c5d1SDavid du Colombier extern int hexstr(char **); 43*7dd7cddfSDavid du Colombier extern void quoted(char **, char **, char *); 44*7dd7cddfSDavid du Colombier extern int match(void *, char *, char *); 45*7dd7cddfSDavid du Colombier extern int pmatch(void *, char *, char *); 46*7dd7cddfSDavid du Colombier extern int nematch(void *, char *, char *); 47*7dd7cddfSDavid du Colombier extern int countposn(char *, int); 483e12c5d1SDavid du Colombier extern void overflow(void); 493e12c5d1SDavid du Colombier 503e12c5d1SDavid du Colombier extern int pgetc(void); 51*7dd7cddfSDavid 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 *); 67*7dd7cddfSDavid 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*7dd7cddfSDavid du Colombier extern int isarg(char *); 74*7dd7cddfSDavid du Colombier extern char *tokname(int); 753e12c5d1SDavid du Colombier extern Cell *(*proctab[])(Node **, int); 76*7dd7cddfSDavid du Colombier extern int ptoi(void *); 77*7dd7cddfSDavid du Colombier extern Node *itonp(int); 783e12c5d1SDavid du Colombier 793e12c5d1SDavid du Colombier extern void syminit(void); 80*7dd7cddfSDavid du Colombier extern void arginit(int, char **); 81*7dd7cddfSDavid du Colombier extern void envinit(char **); 823e12c5d1SDavid du Colombier extern Array *makesymtab(int); 833e12c5d1SDavid du Colombier extern void freesymtab(Cell *); 84*7dd7cddfSDavid du Colombier extern void freeelem(Cell *, char *); 85*7dd7cddfSDavid du Colombier extern Cell *setsymtab(char *, char *, double, unsigned int, Array *); 86*7dd7cddfSDavid du Colombier extern int hash(char *, int); 873e12c5d1SDavid du Colombier extern void rehash(Array *); 88*7dd7cddfSDavid du Colombier extern Cell *lookup(char *, Array *); 893e12c5d1SDavid du Colombier extern double setfval(Cell *, double); 903e12c5d1SDavid du Colombier extern void funnyvar(Cell *, char *); 91*7dd7cddfSDavid du Colombier extern char *setsval(Cell *, char *); 92*7dd7cddfSDavid du Colombier extern double getfval(Cell *); 93*7dd7cddfSDavid du Colombier extern char *getsval(Cell *); 94*7dd7cddfSDavid du Colombier extern char *tostring(char *); 95*7dd7cddfSDavid du Colombier extern char *qstring(char *, int); 963e12c5d1SDavid du Colombier 97219b2ee8SDavid du Colombier extern void recinit(unsigned int); 983e12c5d1SDavid du Colombier extern void initgetrec(void); 99*7dd7cddfSDavid du Colombier extern void makefields(int, int); 100*7dd7cddfSDavid du Colombier extern void growfldtab(int n); 101*7dd7cddfSDavid du Colombier extern int getrec(char **, int *, int); 102*7dd7cddfSDavid du Colombier extern void nextfile(void); 103*7dd7cddfSDavid du Colombier extern int readrec(char **buf, int *bufsize, FILE *inf); 104*7dd7cddfSDavid du Colombier extern char *getargv(int); 105*7dd7cddfSDavid du Colombier extern void setclvar(char *); 1063e12c5d1SDavid du Colombier extern void fldbld(void); 1073e12c5d1SDavid du Colombier extern void cleanfld(int, int); 1083e12c5d1SDavid du Colombier extern void newfld(int); 109*7dd7cddfSDavid du Colombier extern int refldbld(char *, char *); 1103e12c5d1SDavid du Colombier extern void recbld(void); 1113e12c5d1SDavid du Colombier extern Cell *fieldadr(int); 1123e12c5d1SDavid du Colombier extern void yyerror(char *); 1133e12c5d1SDavid du Colombier extern void fpecatch(int); 1143e12c5d1SDavid du Colombier extern void bracecheck(void); 1153e12c5d1SDavid du Colombier extern void bcheck2(int, int, int); 116*7dd7cddfSDavid du Colombier extern void SYNTAX(char *, ...); 117*7dd7cddfSDavid du Colombier extern void FATAL(char *, ...); 118*7dd7cddfSDavid du Colombier extern void WARNING(char *, ...); 119*7dd7cddfSDavid du Colombier extern void error(void); 1203e12c5d1SDavid du Colombier extern void eprint(void); 1213e12c5d1SDavid du Colombier extern void bclass(int); 122*7dd7cddfSDavid du Colombier extern double errcheck(double, char *); 123*7dd7cddfSDavid du Colombier extern int isclvar(char *); 124*7dd7cddfSDavid du Colombier extern int is_number(char *); 1253e12c5d1SDavid du Colombier 126*7dd7cddfSDavid du Colombier extern int adjbuf(char **pb, int *sz, int min, int q, char **pbp, char *what); 1273e12c5d1SDavid du Colombier extern void run(Node *); 128*7dd7cddfSDavid du Colombier extern Cell *execute(Node *); 1293e12c5d1SDavid du Colombier extern Cell *program(Node **, int); 1303e12c5d1SDavid du Colombier extern Cell *call(Node **, int); 1313e12c5d1SDavid du Colombier extern Cell *copycell(Cell *); 1323e12c5d1SDavid du Colombier extern Cell *arg(Node **, int); 1333e12c5d1SDavid du Colombier extern Cell *jump(Node **, int); 1343e12c5d1SDavid du Colombier extern Cell *getline(Node **, int); 1353e12c5d1SDavid du Colombier extern Cell *getnf(Node **, int); 1363e12c5d1SDavid du Colombier extern Cell *array(Node **, int); 137*7dd7cddfSDavid du Colombier extern Cell *awkdelete(Node **, int); 1383e12c5d1SDavid du Colombier extern Cell *intest(Node **, int); 1393e12c5d1SDavid du Colombier extern Cell *matchop(Node **, int); 1403e12c5d1SDavid du Colombier extern Cell *boolop(Node **, int); 1413e12c5d1SDavid du Colombier extern Cell *relop(Node **, int); 1423e12c5d1SDavid du Colombier extern void tfree(Cell *); 1433e12c5d1SDavid du Colombier extern Cell *gettemp(void); 1443e12c5d1SDavid du Colombier extern Cell *field(Node **, int); 1453e12c5d1SDavid du Colombier extern Cell *indirect(Node **, int); 1463e12c5d1SDavid du Colombier extern Cell *substr(Node **, int); 1473e12c5d1SDavid du Colombier extern Cell *sindex(Node **, int); 148*7dd7cddfSDavid du Colombier extern int format(char **, int *, char *, Node *); 149*7dd7cddfSDavid du Colombier extern Cell *awksprintf(Node **, int); 150*7dd7cddfSDavid du Colombier extern Cell *awkprintf(Node **, int); 1513e12c5d1SDavid du Colombier extern Cell *arith(Node **, int); 1523e12c5d1SDavid du Colombier extern double ipow(double, int); 1533e12c5d1SDavid du Colombier extern Cell *incrdecr(Node **, int); 1543e12c5d1SDavid du Colombier extern Cell *assign(Node **, int); 1553e12c5d1SDavid du Colombier extern Cell *cat(Node **, int); 1563e12c5d1SDavid du Colombier extern Cell *pastat(Node **, int); 1573e12c5d1SDavid du Colombier extern Cell *dopa2(Node **, int); 1583e12c5d1SDavid du Colombier extern Cell *split(Node **, int); 1593e12c5d1SDavid du Colombier extern Cell *condexpr(Node **, int); 1603e12c5d1SDavid du Colombier extern Cell *ifstat(Node **, int); 1613e12c5d1SDavid du Colombier extern Cell *whilestat(Node **, int); 1623e12c5d1SDavid du Colombier extern Cell *dostat(Node **, int); 1633e12c5d1SDavid du Colombier extern Cell *forstat(Node **, int); 1643e12c5d1SDavid du Colombier extern Cell *instat(Node **, int); 1653e12c5d1SDavid du Colombier extern Cell *bltin(Node **, int); 1663e12c5d1SDavid du Colombier extern Cell *printstat(Node **, int); 1673e12c5d1SDavid du Colombier extern Cell *nullproc(Node **, int); 1683e12c5d1SDavid du Colombier extern FILE *redirect(int, Node *); 169*7dd7cddfSDavid du Colombier extern FILE *openfile(int, char *); 170*7dd7cddfSDavid du Colombier extern char *filename(FILE *); 1713e12c5d1SDavid du Colombier extern Cell *closefile(Node **, int); 1723e12c5d1SDavid du Colombier extern void closeall(void); 1733e12c5d1SDavid du Colombier extern Cell *sub(Node **, int); 1743e12c5d1SDavid du Colombier extern Cell *gsub(Node **, int); 1753e12c5d1SDavid du Colombier 176*7dd7cddfSDavid du Colombier extern FILE *popen(const char *, const char *); 177*7dd7cddfSDavid du Colombier extern int pclose(FILE *); 178