#include "awk.h" struct tok { char *tnm; int yval; } tok[] = { "FIRSTTOKEN", 257, "FINAL", 258, "FATAL", 259, "LT", 260, "LE", 261, "GT", 262, "GE", 263, "EQ", 264, "NE", 265, "MATCH", 266, "NOTMATCH", 267, "APPEND", 268, "ADD", 269, "MINUS", 270, "MULT", 271, "DIVIDE", 272, "MOD", 273, "UMINUS", 274, "ASSIGN", 275, "ADDEQ", 276, "SUBEQ", 277, "MULTEQ", 278, "DIVEQ", 279, "MODEQ", 280, "JUMP", 281, "XBEGIN", 282, "XEND", 283, "NL", 284, "PRINT", 285, "PRINTF", 286, "SPRINTF", 287, "SPLIT", 288, "IF", 289, "ELSE", 290, "WHILE", 291, "FOR", 292, "IN", 293, "NEXT", 294, "EXIT", 295, "BREAK", 296, "CONTINUE", 297, "PROGRAM", 298, "PASTAT", 299, "PASTAT2", 300, "ASGNOP", 301, "BOR", 302, "AND", 303, "NOT", 304, "NUMBER", 305, "VAR", 306, "ARRAY", 307, "FNCN", 308, "SUBSTR", 309, "LSUBSTR", 310, "INDEX", 311, "RELOP", 312, "MATCHOP", 313, "OR", 314, "STRING", 315, "DOT", 316, "CCL", 317, "NCCL", 318, "CHAR", 319, "CAT", 320, "STAR", 321, "PLUS", 322, "QUEST", 323, "POSTINCR", 324, "PREINCR", 325, "POSTDECR", 326, "PREDECR", 327, "INCR", 328, "DECR", 329, "FIELD", 330, "INDIRECT", 331, "LASTTOKEN", 332, }; ptoken(n) { if(n<128) printf("lex: %c\n",n); else if(n<=256) printf("lex:? %o\n",n); else if(n<LASTTOKEN) printf("lex: %s\n",tok[n-257].tnm); else printf("lex:? %o\n",n); return; } char *tokname(n) { if (n<=256 || n >= LASTTOKEN) n = 257; return(tok[n-257].tnm); }