1 /**************************************************************** 2 Copyright (C) Lucent Technologies 1997 3 All Rights Reserved 4 5 Permission to use, copy, modify, and distribute this software and 6 its documentation for any purpose and without fee is hereby 7 granted, provided that the above copyright notice appear in all 8 copies and that both that the copyright notice and this 9 permission notice and warranty disclaimer appear in supporting 10 documentation, and that the name Lucent Technologies or any of 11 its entities not be used in advertising or publicity pertaining 12 to distribution of the software without specific, written prior 13 permission. 14 15 LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 16 INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. 17 IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY 18 SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER 20 IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, 21 ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF 22 THIS SOFTWARE. 23 ****************************************************************/ 24 25 extern int yywrap(void); 26 extern void setfname(Cell *); 27 extern int constnode(Node *); 28 extern char *strnode(Node *); 29 extern Node *notnull(Node *); 30 extern int yyparse(void); 31 32 extern int yylex(void); 33 extern void startreg(void); 34 extern int input(void); 35 extern void unput(int); 36 extern void unputstr(const char *); 37 extern int yylook(void); 38 extern int yyback(int *, int); 39 extern int yyinput(void); 40 41 extern void *compre(char *); 42 extern int hexstr(char **); 43 extern void quoted(char **, char **, char *); 44 extern int match(void *, char *, char *); 45 extern int pmatch(void *, char *, char *); 46 extern int nematch(void *, char *, char *); 47 extern int countposn(char *, int); 48 extern void overflow(void); 49 50 extern int pgetc(void); 51 extern char *cursource(void); 52 53 extern Node *nodealloc(int); 54 extern Node *exptostat(Node *); 55 extern Node *node1(int, Node *); 56 extern Node *node2(int, Node *, Node *); 57 extern Node *node3(int, Node *, Node *, Node *); 58 extern Node *node4(int, Node *, Node *, Node *, Node *); 59 extern Node *stat3(int, Node *, Node *, Node *); 60 extern Node *op2(int, Node *, Node *); 61 extern Node *op1(int, Node *); 62 extern Node *stat1(int, Node *); 63 extern Node *op3(int, Node *, Node *, Node *); 64 extern Node *op4(int, Node *, Node *, Node *, Node *); 65 extern Node *stat2(int, Node *, Node *); 66 extern Node *stat4(int, Node *, Node *, Node *, Node *); 67 extern Node *celltonode(Cell *, int); 68 extern Node *rectonode(void); 69 extern Node *makearr(Node *); 70 extern Node *pa2stat(Node *, Node *, Node *); 71 extern Node *linkum(Node *, Node *); 72 extern void defn(Cell *, Node *, Node *); 73 extern int isarg(const char *); 74 extern char *tokname(int); 75 extern Cell *(*proctab[])(Node **, int); 76 extern int ptoi(void *); 77 extern Node *itonp(int); 78 79 extern void syminit(void); 80 extern void arginit(int, char **); 81 extern void envinit(char **); 82 extern Array *makesymtab(int); 83 extern void freesymtab(Cell *); 84 extern void freeelem(Cell *, const char *); 85 extern Cell *setsymtab(const char *, const char *, double, unsigned int, Array *); 86 extern int hash(const char *, int); 87 extern void rehash(Array *); 88 extern Cell *lookup(const char *, Array *); 89 extern double setfval(Cell *, double); 90 extern void funnyvar(Cell *, const char *); 91 extern char *setsval(Cell *, const char *); 92 extern double getfval(Cell *); 93 extern char *getsval(Cell *); 94 extern char *getpssval(Cell *); /* for print */ 95 extern char *tostring(const char *); 96 extern char *qstring(const char *, int); 97 98 extern void recinit(unsigned int); 99 extern void initgetrec(void); 100 extern void makefields(int, int); 101 extern void growfldtab(int n); 102 extern int getrec(char **, int *, int); 103 extern void nextfile(void); 104 extern int readrec(char **buf, int *bufsize, FILE *inf); 105 extern char *getargv(int); 106 extern void setclvar(char *); 107 extern void fldbld(void); 108 extern void cleanfld(int, int); 109 extern void newfld(int); 110 extern int refldbld(const char *, const char *); 111 extern void recbld(void); 112 extern Cell *fieldadr(int); 113 extern void yyerror(const char *); 114 extern void fpecatch(int); 115 extern void bracecheck(void); 116 extern void bcheck2(int, int, int); 117 extern void SYNTAX(const char *, ...); 118 extern void FATAL(const char *, ...); 119 extern void WARNING(const char *, ...); 120 extern void error(void); 121 extern void eprint(void); 122 extern void bclass(int); 123 extern double errcheck(double, const char *); 124 extern int isclvar(const char *); 125 extern int is_number(const char *); 126 127 extern int adjbuf(char **pb, int *sz, int min, int q, char **pbp, const char *what); 128 extern void run(Node *); 129 extern Cell *execute(Node *); 130 extern Cell *program(Node **, int); 131 extern Cell *call(Node **, int); 132 extern Cell *copycell(Cell *); 133 extern Cell *arg(Node **, int); 134 extern Cell *jump(Node **, int); 135 extern Cell *awkgetline(Node **, int); 136 extern Cell *getnf(Node **, int); 137 extern Cell *array(Node **, int); 138 extern Cell *awkdelete(Node **, int); 139 extern Cell *intest(Node **, int); 140 extern Cell *matchop(Node **, int); 141 extern Cell *boolop(Node **, int); 142 extern Cell *relop(Node **, int); 143 extern void tfree(Cell *); 144 extern Cell *gettemp(void); 145 extern Cell *field(Node **, int); 146 extern Cell *indirect(Node **, int); 147 extern Cell *substr(Node **, int); 148 extern Cell *sindex(Node **, int); 149 extern int format(char **, int *, const char *, Node *); 150 extern Cell *awksprintf(Node **, int); 151 extern Cell *awkprintf(Node **, int); 152 extern Cell *arith(Node **, int); 153 extern double ipow(double, int); 154 extern Cell *incrdecr(Node **, int); 155 extern Cell *assign(Node **, int); 156 extern Cell *cat(Node **, int); 157 extern Cell *pastat(Node **, int); 158 extern Cell *dopa2(Node **, int); 159 extern Cell *split(Node **, int); 160 extern Cell *condexpr(Node **, int); 161 extern Cell *ifstat(Node **, int); 162 extern Cell *whilestat(Node **, int); 163 extern Cell *dostat(Node **, int); 164 extern Cell *forstat(Node **, int); 165 extern Cell *instat(Node **, int); 166 extern Cell *bltin(Node **, int); 167 extern Cell *printstat(Node **, int); 168 extern Cell *nullproc(Node **, int); 169 extern FILE *redirect(int, Node *); 170 extern FILE *openfile(int, const char *); 171 extern const char *filename(FILE *); 172 extern Cell *closefile(Node **, int); 173 extern void closeall(void); 174 extern Cell *sub(Node **, int); 175 extern Cell *gsub(Node **, int); 176 177 extern FILE *popen(const char *, const char *); 178 extern int pclose(FILE *); 179