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))); }
public void OnGroup(GroupExp exp) { OnBinExp(exp, ","); }