本文整理汇总了C++中Stmt::parent方法的典型用法代码示例。如果您正苦于以下问题:C++ Stmt::parent方法的具体用法?C++ Stmt::parent怎么用?C++ Stmt::parent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Stmt
的用法示例。
在下文中一共展示了Stmt::parent方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: EvaluateExpression
bool Interpret::EvaluateExpression(const string& expr_str) {
string trim = expr_str;
trim.erase(trim.find_last_not_of(" \n\r\t")+1);
if (trim == "") {
return true;
}
ScopeTracer tracer(session(), "Interpret::EvaluateExpression()");
assert(_repl_module != NULL);
assert(_repl_block != NULL);
session()->diagnostic()->resetReport();
// Parses the expression.
Parser parser(trim, session());
Stmt* stmt = parser.parseStatement();
if (session()->diagnostic()->mostSignificantLevel() <= REPORT_ERROR) {
return false;
}
// resolving
Resolver resolver(session());
resolver.resolveAst(stmt);
_repl_block->addStatement(stmt);
stmt->parent(_repl_block);
// Resolves names.
resolver.resolveSymbol(stmt);
if (session()->diagnostic()->mostSignificantLevel() <= REPORT_ERROR) {
return false;
}
if (session()->config()->print_ast()) {
AstPrinter astPrinter(session(), stdout, session()->str_table());
astPrinter.print(stmt);
}
// Evaluates it.
Evaluator eval(this);
_eval = &eval;
Value* v = eval.evaluate(stmt);
if (v) {
printf("%s\n", v->toString().c_str());
}
env_curr()->clear();
return true;
}