
public class Tag {
	public static final int INT = 256;
	public static final int STRING = 257;
	public static final int FLOAT = 258;
	public static final int AND = 259;
	public static final int OR = 260;
	public static final int ID = 261;
	public static final int IF = 262;
	public static final int ELSE = 263;
	public static final int GE = 264;
	public static final int LE = 265;
	public static final int NE = 266;
	public static final int EQ = 267;
	public static final int WHILE = 268;
	public static final int BREAK = 269;
	public static final int DO = 270;
	public static final int FALSE = 271;
	public static final int TRUE = 272;
	public static final int DEFINE = 273;
	public static final int RETURN = 274;

	public static final String[] desc = {
		"int",
		"string",
		"float",
		"and",
		"or",
		"id",
		"if",
		"else",
		"ge",
		"le",
		"ne",
		"eq",
		"while",
		"break",
		"do",
		"false",
		"true",
		"define",
		"return",
		"desc" 
	};

	public static String descOf(int tag) {
		return tag > 255 ? desc[tag - 256]: String.valueOf((char)tag);
	}

}

@@ -991,65 +991,224 @@
 %7B%0A%09%09
-return tag %3E 255 ? desc%5Btag - 256%5D: String.valueOf((char)
+if (tag %3C 0 %7C%7C tag %3E Tag.RETURN)%0A%09%09%09throw new IllegalArgumentException(%22%E6%97%A0%E6%B3%95%E8%AF%86%E5%88%AB%EF%BC%9A %22 + tag);%0A%09%09return tag %3E 255 ? desc%5Btag - 256%5D: String.valueOf((char)tag);%0A%09%7D%0A%09%0A%09public static String toString(int tag) %7B%0A%09%09return descOf(
 tag)

add toString