public Expression CreateSequence(Expression exp1, Expression exp2)
        {
            if (exp1 == Expression.Empty)
            {
                return(exp2);
            }
            if (exp2 == Expression.Empty)
            {
                return(exp1);
            }
            if (exp1 == Expression.NotAllowed || exp2 == Expression.NotAllowed)
            {
                return(Expression.NotAllowed);
            }

            if (exp2 is GroupExp)
            {
                // operators are left-associative.
                GroupExp right = (GroupExp)exp2;
                return(CreateSequence(CreateSequence(exp1, right.exp1), right.exp2));
            }

            return(Unify(new GroupExp(exp1, exp2)));
        }
Exemple #2
0
 public void OnGroup(GroupExp exp)
 {
     OnBinExp(exp, ",");
 }