private Expression IfElseStatementRule() { Expect(TokenType.If); var cond = ExpressionRule(); Expect(TokenType.Colon); var scope = scopeManager.PushBlock(); var body = StatementSuiteRule().ToList(); var comp = Expression.Dynamic(runtime.GetUnaryCallSite(ExpressionType.IsTrue), typeof(Any), cond); var ifElse = Expression.IfThen(Expression.Equal(comp, Expression.Constant(Bool.True)), scope.Pack(body)); scopeManager.Pop(); return(ifElse); }