void OP_SWITCH(out pBaseLangObject outObj, pBaseLangObject parent) { var obj = new Switch(parent); Case caseObj; outObj = obj; pBaseLangObject blo; Expect(72); Expect(10); EXPRESSION(out blo, obj); obj.expression = blo; Expect(11); Expect(14); while (la.kind == 73 || la.kind == 74 || la.kind == 75) { if (la.kind == 73) { Get(); caseObj = new Case(obj, t.line, t.col); obj.addChild(caseObj); EXPRESSION(out blo, caseObj); caseObj.addChild(blo); Expect(59); while (la.kind == 73) { Get(); EXPRESSION(out blo, caseObj); caseObj.addChild(blo); Expect(59); } caseObj.markEnd(); while (StartOf(14)) { CODEINSTRUCTION(out blo, caseObj); caseObj.addChild(blo); } if (la.kind == 68) { OP_BREAK(out blo, caseObj); caseObj.addChild(blo); TERMINATOR(); } else if (la.kind == 70) { OP_THROW(out blo, caseObj); caseObj.addChild(blo); TERMINATOR(); } else if (la.kind == 71) { OP_RETURN(out blo, caseObj); caseObj.addChild(blo); TERMINATOR(); } else SynErr(111); } else { if (la.kind == 74) { Get(); caseObj = new Case(obj, t.line, t.col); obj.addChild(caseObj); Expect(59); } else { Get(); caseObj = new Case(obj, t.line, t.col); obj.addChild(caseObj); } while (StartOf(14)) { CODEINSTRUCTION(out blo, caseObj); caseObj.addChild(blo); } if (la.kind == 68) { OP_BREAK(out blo, caseObj); caseObj.addChild(blo); TERMINATOR(); } else if (la.kind == 70) { OP_THROW(out blo, caseObj); caseObj.addChild(blo); TERMINATOR(); } else if (la.kind == 71) { OP_RETURN(out blo, caseObj); caseObj.addChild(blo); TERMINATOR(); } else SynErr(112); } } Expect(15); }