void EvalIf(MethodCallExpression exp, State state) { EvalExpression(exp.Arguments[0], state); var test = state.CurrentBlock.Formulas.Pop(); var condition = FormulaRef.Condition(test); state.CurrentBlock.Formulas.Push(condition); state.Conditions.Push(condition); state.PushBlock(); condition.IfTrue = state.CurrentBlock; }
void EvalElse(MethodCallExpression exp, State state) { state.PopBlock(); var prevCondition = state.Conditions.Pop(); state.Conditions.Push(prevCondition); state.PushBlock(); prevCondition.IfFalse = state.CurrentBlock; }