| /**************************************************************** |
| Copyright (C) Lucent Technologies 1997 |
| All Rights Reserved |
| |
| Permission to use, copy, modify, and distribute this software and |
| its documentation for any purpose and without fee is hereby |
| granted, provided that the above copyright notice appear in all |
| copies and that both that the copyright notice and this |
| permission notice and warranty disclaimer appear in supporting |
| documentation, and that the name Lucent Technologies or any of |
| its entities not be used in advertising or publicity pertaining |
| to distribution of the software without specific, written prior |
| permission. |
| |
| LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, |
| INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. |
| IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY |
| SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER |
| IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, |
| ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF |
| THIS SOFTWARE. |
| ****************************************************************/ |
| |
| #define getline p9getline |
| |
| extern int yywrap(void); |
| extern void setfname(Cell *); |
| extern int constnode(Node *); |
| extern char *strnode(Node *); |
| extern Node *notnull(Node *); |
| extern int yyparse(void); |
| |
| extern int yylex(void); |
| extern void startreg(void); |
| extern int input(void); |
| extern void unput(int); |
| extern void unputstr(char *); |
| extern int yylook(void); |
| extern int yyback(int *, int); |
| extern int yyinput(void); |
| |
| extern void *compre(char *); |
| extern int hexstr(char **); |
| extern void quoted(char **, char **, char *); |
| extern int match(void *, char *, char *); |
| extern int pmatch(void *, char *, char *); |
| extern int nematch(void *, char *, char *); |
| extern int countposn(char *, int); |
| extern void overflow(void); |
| |
| extern int pgetc(void); |
| extern char *cursource(void); |
| |
| extern Node *nodealloc(int); |
| extern Node *exptostat(Node *); |
| extern Node *node1(int, Node *); |
| extern Node *node2(int, Node *, Node *); |
| extern Node *node3(int, Node *, Node *, Node *); |
| extern Node *node4(int, Node *, Node *, Node *, Node *); |
| extern Node *stat3(int, Node *, Node *, Node *); |
| extern Node *op2(int, Node *, Node *); |
| extern Node *op1(int, Node *); |
| extern Node *stat1(int, Node *); |
| extern Node *op3(int, Node *, Node *, Node *); |
| extern Node *op4(int, Node *, Node *, Node *, Node *); |
| extern Node *stat2(int, Node *, Node *); |
| extern Node *stat4(int, Node *, Node *, Node *, Node *); |
| extern Node *celltonode(Cell *, int); |
| extern Node *rectonode(void); |
| extern Node *makearr(Node *); |
| extern Node *pa2stat(Node *, Node *, Node *); |
| extern Node *linkum(Node *, Node *); |
| extern void defn(Cell *, Node *, Node *); |
| extern int isarg(char *); |
| extern char *tokname(int); |
| extern Cell *(*proctab[])(Node **, int); |
| extern int ptoi(void *); |
| extern Node *itonp(int); |
| |
| extern void syminit(void); |
| extern void arginit(int, char **); |
| extern void envinit(char **); |
| extern Array *makesymtab(int); |
| extern void freesymtab(Cell *); |
| extern void freeelem(Cell *, char *); |
| extern Cell *setsymtab(char *, char *, double, unsigned int, Array *); |
| extern int hash(char *, int); |
| extern void rehash(Array *); |
| extern Cell *lookup(char *, Array *); |
| extern double setfval(Cell *, double); |
| extern void funnyvar(Cell *, char *); |
| extern char *setsval(Cell *, char *); |
| extern double getfval(Cell *); |
| extern char *getsval(Cell *); |
| extern char *tostring(char *); |
| extern char *qstring(char *, int); |
| |
| extern void recinit(unsigned int); |
| extern void initgetrec(void); |
| extern void makefields(int, int); |
| extern void growfldtab(int n); |
| extern int getrec(char **, int *, int); |
| extern void nextfile(void); |
| extern int readrec(char **buf, int *bufsize, FILE *inf); |
| extern char *getargv(int); |
| extern void setclvar(char *); |
| extern void fldbld(void); |
| extern void cleanfld(int, int); |
| extern void newfld(int); |
| extern int refldbld(char *, char *); |
| extern void recbld(void); |
| extern Cell *fieldadr(int); |
| extern void yyerror(char *); |
| extern void fpecatch(int); |
| extern void bracecheck(void); |
| extern void bcheck2(int, int, int); |
| extern void SYNTAX(char *, ...); |
| extern void FATAL(char *, ...); |
| extern void WARNING(char *, ...); |
| extern void error(void); |
| extern void eprint(void); |
| extern void bclass(int); |
| extern double errcheck(double, char *); |
| extern int isclvar(char *); |
| extern int is_number(char *); |
| |
| extern int adjbuf(char **pb, int *sz, int min, int q, char **pbp, char *what); |
| extern void run(Node *); |
| extern Cell *execute(Node *); |
| extern Cell *program(Node **, int); |
| extern Cell *call(Node **, int); |
| extern Cell *copycell(Cell *); |
| extern Cell *arg(Node **, int); |
| extern Cell *jump(Node **, int); |
| extern Cell *getline(Node **, int); |
| extern Cell *getnf(Node **, int); |
| extern Cell *array(Node **, int); |
| extern Cell *awkdelete(Node **, int); |
| extern Cell *intest(Node **, int); |
| extern Cell *matchop(Node **, int); |
| extern Cell *boolop(Node **, int); |
| extern Cell *relop(Node **, int); |
| extern void tfree(Cell *); |
| extern Cell *gettemp(void); |
| extern Cell *field(Node **, int); |
| extern Cell *indirect(Node **, int); |
| extern Cell *substr(Node **, int); |
| extern Cell *sindex(Node **, int); |
| extern int format(char **, int *, char *, Node *); |
| extern Cell *awksprintf(Node **, int); |
| extern Cell *awkprintf(Node **, int); |
| extern Cell *arith(Node **, int); |
| extern double ipow(double, int); |
| extern Cell *incrdecr(Node **, int); |
| extern Cell *assign(Node **, int); |
| extern Cell *cat(Node **, int); |
| extern Cell *pastat(Node **, int); |
| extern Cell *dopa2(Node **, int); |
| extern Cell *split(Node **, int); |
| extern Cell *condexpr(Node **, int); |
| extern Cell *ifstat(Node **, int); |
| extern Cell *whilestat(Node **, int); |
| extern Cell *dostat(Node **, int); |
| extern Cell *forstat(Node **, int); |
| extern Cell *instat(Node **, int); |
| extern Cell *bltin(Node **, int); |
| extern Cell *printstat(Node **, int); |
| extern Cell *nullproc(Node **, int); |
| extern FILE *redirect(int, Node *); |
| extern FILE *openfile(int, char *); |
| extern char *filename(FILE *); |
| extern Cell *closefile(Node **, int); |
| extern void closeall(void); |
| extern Cell *sub(Node **, int); |
| extern Cell *gsub(Node **, int); |
| |
| extern FILE *popen(const char *, const char *); |
| extern int pclose(FILE *); |
| |