void Interpreter::Interpret(ILineReader & reader, bool showResult) { Ref<Expr> expr = Parse(reader); // Bail if we failed to parse. if (expr.IsNull()) return; // Create a starting fiber for the expression. Ref<Block> block = Compiler::CompileTopLevel(*this, *expr); Value blockObj = NewBlock(block, mNil); Value fiber = NewFiber(blockObj); // Run the interpreter. Value result = fiber.AsFiber()->GetFiber().Execute(); if (showResult) { std::stringstream text; text << result << std::endl; mHost.Output(String(text.str().c_str())); } }