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(char *); 37 extern int yylook(void); 38 extern int yyback(int *, int); 39 extern int yyinput(void); 40 41 extern fa *makedfa(char *, int); 42 extern fa *mkdfa(char *, int); 43 extern int makeinit(fa *, int); 44 extern void penter(Node *); 45 extern void freetr(Node *); 46 extern int hexstr(char **); 47 extern int quoted(char **); 48 extern char *cclenter(char *); 49 extern void overflo(char *); 50 extern void cfoll(fa *, Node *); 51 extern int first(Node *); 52 extern void follow(Node *); 53 extern int member(int, char *); 54 extern int match(fa *, char *); 55 extern int pmatch(fa *, char *); 56 extern int nematch(fa *, char *); 57 extern Node *reparse(char *); 58 extern Node *regexp(void); 59 extern Node *primary(void); 60 extern Node *concat(Node *); 61 extern Node *alt(Node *); 62 extern Node *unary(Node *); 63 extern int relex(void); 64 extern int cgoto(fa *, int, int); 65 extern void freefa(fa *); 66 67 extern int pgetc(void); 68 extern char *cursource(void); 69 70 extern Node *nodealloc(int); 71 extern Node *exptostat(Node *); 72 extern Node *node1(int, Node *); 73 extern Node *node2(int, Node *, Node *); 74 extern Node *node3(int, Node *, Node *, Node *); 75 extern Node *node4(int, Node *, Node *, Node *, Node *); 76 extern Node *stat3(int, Node *, Node *, Node *); 77 extern Node *op2(int, Node *, Node *); 78 extern Node *op1(int, Node *); 79 extern Node *stat1(int, Node *); 80 extern Node *op3(int, Node *, Node *, Node *); 81 extern Node *op4(int, Node *, Node *, Node *, Node *); 82 extern Node *stat2(int, Node *, Node *); 83 extern Node *stat4(int, Node *, Node *, Node *, Node *); 84 extern Node *celltonode(Cell *, int); 85 extern Node *rectonode(void); 86 extern Node *makearr(Node *); 87 extern Node *pa2stat(Node *, Node *, Node *); 88 extern Node *linkum(Node *, Node *); 89 extern void defn(Cell *, Node *, Node *); 90 extern int isarg(char *); 91 extern char *tokname(int); 92 extern Cell *(*proctab[])(Node **, int); 93 extern int ptoi(void *); 94 extern Node *itonp(int); 95 96 extern void syminit(void); 97 extern void arginit(int, char **); 98 extern void envinit(char **); 99 extern Array *makesymtab(int); 100 extern void freesymtab(Cell *); 101 extern void freeelem(Cell *, char *); 102 extern Cell *setsymtab(char *, char *, double, unsigned int, Array *); 103 extern int hash(char *, int); 104 extern void rehash(Array *); 105 extern Cell *lookup(char *, Array *); 106 extern double setfval(Cell *, double); 107 extern void funnyvar(Cell *, char *); 108 extern char *setsval(Cell *, char *); 109 extern double getfval(Cell *); 110 extern char *getsval(Cell *); 111 extern char *tostring(char *); 112 extern char *qstring(char *, int); 113 114 extern void recinit(unsigned int); 115 extern void initgetrec(void); 116 extern void makefields(int, int); 117 extern void growfldtab(int n); 118 extern int getrec(char **, int *, int); 119 extern void nextfile(void); 120 extern int readrec(char **buf, int *bufsize, FILE *inf); 121 extern char *getargv(int); 122 extern void setclvar(char *); 123 extern void fldbld(void); 124 extern void cleanfld(int, int); 125 extern void newfld(int); 126 extern int refldbld(char *, char *); 127 extern void recbld(void); 128 extern Cell *fieldadr(int); 129 extern void yyerror(char *); 130 extern void fpecatch(int); 131 extern void bracecheck(void); 132 extern void bcheck2(int, int, int); 133 extern void SYNTAX(char *, ...); 134 extern void FATAL(char *, ...); 135 extern void WARNING(char *, ...); 136 extern void error(void); 137 extern void eprint(void); 138 extern void bclass(int); 139 extern double errcheck(double, char *); 140 extern int isclvar(char *); 141 extern int is_number(char *); 142 143 extern int adjbuf(char **pb, int *sz, int min, int q, char **pbp, char *what); 144 extern void run(Node *); 145 extern Cell *execute(Node *); 146 extern Cell *program(Node **, int); 147 extern Cell *call(Node **, int); 148 extern Cell *copycell(Cell *); 149 extern Cell *arg(Node **, int); 150 extern Cell *jump(Node **, int); 151 extern Cell *getline(Node **, int); 152 extern Cell *getnf(Node **, int); 153 extern Cell *array(Node **, int); 154 extern Cell *awkdelete(Node **, int); 155 extern Cell *intest(Node **, int); 156 extern Cell *matchop(Node **, int); 157 extern Cell *boolop(Node **, int); 158 extern Cell *relop(Node **, int); 159 extern void tfree(Cell *); 160 extern Cell *gettemp(void); 161 extern Cell *field(Node **, int); 162 extern Cell *indirect(Node **, int); 163 extern Cell *substr(Node **, int); 164 extern Cell *sindex(Node **, int); 165 extern int format(char **, int *, char *, Node *); 166 extern Cell *awksprintf(Node **, int); 167 extern Cell *awkprintf(Node **, int); 168 extern Cell *arith(Node **, int); 169 extern double ipow(double, int); 170 extern Cell *incrdecr(Node **, int); 171 extern Cell *assign(Node **, int); 172 extern Cell *cat(Node **, int); 173 extern Cell *pastat(Node **, int); 174 extern Cell *dopa2(Node **, int); 175 extern Cell *split(Node **, int); 176 extern Cell *condexpr(Node **, int); 177 extern Cell *ifstat(Node **, int); 178 extern Cell *whilestat(Node **, int); 179 extern Cell *dostat(Node **, int); 180 extern Cell *forstat(Node **, int); 181 extern Cell *instat(Node **, int); 182 extern Cell *bltin(Node **, int); 183 extern Cell *printstat(Node **, int); 184 extern Cell *nullproc(Node **, int); 185 extern FILE *redirect(int, Node *); 186 extern FILE *openfile(int, char *); 187 extern char *filename(FILE *); 188 extern Cell *closefile(Node **, int); 189 extern void closeall(void); 190 extern Cell *sub(Node **, int); 191 extern Cell *gsub(Node **, int); 192 193 extern FILE *popen(const char *, const char *); 194 extern int pclose(FILE *); 195