bool ansi_c_typecheck( exprt &expr, message_handlert &message_handler, const namespacet &ns) { symbol_tablet symbol_table; ansi_c_parse_treet ansi_c_parse_tree; ansi_c_typecheckt ansi_c_typecheck( ansi_c_parse_tree, symbol_table, ns.get_symbol_table(), "", message_handler); try { ansi_c_typecheck.typecheck_expr(expr); } catch(int) { ansi_c_typecheck.error(); } catch(const char *e) { ansi_c_typecheck.error() << e << messaget::eom; } catch(const std::string &e) { ansi_c_typecheck.error() << e << messaget::eom; } return ansi_c_typecheck.get_error_found(); }
bool ansi_c_typecheck( exprt &expr, message_handlert &message_handler, const namespacet &ns) { contextt context; ansi_c_parse_treet ansi_c_parse_tree; ansi_c_typecheckt ansi_c_typecheck( ansi_c_parse_tree, context, ns.get_context(), "", 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(); }
bool ansi_c_typecheck( ansi_c_parse_treet &ansi_c_parse_tree, symbol_tablet &symbol_table, const std::string &module, message_handlert &message_handler) { ansi_c_typecheckt ansi_c_typecheck( ansi_c_parse_tree, symbol_table, module, message_handler); return ansi_c_typecheck.typecheck_main(); }
bool ansi_c_languaget::typecheck( symbol_tablet &symbol_table, const std::string &module) { symbol_tablet new_symbol_table; if(ansi_c_typecheck(parse_tree, new_symbol_table, module, get_message_handler())) return true; remove_internal_symbols(new_symbol_table); if(linking(symbol_table, new_symbol_table, get_message_handler())) return true; return false; }
bool ansi_c_languaget::typecheck( contextt &context, const std::string &module, message_handlert &message_handler) { if(ansi_c_convert(parse_tree, module, message_handler)) return true; contextt new_context; if(ansi_c_typecheck(parse_tree, new_context, module, message_handler)) return true; if(c_link(context, new_context, message_handler, module)) return true; return false; }