本文整理汇总了C++中VM::initRepl方法的典型用法代码示例。如果您正苦于以下问题:C++ VM::initRepl方法的具体用法?C++ VM::initRepl怎么用?C++ VM::initRepl使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VM
的用法示例。
在下文中一共展示了VM::initRepl方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: repl
int repl(VM& vm)
{
std::cout << std::endl;
std::cout << " _/Oo>" << std::endl;
std::cout << " /__/ magpie v0.0.0" << std::endl;
std::cout << "____//hh___________________" << std::endl;
std::cout << " //" << std::endl;
std::cout << std::endl;
std::cout << "Type 'Ctrl+C' to exit." << std::endl;
if (!vm.initRepl())
{
std::cerr << "Could not initialize REPL." << std::endl;
return 1;
}
while (true)
{
gc<String> code;
gc<Expr> expr;
while (true)
{
gc<String> line = readLine(!code.isNull());
if (line.isNull()) return 0;
if (code.isNull())
{
code = line;
}
else
{
code = String::format("%s\n%s", code->cString(), line->cString());
}
gc<SourceFile> source = new SourceFile(String::create("<repl>"), code);
ErrorReporter reporter(true);
Parser parser(source, reporter);
expr = parser.parseExpression();
if (reporter.needMoreLines()) continue;
if (reporter.numErrors() == 0) break;
return 3;
}
// Evaluate the expression.
gc<Object> result = vm.evaluateReplExpression(expr);
// Don't show the result if it's a definition.
if (expr->asDefExpr() != NULL) continue;
if (expr->asDefClassExpr() != NULL) continue;
std::cout << "= " << result << std::endl;
}
}