Example #1
0
        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");
            }
        }
Example #2
0
	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"); 
	}