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