if (action.next==null) gen.println("\t\t\t\t\t\tbreak");
	private static void WriteState(State state) {		Action action;		Symbol sym;		int endOf;		boolean ctxEnd;		endOf = state.endOf;		if (endOf > Tab.maxT)			endOf = Tab.maxT + Tab.maxSymbols - endOf; // pragmas have been moved		gen.println("\t\t\t\twhen " + state.nr);		ctxEnd = state.ctx;		for (action=state.firstAction; action!=null; action=action.next) {		    if (action==state.firstAction) 			gen.print("\t\t\t\t\tif (");		    else			gen.print("\t\t\t\t\telsif (");		    if (action.typ==Tab.chr) 			gen.print(ChCond((char)action.sym));		    else			PutRange(Tab.Class(action.sym));		    gen.println(") then; ");		    if (action.target.state != state)			gen.println("state = " + action.target.state.nr + "; ");		    if (action.tc == Tab.contextTrans) {			gen.println("apx += 1; "); 			ctxEnd = false;		    } else if (state.ctx)			gen.println("apx = 0; ");		    if (action.next==null)			gen.println("\t\t\t\t\t\tbreak");		}		if (state.firstAction != null) gen.println("\t\t\t\t\telse ;");		if (endOf==Tab.noSym)			gen.println("t.kind = @@noSym; break; end");		else { // final state			if (state.firstAction==null)				gen.print("\t\t\t\t\t");			else				gen.print("");			sym = Tab.Sym(endOf);			if (ctxEnd) { // final context state: cut appendix				gen.println();				gen.println("\t\t\t\t\t\tpos = pos - apx - 1; Buffer.Set(pos+1); i = buf.length();");				gen.println("\t\t\t\t\t\twhile (apx > 0) {");				gen.println("\t\t\t\t\t\t\tch = buf.charAt(--i);");				gen.println("\t\t\t\t\t\t\tif (ch==EOL) line--;");				gen.println("\t\t\t\t\t\t\tapx--;");				gen.println("\t\t\t\t\t\t}");				gen.println("\t\t\t\t\t\tbuf.setLength(i); NextCh();");				gen.print(  "\t\t\t\t\t\t");			}			gen.println("t.kind = " + endOf + "; ");			if (sym.struct==Tab.classLitToken)				gen.println("t.val = buf.toString(); CheckLiteral(); ");			if (state.firstAction != null) gen.println("end");		}	}