本文整理汇总了C++中namespacet::get_context方法的典型用法代码示例。如果您正苦于以下问题:C++ namespacet::get_context方法的具体用法?C++ namespacet::get_context怎么用?C++ namespacet::get_context使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类namespacet
的用法示例。
在下文中一共展示了namespacet::get_context方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: show_symbol_table_plain
void show_symbol_table_plain(const namespacet &ns, std::ostream &out)
{
out << std::endl << "Symbols:" << std::endl;
out << "Number of symbols: " << ns.get_context().size() << std::endl;
out << std::endl;
ns.get_context().foreach_operand_in_order([&out, &ns](const symbolt &s) {
int mode;
if(s.mode == "")
mode = 0;
else
{
mode = get_mode(id2string(s.mode));
if(mode < 0)
throw "symbol " + id2string(s.name) + " has unknown mode";
}
std::unique_ptr<languaget> p(mode_table[mode].new_language());
std::string type_str, value_str;
if(s.type.is_not_nil())
p->from_type(s.type, type_str, ns);
if(s.value.is_not_nil())
p->from_expr(s.value, value_str, ns);
out << "Symbol......: " << s.name << std::endl;
out << "Pretty name.: " << s.pretty_name << std::endl;
out << "Module......: " << s.module << std::endl;
out << "Base name...: " << s.base_name << std::endl;
out << "Mode........: " << s.mode << " (" << mode << ")" << std::endl;
out << "Type........: " << type_str << std::endl;
out << "Value.......: " << value_str << std::endl;
out << "Flags.......:";
if(s.lvalue)
out << " lvalue";
if(s.static_lifetime)
out << " static_lifetime";
if(s.file_local)
out << " file_local";
if(s.is_type)
out << " type";
if(s.is_extern)
out << " extern";
if(s.is_macro)
out << " macro";
if(s.is_used)
out << " used";
out << std::endl;
out << "Location....: " << s.location << std::endl;
out << std::endl;
});
}
示例2: cpp_typecheck
bool cpp_typecheck(
exprt &expr,
message_handlert &message_handler,
const namespacet &ns)
{
contextt context;
cpp_parse_treet cpp_parse_tree;
cpp_typecheckt cpp_typecheck(
cpp_parse_tree, context, ns.get_context(), "", message_handler);
try
{
cpp_typecheck.typecheck_expr(expr);
}
catch(int e)
{
cpp_typecheck.error();
}
catch(const char *e)
{
cpp_typecheck.error(e);
}
catch(const std::string &e)
{
cpp_typecheck.error(e);
}
return cpp_typecheck.get_error_found();
}
示例3: ansi_c_typecheck
bool ansi_c_typecheck(
exprt &expr,
message_handlert &message_handler,
const namespacet &ns)
{
contextt context1, context2;
ansi_c_parse_treet ansi_c_parse_tree;
context1 = ns.get_context();
#if 0
ansi_c_typecheckt ansi_c_typecheck(
ansi_c_parse_tree, context,
ns.get_context(), "", message_handler);
#endif
ansi_c_typecheckt ansi_c_typecheck(
ansi_c_parse_tree, context1,
context2, "", message_handler);
try
{
ansi_c_typecheck.typecheck_expr(expr);
}
catch(int e)
{
ansi_c_typecheck.error();
}
catch(const char *e)
{
ansi_c_typecheck.error(e);
}
catch(const std::string &e)
{
ansi_c_typecheck.error(e);
}
return ansi_c_typecheck.get_error_found();
}
示例4: xml_typecheck
bool xml_typecheck(exprt &expr,
std::ostream &err,
const namespacet &ns)
{
contextt context;
xml_parse_treet xml_parse_tree;
#if 0
bool result=false;
xml_typecheckt xml_typecheck(xml_parse, context,
ns.get_context(), "", err);
try
{
xml_typecheck.typecheck_expr(expr);
}
catch(int e)
{
result=true;
}
catch(const char *e)
{
str << e << std::endl;
result=true;
}
catch(const std::string &e)
{
str << e << std::endl;
result=true;
}
return result;
#endif
return true;
}