
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 int NULL = 275;
	public static final int For = 276;
	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",
		"null",
		"for"
	};


	public static String descOf(int tag) {
		if (tag < 0 || tag > Tag.For)
			throw new IllegalArgumentException("无法识别： " + tag);
		return tag > 255 ? desc[tag - 256]: String.valueOf((char)tag);
	}
	
	public static String toString(int tag) {
		return descOf(tag);
	}

}

@@ -781,16 +781,91 @@
  = 276;%0A
+%09public static final int Foreach = 277;%0A%09public static final int IN = 278;%0A
 %09public 
@@ -1104,16 +1104,24 @@
 %0A%09%09%22for%22
+,%0A%09%09%22in%22
 %0A%09%7D;%0A%0A%0A%09
@@ -1186,19 +1186,18 @@
 g %3E Tag.
-For
+IN
 )%0A%09%09%09thr

add for in foreach