public Formula Visit(ConditionalFormula formula) { return formula; }
public virtual Formula Visit(ConditionalFormula formula) { Visit((Formula)formula); if (formula.Test != null) formula.Test.Accept(this); if (formula.IfTrue != null) formula.IfTrue.Accept(this); if (formula.IfFalse != null) formula.IfFalse.Accept(this); return visitor.Visit(formula); }
public override Formula Visit(ConditionalFormula formula) { IncreaseIfNecessary(formula.Test, _ => _.TypeDeclaration, increased => formula.Test = increased); return base.Visit(formula); }
public static void EvalIf(MethodCallExpression exp, ExpressionToFormulaState state) { EvalExpression(exp.Arguments[0], state); var test = state.CurrentBlock.Formulas.Pop(); var condition = new ConditionalFormula() { Test = test }; state.CurrentBlock.Formulas.Push(condition); state.Conditions.Push(condition); state.PushBlock(); condition.IfTrue = state.CurrentBlock; }