void Conditional(MultiNodeTree parent) { ExpressionTreeBase addTo = parent; SingleNodeTree condition = null; ConditionalExpression lastOperation = null; while (StartOf(2)) { lastOperation = lastOperation ?? new AndCondition(); MultiAdd(addTo, lastOperation); addTo = lastOperation; if (la.kind == 5) { Get(); NotCondition not = new NotCondition(); lastOperation.SetChild(not); lastOperation = not; } if (StartOf(3)) { Condition(lastOperation); } else if (la.kind == 6) { ConditionGroup(lastOperation); } else { SynErr(44); } if (la.kind == 9 || la.kind == 10) { Operation(out lastOperation); } else { lastOperation = null; } } if (lastOperation != null && lastOperation.Child == null) { SemErr("Invalid Condition"); } }
void Conditional(MultiNodeTree parent) { ExpressionTreeBase addTo = parent; SingleNodeTree condition = null; ConditionalExpression lastOperation = null; while (StartOf(2)) { lastOperation = lastOperation ?? new AndCondition(); MultiAdd(addTo, lastOperation); addTo = lastOperation; if (la.kind == 5) { Get(); NotCondition not = new NotCondition(); lastOperation.SetChild(not); lastOperation = not; } if (StartOf(3)) { Condition(lastOperation); } else if (la.kind == 6) { ConditionGroup(lastOperation); } else SynErr(44); if (la.kind == 9 || la.kind == 10) { Operation(out lastOperation); } else { lastOperation = null; } } if (lastOperation != null && lastOperation.Child == null) SemErr("Invalid Condition"); }