+
+
+#ifdef DEBUG
+char *tok_name[LASTTOKEN - FIRSTTOKEN + 1];
+struct Tok_Desc{
+ int tok_which;
+ char *tok_name;
+} tok_desc[] = {
+ FIRSTTOKEN, "firsttoken", /* 0 */
+ ISPACE, "ispace", /* 1 */
+ IBYTE, "ibyte", /* 2 */
+ IWORD, "iword", /* 3 */
+ IINT, "iint", /* 4 */
+ ILONG, "ilong", /* 5 */
+ IDATA, "idata", /* 6 */
+ IGLOBAL, "iglobal", /* 7 */
+ ISET, "iset", /* 8 */
+ ITEXT, "itext", /* 9 */
+ ICOMM, "icomm", /* 10 */
+ ILCOMM, "ilcomm", /* 11 */
+ IFLOAT, "ifloat", /* 12 */
+ IDOUBLE, "idouble", /* 13 */
+ IORG, "iorg", /* 14 */
+ IASCII, "iascii", /* 15 */
+ IASCIZ, "iasciz", /* 16 */
+ ILSYM, "ilsym", /* 17 */
+ IFILE, "ifile", /* 18 */
+ ILINENO, "ilineno", /* 19 */
+ IABORT, "iabort", /* 20 */
+ ISTAB, "istab", /* 23 */
+ ISTABSTR, "istabstr", /* 24 */
+ ISTABNONE, "istabnone", /* 25 */
+ ISTABDOT, "istabdot", /* 26 */
+ IJXXX, "ijxxx", /* 27 */
+ IALIGN, "ialign", /* 28 */
+ INST0, "inst0", /* 29 */
+ INSTn, "instn", /* 30 */
+ BFINT, "bfint", /* 31 */
+ PARSEEOF, "parseeof", /* 32 */
+ ILINESKIP, "ilineskip", /* 33 */
+ VOID, "void", /* 34 */
+ SKIP, "skip", /* 35 */
+ INT, "int", /* 36 */
+ FLTNUM, "fltnum", /* 37 */
+ NAME, "name", /* 38 */
+ STRING, "string", /* 39 */
+ QUAD, "quad", /* 40 */
+ SIZESPEC, "sizespec", /* 41 */
+ REG, "reg", /* 42 */
+ MUL, "mul", /* 43 */
+ LITOP, "litop", /* 44 */
+ LP, "lp", /* 45 */
+ MP, "mp", /* 46 */
+ NEEDSBUF, "needsbuf", /* 48 */
+ REGOP, "regop", /* 49 */
+ NL, "nl", /* 50 */
+ SCANEOF, "scaneof", /* 51 */
+ BADCHAR, "badchar", /* 52 */
+ SP, "sp", /* 53 */
+ ALPH, "alph", /* 54 */
+ DIG, "dig", /* 55 */
+ SQ, "sq", /* 56 */
+ DQ, "dq", /* 57 */
+ SH, "sh", /* 58 */
+ LSH, "lsh", /* 59 */
+ RSH, "rsh", /* 60 */
+ MINUS, "minus", /* 61 */
+ SIZEQUOTE, "sizequote", /* 62 */
+ XOR, "xor", /* 64 */
+ DIV, "div", /* 65 */
+ SEMI, "semi", /* 66 */
+ COLON, "colon", /* 67 */
+ PLUS, "plus", /* 68 */
+ IOR, "ior", /* 69 */
+ AND, "and", /* 70 */
+ TILDE, "tilde", /* 71 */
+ ORNOT, "ornot", /* 72 */
+ CM, "cm", /* 73 */
+ LB, "lb", /* 74 */
+ RB, "rb", /* 75 */
+ RP, "rp", /* 76 */
+ LASTTOKEN, "lasttoken" /* 80 */
+};
+/*
+ * turn a token type into a string
+ */
+static int fixed = 0;
+char *tok_to_name(token)
+{
+ if (!fixed){
+ int i;
+ for (i = FIRSTTOKEN; i <= LASTTOKEN; i++)
+ tok_name[i] = "NOT ASSIGNED";
+ for (i = FIRSTTOKEN; i <= sizeof(tok_desc)/sizeof(struct Tok_Desc); i++){
+ tok_name[tok_desc[i].tok_which] = tok_desc[i].tok_name;
+ }
+ fixed = 1;
+ }
+ if (FIRSTTOKEN <= token && token <= LASTTOKEN)
+ return(tok_name[token]);
+ else
+ panic("Unknown token number, %d\n", token);
+ /*NOTREACHED*/
+}
+#endif DEBUG