本文整理汇总了C++中AstInterface::IsConstant方法的典型用法代码示例。如果您正苦于以下问题:C++ AstInterface::IsConstant方法的具体用法?C++ AstInterface::IsConstant怎么用?C++ AstInterface::IsConstant使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AstInterface
的用法示例。
在下文中一共展示了AstInterface::IsConstant方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
std::string PtrAnal::
Get_VarName(AstInterface& fa, const AstNodePtr& rhs)
{
NameMap::const_iterator p = namemap.find(rhs.get_ptr());
if (p != namemap.end()) {
VarRef cur = (*p).second;
return cur.name;
}
std::string readname, res;
AstNodePtr readscope;
AstNodePtr lhs1, rhs1;
bool readlhs;
if (fa.IsVarRef(rhs, 0, &readname, &readscope)) {
assert(readname != "");
res = Local_GetVarName(fa, readscope, readname);
}
else if (fa.IsConstant(rhs,&res,&readname)) {
if (res == "string") {
readname = Local_GetVarName(fa, rhs);
Stmt stmt = allocate_x(readname);
stmts_pushback(stmts,stmt);
res= readname;
}
else
res = Local_GetConstName(fa, readname);
}
else if (fa.IsUnaryOp(rhs) || fa.IsBinaryOp(rhs) || fa.IsFunctionCall(rhs)) {
readname = Local_GetVarName(fa, rhs);
ProcessExpression(fa, readname, rhs);
res = readname;
}
else if (fa.IsAssignment(rhs,&lhs1,&rhs1,&readlhs)) {
ProcessAssign(fa, lhs1, rhs1, readlhs);
VarRef cur = namemap[lhs1.get_ptr()];
if (cur.name == "") {
std::cerr << "does not have map for " << AstToString(lhs1) << " in " << AstToString(rhs) << "\n";
assert(0);
}
namemap[rhs.get_ptr()] = cur;
res = cur.name;
}
else {
std::cerr << "No name found for " << AstToString(rhs) << "\n";
assert(false);
}
if (res == "") {
std::cerr << "No name found for " << AstToString(rhs) << "\n";
assert(false);
}
return res;
}