|
|
1.1 ! root 1: #include "awk.h" ! 2: #include "y.tab.h" ! 3: ! 4: Cell *nullproc(); ! 5: extern Cell *program(); ! 6: extern Cell *boolop(); ! 7: extern Cell *relop(); ! 8: extern Cell *array(); ! 9: extern Cell *indirect(); ! 10: extern Cell *substr(); ! 11: extern Cell *sub(); ! 12: extern Cell *gsub(); ! 13: extern Cell *sindex(); ! 14: extern Cell *asprintf(); ! 15: extern Cell *arith(); ! 16: extern Cell *incrdecr(); ! 17: extern Cell *cat(); ! 18: extern Cell *pastat(); ! 19: extern Cell *dopa2(); ! 20: extern Cell *matchop(); ! 21: extern Cell *intest(); ! 22: extern Cell *aprintf(); ! 23: extern Cell *print(); ! 24: extern Cell *closefile(); ! 25: extern Cell *delete(); ! 26: extern Cell *split(); ! 27: extern Cell *assign(); ! 28: extern Cell *condexpr(); ! 29: extern Cell *ifstat(); ! 30: extern Cell *whilestat(); ! 31: extern Cell *forstat(); ! 32: extern Cell *dostat(); ! 33: extern Cell *instat(); ! 34: extern Cell *jump(); ! 35: extern Cell *bltin(); ! 36: extern Cell *call(); ! 37: extern Cell *arg(); ! 38: extern Cell *getnf(); ! 39: extern Cell *getline(); ! 40: static uchar *printname[93] = { ! 41: (uchar *) "FIRSTTOKEN", /* 257 */ ! 42: (uchar *) "FATAL", /* 258 */ ! 43: (uchar *) "PROGRAM", /* 259 */ ! 44: (uchar *) "PASTAT", /* 260 */ ! 45: (uchar *) "PASTAT2", /* 261 */ ! 46: (uchar *) "XBEGIN", /* 262 */ ! 47: (uchar *) "XEND", /* 263 */ ! 48: (uchar *) "NL", /* 264 */ ! 49: (uchar *) "ARRAY", /* 265 */ ! 50: (uchar *) "MATCH", /* 266 */ ! 51: (uchar *) "NOTMATCH", /* 267 */ ! 52: (uchar *) "MATCHOP", /* 268 */ ! 53: (uchar *) "FINAL", /* 269 */ ! 54: (uchar *) "DOT", /* 270 */ ! 55: (uchar *) "ALL", /* 271 */ ! 56: (uchar *) "CCL", /* 272 */ ! 57: (uchar *) "NCCL", /* 273 */ ! 58: (uchar *) "CHAR", /* 274 */ ! 59: (uchar *) "OR", /* 275 */ ! 60: (uchar *) "STAR", /* 276 */ ! 61: (uchar *) "QUEST", /* 277 */ ! 62: (uchar *) "PLUS", /* 278 */ ! 63: (uchar *) "AND", /* 279 */ ! 64: (uchar *) "BOR", /* 280 */ ! 65: (uchar *) "APPEND", /* 281 */ ! 66: (uchar *) "EQ", /* 282 */ ! 67: (uchar *) "GE", /* 283 */ ! 68: (uchar *) "GT", /* 284 */ ! 69: (uchar *) "LE", /* 285 */ ! 70: (uchar *) "LT", /* 286 */ ! 71: (uchar *) "NE", /* 287 */ ! 72: (uchar *) "IN", /* 288 */ ! 73: (uchar *) "ARG", /* 289 */ ! 74: (uchar *) "BLTIN", /* 290 */ ! 75: (uchar *) "BREAK", /* 291 */ ! 76: (uchar *) "CLOSE", /* 292 */ ! 77: (uchar *) "CONTINUE", /* 293 */ ! 78: (uchar *) "DELETE", /* 294 */ ! 79: (uchar *) "DO", /* 295 */ ! 80: (uchar *) "EXIT", /* 296 */ ! 81: (uchar *) "FOR", /* 297 */ ! 82: (uchar *) "FUNC", /* 298 */ ! 83: (uchar *) "SUB", /* 299 */ ! 84: (uchar *) "GSUB", /* 300 */ ! 85: (uchar *) "IF", /* 301 */ ! 86: (uchar *) "INDEX", /* 302 */ ! 87: (uchar *) "LSUBSTR", /* 303 */ ! 88: (uchar *) "MATCHFCN", /* 304 */ ! 89: (uchar *) "NEXT", /* 305 */ ! 90: (uchar *) "ADD", /* 306 */ ! 91: (uchar *) "MINUS", /* 307 */ ! 92: (uchar *) "MULT", /* 308 */ ! 93: (uchar *) "DIVIDE", /* 309 */ ! 94: (uchar *) "MOD", /* 310 */ ! 95: (uchar *) "ASSIGN", /* 311 */ ! 96: (uchar *) "ASGNOP", /* 312 */ ! 97: (uchar *) "ADDEQ", /* 313 */ ! 98: (uchar *) "SUBEQ", /* 314 */ ! 99: (uchar *) "MULTEQ", /* 315 */ ! 100: (uchar *) "DIVEQ", /* 316 */ ! 101: (uchar *) "MODEQ", /* 317 */ ! 102: (uchar *) "POWEQ", /* 318 */ ! 103: (uchar *) "PRINT", /* 319 */ ! 104: (uchar *) "PRINTF", /* 320 */ ! 105: (uchar *) "SPRINTF", /* 321 */ ! 106: (uchar *) "ELSE", /* 322 */ ! 107: (uchar *) "INTEST", /* 323 */ ! 108: (uchar *) "CONDEXPR", /* 324 */ ! 109: (uchar *) "POSTINCR", /* 325 */ ! 110: (uchar *) "PREINCR", /* 326 */ ! 111: (uchar *) "POSTDECR", /* 327 */ ! 112: (uchar *) "PREDECR", /* 328 */ ! 113: (uchar *) "VAR", /* 329 */ ! 114: (uchar *) "IVAR", /* 330 */ ! 115: (uchar *) "VARNF", /* 331 */ ! 116: (uchar *) "CALL", /* 332 */ ! 117: (uchar *) "NUMBER", /* 333 */ ! 118: (uchar *) "STRING", /* 334 */ ! 119: (uchar *) "FIELD", /* 335 */ ! 120: (uchar *) "REGEXPR", /* 336 */ ! 121: (uchar *) "GETLINE", /* 337 */ ! 122: (uchar *) "RETURN", /* 338 */ ! 123: (uchar *) "SPLIT", /* 339 */ ! 124: (uchar *) "SUBSTR", /* 340 */ ! 125: (uchar *) "WHILE", /* 341 */ ! 126: (uchar *) "CAT", /* 342 */ ! 127: (uchar *) "NOT", /* 343 */ ! 128: (uchar *) "UMINUS", /* 344 */ ! 129: (uchar *) "POWER", /* 345 */ ! 130: (uchar *) "DECR", /* 346 */ ! 131: (uchar *) "INCR", /* 347 */ ! 132: (uchar *) "INDIRECT", /* 348 */ ! 133: (uchar *) "LASTTOKEN", /* 349 */ ! 134: }; ! 135: ! 136: ! 137: Cell *(*proctab[93])() = { ! 138: nullproc, /* FIRSTTOKEN */ ! 139: nullproc, /* FATAL */ ! 140: program, /* PROGRAM */ ! 141: pastat, /* PASTAT */ ! 142: dopa2, /* PASTAT2 */ ! 143: nullproc, /* XBEGIN */ ! 144: nullproc, /* XEND */ ! 145: nullproc, /* NL */ ! 146: array, /* ARRAY */ ! 147: matchop, /* MATCH */ ! 148: matchop, /* NOTMATCH */ ! 149: nullproc, /* MATCHOP */ ! 150: nullproc, /* FINAL */ ! 151: nullproc, /* DOT */ ! 152: nullproc, /* ALL */ ! 153: nullproc, /* CCL */ ! 154: nullproc, /* NCCL */ ! 155: nullproc, /* CHAR */ ! 156: nullproc, /* OR */ ! 157: nullproc, /* STAR */ ! 158: nullproc, /* QUEST */ ! 159: nullproc, /* PLUS */ ! 160: boolop, /* AND */ ! 161: boolop, /* BOR */ ! 162: nullproc, /* APPEND */ ! 163: relop, /* EQ */ ! 164: relop, /* GE */ ! 165: relop, /* GT */ ! 166: relop, /* LE */ ! 167: relop, /* LT */ ! 168: relop, /* NE */ ! 169: instat, /* IN */ ! 170: arg, /* ARG */ ! 171: bltin, /* BLTIN */ ! 172: jump, /* BREAK */ ! 173: closefile, /* CLOSE */ ! 174: jump, /* CONTINUE */ ! 175: delete, /* DELETE */ ! 176: dostat, /* DO */ ! 177: jump, /* EXIT */ ! 178: forstat, /* FOR */ ! 179: nullproc, /* FUNC */ ! 180: sub, /* SUB */ ! 181: gsub, /* GSUB */ ! 182: ifstat, /* IF */ ! 183: sindex, /* INDEX */ ! 184: nullproc, /* LSUBSTR */ ! 185: matchop, /* MATCHFCN */ ! 186: jump, /* NEXT */ ! 187: arith, /* ADD */ ! 188: arith, /* MINUS */ ! 189: arith, /* MULT */ ! 190: arith, /* DIVIDE */ ! 191: arith, /* MOD */ ! 192: assign, /* ASSIGN */ ! 193: nullproc, /* ASGNOP */ ! 194: assign, /* ADDEQ */ ! 195: assign, /* SUBEQ */ ! 196: assign, /* MULTEQ */ ! 197: assign, /* DIVEQ */ ! 198: assign, /* MODEQ */ ! 199: assign, /* POWEQ */ ! 200: print, /* PRINT */ ! 201: aprintf, /* PRINTF */ ! 202: asprintf, /* SPRINTF */ ! 203: nullproc, /* ELSE */ ! 204: intest, /* INTEST */ ! 205: condexpr, /* CONDEXPR */ ! 206: incrdecr, /* POSTINCR */ ! 207: incrdecr, /* PREINCR */ ! 208: incrdecr, /* POSTDECR */ ! 209: incrdecr, /* PREDECR */ ! 210: nullproc, /* VAR */ ! 211: nullproc, /* IVAR */ ! 212: getnf, /* VARNF */ ! 213: call, /* CALL */ ! 214: nullproc, /* NUMBER */ ! 215: nullproc, /* STRING */ ! 216: nullproc, /* FIELD */ ! 217: nullproc, /* REGEXPR */ ! 218: getline, /* GETLINE */ ! 219: jump, /* RETURN */ ! 220: split, /* SPLIT */ ! 221: substr, /* SUBSTR */ ! 222: whilestat, /* WHILE */ ! 223: cat, /* CAT */ ! 224: boolop, /* NOT */ ! 225: arith, /* UMINUS */ ! 226: arith, /* POWER */ ! 227: nullproc, /* DECR */ ! 228: nullproc, /* INCR */ ! 229: indirect, /* INDIRECT */ ! 230: nullproc, /* LASTTOKEN */ ! 231: }; ! 232: ! 233: uchar *tokname(n) ! 234: { ! 235: static uchar buf[100]; ! 236: ! 237: if (n < FIRSTTOKEN || n > LASTTOKEN) { ! 238: sprintf(buf, "token %d", n); ! 239: return buf; ! 240: } ! 241: return printname[n-257]; ! 242: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.