1 #include "awk.def" 2 CELL *nullproc(); 3 extern CELL *program(); 4 extern CELL *boolop(); 5 extern CELL *relop(); 6 extern CELL *array(); 7 extern CELL *indirect(); 8 extern CELL *substr(); 9 extern CELL *sindex(); 10 extern CELL *a_sprintf(); 11 extern CELL *arith(); 12 extern CELL *incrdecr(); 13 extern CELL *cat(); 14 extern CELL *pastat(); 15 extern CELL *dopa2(); 16 extern CELL *matchop(); 17 extern CELL *aprintf(); 18 extern CELL *print(); 19 extern CELL *split(); 20 extern CELL *assign(); 21 extern CELL *ifstat(); 22 extern CELL *whilestat(); 23 extern CELL *forstat(); 24 extern CELL *instat(); 25 extern CELL *jump(); 26 extern CELL *fncn(); 27 extern CELL *getaline(); 28 CELL *(*proctab[83])() = { 29 /*FIRSTTOKEN*/ nullproc, 30 /*FINAL*/ nullproc, 31 /*FATAL*/ nullproc, 32 /*LT*/ relop, 33 /*LE*/ relop, 34 /*GT*/ relop, 35 /*GE*/ relop, 36 /*EQ*/ relop, 37 /*NE*/ relop, 38 /*MATCH*/ matchop, 39 /*NOTMATCH*/ matchop, 40 /*APPEND*/ nullproc, 41 /*ADD*/ arith, 42 /*MINUS*/ arith, 43 /*MULT*/ arith, 44 /*DIVIDE*/ arith, 45 /*MOD*/ arith, 46 /*UMINUS*/ arith, 47 /*ASSIGN*/ assign, 48 /*ADDEQ*/ assign, 49 /*SUBEQ*/ assign, 50 /*MULTEQ*/ assign, 51 /*DIVEQ*/ assign, 52 /*MODEQ*/ assign, 53 /*JUMP*/ nullproc, 54 /*XBEGIN*/ nullproc, 55 /*XEND*/ nullproc, 56 /*NL*/ nullproc, 57 /*PRINT*/ print, 58 /*PRINTF*/ aprintf, 59 /*SPRINTF*/ a_sprintf, 60 /*SPLIT*/ split, 61 /*IF*/ ifstat, 62 /*ELSE*/ nullproc, 63 /*WHILE*/ whilestat, 64 /*FOR*/ forstat, 65 /*IN*/ instat, 66 /*NEXT*/ jump, 67 /*EXIT*/ jump, 68 /*BREAK*/ jump, 69 /*CONTINUE*/ jump, 70 /*PROGRAM*/ program, 71 /*PASTAT*/ pastat, 72 /*PASTAT2*/ dopa2, 73 /*ASGNOP*/ nullproc, 74 /*BOR*/ boolop, 75 /*AND*/ boolop, 76 /*NOT*/ boolop, 77 /*NUMBER*/ nullproc, 78 /*VAR*/ nullproc, 79 /*ARRAY*/ array, 80 /*FNCN*/ fncn, 81 /*SUBSTR*/ substr, 82 /*LSUBSTR*/ nullproc, 83 /*INDEX*/ sindex, 84 /*GETLINE*/ getaline, 85 /*RELOP*/ nullproc, 86 /*MATCHOP*/ nullproc, 87 /*OR*/ nullproc, 88 /*STRING*/ nullproc, 89 /*DOT*/ nullproc, 90 /*CCL*/ nullproc, 91 /*NCCL*/ nullproc, 92 /*CHAR*/ nullproc, 93 /*CAT*/ cat, 94 /*STAR*/ nullproc, 95 /*PLUS*/ nullproc, 96 /*QUEST*/ nullproc, 97 /*POSTINCR*/ incrdecr, 98 /*PREINCR*/ incrdecr, 99 /*POSTDECR*/ incrdecr, 100 /*PREDECR*/ incrdecr, 101 /*INCR*/ nullproc, 102 /*DECR*/ nullproc, 103 /*FIELD*/ nullproc, 104 /*INDIRECT*/ indirect, 105 /*JUMPTRUE*/ nullproc, 106 /*JUMPFALSE*/ nullproc, 107 /*PUSH*/ nullproc, 108 /*GETREC*/ nullproc, 109 /*NEWSTAT*/ nullproc, 110 /*IN_INIT*/ nullproc, 111 /*IN_EXIT*/ nullproc, 112 }; 113 char *printname[83] = { 114 /*FIRSTTOKEN*/ "", 115 /*FINAL*/ "", 116 /*FATAL*/ "", 117 /*LT*/ " < ", 118 /*LE*/ " <= ", 119 /*GT*/ " > ", 120 /*GE*/ " >= ", 121 /*EQ*/ " == ", 122 /*NE*/ " != ", 123 /*MATCH*/ " ~ ", 124 /*NOTMATCH*/ " !~ ", 125 /*APPEND*/ "", 126 /*ADD*/ " + ", 127 /*MINUS*/ " - ", 128 /*MULT*/ " * ", 129 /*DIVIDE*/ " / ", 130 /*MOD*/ " % ", 131 /*UMINUS*/ " -", 132 /*ASSIGN*/ " = ", 133 /*ADDEQ*/ " += ", 134 /*SUBEQ*/ " -= ", 135 /*MULTEQ*/ " *= ", 136 /*DIVEQ*/ " /= ", 137 /*MODEQ*/ " %= ", 138 /*JUMP*/ "", 139 /*XBEGIN*/ "", 140 /*XEND*/ "", 141 /*NL*/ "", 142 /*PRINT*/ "print", 143 /*PRINTF*/ "printf", 144 /*SPRINTF*/ "sprintf ", 145 /*SPLIT*/ "split", 146 /*IF*/ "if(", 147 /*ELSE*/ "", 148 /*WHILE*/ "while(", 149 /*FOR*/ "for(", 150 /*IN*/ "instat", 151 /*NEXT*/ "next", 152 /*EXIT*/ "exit", 153 /*BREAK*/ "break", 154 /*CONTINUE*/ "continue", 155 /*PROGRAM*/ "(null)", 156 /*PASTAT*/ "(null)", 157 /*PASTAT2*/ "(null)", 158 /*ASGNOP*/ "", 159 /*BOR*/ " || ", 160 /*AND*/ " && ", 161 /*NOT*/ " !", 162 /*NUMBER*/ "", 163 /*VAR*/ "", 164 /*ARRAY*/ "(null)", 165 /*FNCN*/ "fncn", 166 /*SUBSTR*/ "substr", 167 /*LSUBSTR*/ "", 168 /*INDEX*/ "sindex", 169 /*GETLINE*/ "getline", 170 /*RELOP*/ "", 171 /*MATCHOP*/ "", 172 /*OR*/ "", 173 /*STRING*/ "", 174 /*DOT*/ "", 175 /*CCL*/ "", 176 /*NCCL*/ "", 177 /*CHAR*/ "", 178 /*CAT*/ " ", 179 /*STAR*/ "", 180 /*PLUS*/ "", 181 /*QUEST*/ "", 182 /*POSTINCR*/ "++", 183 /*PREINCR*/ "++", 184 /*POSTDECR*/ "--", 185 /*PREDECR*/ "--", 186 /*INCR*/ "", 187 /*DECR*/ "", 188 /*FIELD*/ "", 189 /*INDIRECT*/ "$(", 190 /*JUMPTRUE*/ "", 191 /*JUMPFALSE*/ "", 192 /*PUSH*/ "", 193 /*GETREC*/ "", 194 /*NEWSTAT*/ "", 195 /*IN_INIT*/ "", 196 /*IN_EXIT*/ "", 197 }; 198