public static EXPRESSION parse(iSCOPE context) { Token token = get(); forget(); Span begin = token.span; CONDITIONAL result = new CONDITIONAL(); EXPRESSION elsePart = null; EXPRESSION condition = EXPRESSION.parse(null, context); expect(TokenCode.Then); EXPRESSION thenPart = EXPRESSION.parse(null, context); COND_IF_THEN cit = new COND_IF_THEN(condition, thenPart); condition.parent = result; thenPart.parent = result; cit.parent = result; result.add(cit); token = get(); while (true) { if (token.code == TokenCode.Elsif) { forget(); condition = EXPRESSION.parse(null, context); expect(TokenCode.Then); thenPart = EXPRESSION.parse(null, context); cit = new COND_IF_THEN(condition, thenPart); cit.setSpan(token.span, thenPart.span); condition.parent = result; thenPart.parent = result; cit.parent = result; result.add(cit); token = get(); // go to next iteration } else { break; } } token = expect(TokenCode.Else); elsePart = EXPRESSION.parse(null, context); elsePart.parent = result; result.add(elsePart); result.setSpan(begin, elsePart.span); // context.add(result); ?? why ?? return(result); }
public void add(COND_IF_THEN cit) { ifThenParts.Add(cit); cit.parent = this; }