public void OnChoice( ChoiceExp exp )
 {
     if(exp.exp1==Expression.Empty) {
     OptimizedChoice(exp.exp2);
     return;
     }
     if(exp.exp2==Expression.Empty) {
     OptimizedChoice(exp.exp1);
     return;
     }
     OnBinExp(exp,"|");
 }
 public Expression OnChoice( ChoiceExp exp )
 {
     return builder.CreateChoice(
     exp.exp1.Visit(this),
     exp.exp2.Visit(this) );
 }
 public virtual Expression OnChoice(ChoiceExp exp)
 {
     return(builder.CreateChoice(
                exp.exp1.Visit(this),
                exp.exp2.Visit(this)));
 }
 public void OnChoice(ChoiceExp exp)
 {
     exp.exp1.Visit(this);
     exp.exp2.Visit(this);
 }