12a55deb1SDavid E. O'Brien /**************************************************************** 22a55deb1SDavid E. O'Brien Copyright (C) Lucent Technologies 1997 32a55deb1SDavid E. O'Brien All Rights Reserved 42a55deb1SDavid E. O'Brien 52a55deb1SDavid E. O'Brien Permission to use, copy, modify, and distribute this software and 62a55deb1SDavid E. O'Brien its documentation for any purpose and without fee is hereby 72a55deb1SDavid E. O'Brien granted, provided that the above copyright notice appear in all 82a55deb1SDavid E. O'Brien copies and that both that the copyright notice and this 92a55deb1SDavid E. O'Brien permission notice and warranty disclaimer appear in supporting 102a55deb1SDavid E. O'Brien documentation, and that the name Lucent Technologies or any of 112a55deb1SDavid E. O'Brien its entities not be used in advertising or publicity pertaining 122a55deb1SDavid E. O'Brien to distribution of the software without specific, written prior 132a55deb1SDavid E. O'Brien permission. 142a55deb1SDavid E. O'Brien 152a55deb1SDavid E. O'Brien LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 162a55deb1SDavid E. O'Brien INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. 172a55deb1SDavid E. O'Brien IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY 182a55deb1SDavid E. O'Brien SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 192a55deb1SDavid E. O'Brien WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 202a55deb1SDavid E. O'Brien IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 212a55deb1SDavid E. O'Brien ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 222a55deb1SDavid E. O'Brien THIS SOFTWARE. 232a55deb1SDavid E. O'Brien ****************************************************************/ 242a55deb1SDavid E. O'Brien 252a55deb1SDavid E. O'Brien extern int yywrap(void); 262a55deb1SDavid E. O'Brien extern void setfname(Cell *); 272a55deb1SDavid E. O'Brien extern int constnode(Node *); 282a55deb1SDavid E. O'Brien extern char *strnode(Node *); 292a55deb1SDavid E. O'Brien extern Node *notnull(Node *); 302a55deb1SDavid E. O'Brien extern int yyparse(void); 312a55deb1SDavid E. O'Brien 322a55deb1SDavid E. O'Brien extern int yylex(void); 332a55deb1SDavid E. O'Brien extern void startreg(void); 342a55deb1SDavid E. O'Brien extern int input(void); 352a55deb1SDavid E. O'Brien extern void unput(int); 362a55deb1SDavid E. O'Brien extern void unputstr(char *); 372a55deb1SDavid E. O'Brien extern int yylook(void); 382a55deb1SDavid E. O'Brien extern int yyback(int *, int); 392a55deb1SDavid E. O'Brien extern int yyinput(void); 402a55deb1SDavid E. O'Brien 412a55deb1SDavid E. O'Brien extern fa *makedfa(char *, int); 422a55deb1SDavid E. O'Brien extern fa *mkdfa(char *, int); 432a55deb1SDavid E. O'Brien extern int makeinit(fa *, int); 442a55deb1SDavid E. O'Brien extern void penter(Node *); 452a55deb1SDavid E. O'Brien extern void freetr(Node *); 462a55deb1SDavid E. O'Brien extern int hexstr(char **); 472a55deb1SDavid E. O'Brien extern int quoted(char **); 482a55deb1SDavid E. O'Brien extern char *cclenter(char *); 492a55deb1SDavid E. O'Brien extern void overflo(char *); 502a55deb1SDavid E. O'Brien extern void cfoll(fa *, Node *); 512a55deb1SDavid E. O'Brien extern int first(Node *); 522a55deb1SDavid E. O'Brien extern void follow(Node *); 532a55deb1SDavid E. O'Brien extern int member(int, char *); 542a55deb1SDavid E. O'Brien extern int match(fa *, char *); 552a55deb1SDavid E. O'Brien extern int pmatch(fa *, char *); 562a55deb1SDavid E. O'Brien extern int nematch(fa *, char *); 572a55deb1SDavid E. O'Brien extern Node *reparse(char *); 582a55deb1SDavid E. O'Brien extern Node *regexp(void); 592a55deb1SDavid E. O'Brien extern Node *primary(void); 602a55deb1SDavid E. O'Brien extern Node *concat(Node *); 612a55deb1SDavid E. O'Brien extern Node *alt(Node *); 622a55deb1SDavid E. O'Brien extern Node *unary(Node *); 632a55deb1SDavid E. O'Brien extern int relex(void); 642a55deb1SDavid E. O'Brien extern int cgoto(fa *, int, int); 652a55deb1SDavid E. O'Brien extern void freefa(fa *); 662a55deb1SDavid E. O'Brien 672a55deb1SDavid E. O'Brien extern int pgetc(void); 682a55deb1SDavid E. O'Brien extern char *cursource(void); 692a55deb1SDavid E. O'Brien 702a55deb1SDavid E. O'Brien extern Node *nodealloc(int); 712a55deb1SDavid E. O'Brien extern Node *exptostat(Node *); 722a55deb1SDavid E. O'Brien extern Node *node1(int, Node *); 732a55deb1SDavid E. O'Brien extern Node *node2(int, Node *, Node *); 742a55deb1SDavid E. O'Brien extern Node *node3(int, Node *, Node *, Node *); 752a55deb1SDavid E. O'Brien extern Node *node4(int, Node *, Node *, Node *, Node *); 762a55deb1SDavid E. O'Brien extern Node *stat3(int, Node *, Node *, Node *); 772a55deb1SDavid E. O'Brien extern Node *op2(int, Node *, Node *); 782a55deb1SDavid E. O'Brien extern Node *op1(int, Node *); 792a55deb1SDavid E. O'Brien extern Node *stat1(int, Node *); 802a55deb1SDavid E. O'Brien extern Node *op3(int, Node *, Node *, Node *); 812a55deb1SDavid E. O'Brien extern Node *op4(int, Node *, Node *, Node *, Node *); 822a55deb1SDavid E. O'Brien extern Node *stat2(int, Node *, Node *); 832a55deb1SDavid E. O'Brien extern Node *stat4(int, Node *, Node *, Node *, Node *); 842a55deb1SDavid E. O'Brien extern Node *celltonode(Cell *, int); 852a55deb1SDavid E. O'Brien extern Node *rectonode(void); 862a55deb1SDavid E. O'Brien extern Node *makearr(Node *); 872a55deb1SDavid E. O'Brien extern Node *pa2stat(Node *, Node *, Node *); 882a55deb1SDavid E. O'Brien extern Node *linkum(Node *, Node *); 892a55deb1SDavid E. O'Brien extern void defn(Cell *, Node *, Node *); 902a55deb1SDavid E. O'Brien extern int isarg(char *); 912a55deb1SDavid E. O'Brien extern char *tokname(int); 922a55deb1SDavid E. O'Brien extern Cell *(*proctab[])(Node **, int); 932a55deb1SDavid E. O'Brien extern int ptoi(void *); 942a55deb1SDavid E. O'Brien extern Node *itonp(int); 952a55deb1SDavid E. O'Brien 962a55deb1SDavid E. O'Brien extern void syminit(void); 972a55deb1SDavid E. O'Brien extern void arginit(int, char **); 982a55deb1SDavid E. O'Brien extern void envinit(char **); 992a55deb1SDavid E. O'Brien extern Array *makesymtab(int); 1002a55deb1SDavid E. O'Brien extern void freesymtab(Cell *); 1012a55deb1SDavid E. O'Brien extern void freeelem(Cell *, char *); 1022a55deb1SDavid E. O'Brien extern Cell *setsymtab(char *, char *, double, unsigned int, Array *); 1032a55deb1SDavid E. O'Brien extern int hash(char *, int); 1042a55deb1SDavid E. O'Brien extern void rehash(Array *); 1052a55deb1SDavid E. O'Brien extern Cell *lookup(char *, Array *); 1062a55deb1SDavid E. O'Brien extern double setfval(Cell *, double); 1072a55deb1SDavid E. O'Brien extern void funnyvar(Cell *, char *); 1082a55deb1SDavid E. O'Brien extern char *setsval(Cell *, char *); 1092a55deb1SDavid E. O'Brien extern double getfval(Cell *); 1102a55deb1SDavid E. O'Brien extern char *getsval(Cell *); 1112a55deb1SDavid E. O'Brien extern char *tostring(char *); 1122a55deb1SDavid E. O'Brien extern char *qstring(char *, int); 1132a55deb1SDavid E. O'Brien 1142a55deb1SDavid E. O'Brien extern void recinit(unsigned int); 1152a55deb1SDavid E. O'Brien extern void initgetrec(void); 1162a55deb1SDavid E. O'Brien extern void makefields(int, int); 1172a55deb1SDavid E. O'Brien extern void growfldtab(int n); 1182a55deb1SDavid E. O'Brien extern int getrec(char **, int *, int); 1192a55deb1SDavid E. O'Brien extern void nextfile(void); 1202a55deb1SDavid E. O'Brien extern int readrec(char **buf, int *bufsize, FILE *inf); 1212a55deb1SDavid E. O'Brien extern char *getargv(int); 1222a55deb1SDavid E. O'Brien extern void setclvar(char *); 1232a55deb1SDavid E. O'Brien extern void fldbld(void); 1242a55deb1SDavid E. O'Brien extern void cleanfld(int, int); 1252a55deb1SDavid E. O'Brien extern void newfld(int); 1262a55deb1SDavid E. O'Brien extern int refldbld(char *, char *); 1272a55deb1SDavid E. O'Brien extern void recbld(void); 1282a55deb1SDavid E. O'Brien extern Cell *fieldadr(int); 1292a55deb1SDavid E. O'Brien extern void yyerror(char *); 1302a55deb1SDavid E. O'Brien extern void fpecatch(int); 1312a55deb1SDavid E. O'Brien extern void bracecheck(void); 1322a55deb1SDavid E. O'Brien extern void bcheck2(int, int, int); 1332a55deb1SDavid E. O'Brien extern void SYNTAX(char *, ...); 1342a55deb1SDavid E. O'Brien extern void FATAL(char *, ...); 1352a55deb1SDavid E. O'Brien extern void WARNING(char *, ...); 1362a55deb1SDavid E. O'Brien extern void error(void); 1372a55deb1SDavid E. O'Brien extern void eprint(void); 1382a55deb1SDavid E. O'Brien extern void bclass(int); 1392a55deb1SDavid E. O'Brien extern double errcheck(double, char *); 1402a55deb1SDavid E. O'Brien extern int isclvar(char *); 1412a55deb1SDavid E. O'Brien extern int is_number(char *); 1422a55deb1SDavid E. O'Brien 1432a55deb1SDavid E. O'Brien extern int adjbuf(char **pb, int *sz, int min, int q, char **pbp, char *what); 1442a55deb1SDavid E. O'Brien extern void run(Node *); 1452a55deb1SDavid E. O'Brien extern Cell *execute(Node *); 1462a55deb1SDavid E. O'Brien extern Cell *program(Node **, int); 1472a55deb1SDavid E. O'Brien extern Cell *call(Node **, int); 1482a55deb1SDavid E. O'Brien extern Cell *copycell(Cell *); 1492a55deb1SDavid E. O'Brien extern Cell *arg(Node **, int); 1502a55deb1SDavid E. O'Brien extern Cell *jump(Node **, int); 1512a55deb1SDavid E. O'Brien extern Cell *getline(Node **, int); 1522a55deb1SDavid E. O'Brien extern Cell *getnf(Node **, int); 1532a55deb1SDavid E. O'Brien extern Cell *array(Node **, int); 1542a55deb1SDavid E. O'Brien extern Cell *awkdelete(Node **, int); 1552a55deb1SDavid E. O'Brien extern Cell *intest(Node **, int); 1562a55deb1SDavid E. O'Brien extern Cell *matchop(Node **, int); 1572a55deb1SDavid E. O'Brien extern Cell *boolop(Node **, int); 1582a55deb1SDavid E. O'Brien extern Cell *relop(Node **, int); 1592a55deb1SDavid E. O'Brien extern void tfree(Cell *); 1602a55deb1SDavid E. O'Brien extern Cell *gettemp(void); 1612a55deb1SDavid E. O'Brien extern Cell *field(Node **, int); 1622a55deb1SDavid E. O'Brien extern Cell *indirect(Node **, int); 1632a55deb1SDavid E. O'Brien extern Cell *substr(Node **, int); 1642a55deb1SDavid E. O'Brien extern Cell *sindex(Node **, int); 1652a55deb1SDavid E. O'Brien extern int format(char **, int *, char *, Node *); 1662a55deb1SDavid E. O'Brien extern Cell *awksprintf(Node **, int); 1672a55deb1SDavid E. O'Brien extern Cell *awkprintf(Node **, int); 1682a55deb1SDavid E. O'Brien extern Cell *arith(Node **, int); 1692a55deb1SDavid E. O'Brien extern double ipow(double, int); 1702a55deb1SDavid E. O'Brien extern Cell *incrdecr(Node **, int); 1712a55deb1SDavid E. O'Brien extern Cell *assign(Node **, int); 1722a55deb1SDavid E. O'Brien extern Cell *cat(Node **, int); 1732a55deb1SDavid E. O'Brien extern Cell *pastat(Node **, int); 1742a55deb1SDavid E. O'Brien extern Cell *dopa2(Node **, int); 1752a55deb1SDavid E. O'Brien extern Cell *split(Node **, int); 1762a55deb1SDavid E. O'Brien extern Cell *condexpr(Node **, int); 1772a55deb1SDavid E. O'Brien extern Cell *ifstat(Node **, int); 1782a55deb1SDavid E. O'Brien extern Cell *whilestat(Node **, int); 1792a55deb1SDavid E. O'Brien extern Cell *dostat(Node **, int); 1802a55deb1SDavid E. O'Brien extern Cell *forstat(Node **, int); 1812a55deb1SDavid E. O'Brien extern Cell *instat(Node **, int); 1822a55deb1SDavid E. O'Brien extern Cell *bltin(Node **, int); 1832a55deb1SDavid E. O'Brien extern Cell *printstat(Node **, int); 1842a55deb1SDavid E. O'Brien extern Cell *nullproc(Node **, int); 1852a55deb1SDavid E. O'Brien extern FILE *redirect(int, Node *); 1862a55deb1SDavid E. O'Brien extern FILE *openfile(int, char *); 1872a55deb1SDavid E. O'Brien extern char *filename(FILE *); 1882a55deb1SDavid E. O'Brien extern Cell *closefile(Node **, int); 1892a55deb1SDavid E. O'Brien extern void closeall(void); 1902a55deb1SDavid E. O'Brien extern Cell *sub(Node **, int); 1912a55deb1SDavid E. O'Brien extern Cell *gsub(Node **, int); 1922a55deb1SDavid E. O'Brien 1932a55deb1SDavid E. O'Brien extern FILE *popen(const char *, const char *); 1942a55deb1SDavid E. O'Brien extern int pclose(FILE *); 195