languaget has a new interface for messaging

This commit is contained in:
Daniel Kroening 2014-06-29 17:46:45 +00:00
parent 3b31563b10
commit 630e6bfdf3
7 changed files with 37 additions and 66 deletions

View File

@ -345,8 +345,7 @@ bool ebmc_baset::parse_property(
if(languages.to_expr(
property,
id2string(main_symbol->module),
expr,
get_message_handler()))
expr))
return true;
// make it AGp

View File

@ -25,8 +25,7 @@ Function: smv_languaget::parse
bool smv_languaget::parse(
std::istream &instream,
const std::string &path,
message_handlert &message_handler)
const std::string &path)
{
smv_parser.clear();
@ -37,7 +36,7 @@ bool smv_languaget::parse(
smv_parser.set_file(path);
smv_parser.in=&instream;
smv_parser.set_message_handler(message_handler);
smv_parser.set_message_handler(get_message_handler());
bool result=smv_parser.parse();
@ -117,10 +116,10 @@ Function: smv_languaget::typecheck
bool smv_languaget::typecheck(
symbol_tablet &symbol_table,
const std::string &module,
message_handlert &message_handler)
const std::string &module)
{
return smv_typecheck(smv_parse_tree, symbol_table, module, message_handler);
return smv_typecheck(smv_parse_tree, symbol_table, module,
get_message_handler());
}
/*******************************************************************\
@ -238,11 +237,9 @@ bool smv_languaget::to_expr(
const std::string &code,
const std::string &module,
exprt &expr,
message_handlert &message_handler,
const namespacet &ns)
{
messaget message(message_handler);
message.error("not yet implemented");
error("not yet implemented");
return true;
}

View File

@ -23,8 +23,7 @@ class smv_languaget:public languaget
public:
virtual bool parse(
std::istream &instream,
const std::string &path,
message_handlert &message_handler);
const std::string &path);
virtual void dependencies(
const std::string &module,
@ -35,8 +34,7 @@ public:
virtual bool typecheck(
symbol_tablet &symbol_table,
const std::string &module,
message_handlert &message_handler);
const std::string &module);
virtual void show_parse(std::ostream &out);
@ -56,7 +54,6 @@ public:
const std::string &code,
const std::string &module,
exprt &expr,
message_handlert &message_handler,
const namespacet &ns);
virtual std::string id() const { return "SMV"; }

View File

@ -31,19 +31,18 @@ Function: verilog_languaget::parse
bool verilog_languaget::parse(
std::istream &instream,
const std::string &path,
message_handlert &message_handler)
const std::string &path)
{
verilog_parser.clear();
std::stringstream str;
if(preprocess(instream, path, str, message_handler))
if(preprocess(instream, path, str))
return true;
verilog_parser.set_file(path);
verilog_parser.in=&str;
verilog_parser.set_message_handler(message_handler);
verilog_parser.set_message_handler(get_message_handler());
verilog_parser.grammar=verilog_parsert::LANGUAGE;
if(has_suffix(path, ".sv"))
@ -76,13 +75,12 @@ Function: verilog_languaget::preprocess
bool verilog_languaget::preprocess(
std::istream &instream,
const std::string &path,
std::ostream &outstream,
message_handlert &message_handler)
std::ostream &outstream)
{
std::stringstream str;
verilog_preprocessort preprocessor(
instream, outstream, message_handler, path);
instream, outstream, get_message_handler(), path);
try { preprocessor.preprocessor(); }
catch(int e) { return true; }
@ -157,17 +155,16 @@ Function: verilog_languaget::typecheck
bool verilog_languaget::typecheck(
symbol_tablet &symbol_table,
const std::string &module,
message_handlert &message_handler)
const std::string &module)
{
if(module=="") return false;
if(verilog_typecheck(parse_tree, symbol_table, module, message_handler))
if(verilog_typecheck(parse_tree, symbol_table, module, get_message_handler()))
return true;
message_handler.print(9, "Synthesis "+module);
print(9, "Synthesis "+module);
if(verilog_synthesis(symbol_table, module, message_handler, options))
if(verilog_synthesis(symbol_table, module, get_message_handler(), options))
return true;
return false;
@ -185,9 +182,7 @@ Function: verilog_languaget::interfaces
\*******************************************************************/
bool verilog_languaget::interfaces(
symbol_tablet &symbol_table,
message_handlert &message_handler)
bool verilog_languaget::interfaces(symbol_tablet &symbol_table)
{
return false;
}
@ -267,7 +262,6 @@ bool verilog_languaget::to_expr(
const std::string &code,
const std::string &module,
exprt &expr,
message_handlert &message_handler,
const namespacet &ns)
{
expr.make_nil();
@ -281,7 +275,7 @@ bool verilog_languaget::to_expr(
verilog_parser.clear();
verilog_parser.set_file("");
verilog_parser.in=&i_preprocessed;
verilog_parser.set_message_handler(message_handler);
verilog_parser.set_message_handler(get_message_handler());
verilog_parser.grammar=verilog_parsert::EXPRESSION;
verilog_scanner_init();
@ -291,7 +285,7 @@ bool verilog_languaget::to_expr(
expr.swap(verilog_parser.parse_tree.expr);
// typecheck it
result=verilog_typecheck(expr, module, message_handler, ns);
result=verilog_typecheck(expr, module, get_message_handler(), ns);
// save some memory
verilog_parser.clear();

View File

@ -20,13 +20,11 @@ public:
virtual bool preprocess(
std::istream &instream,
const std::string &path,
std::ostream &outstream,
message_handlert &message_handler);
std::ostream &outstream);
virtual bool parse(
std::istream &instream,
const std::string &path,
message_handlert &message_handler);
const std::string &path);
virtual void dependencies(
const std::string &module,
@ -36,13 +34,11 @@ public:
std::set<std::string> &module_set);
virtual bool interfaces(
symbol_tablet &symbol_table,
message_handlert &message_handler);
symbol_tablet &symbol_table);
virtual bool typecheck(
symbol_tablet &symbol_table,
const std::string &module,
message_handlert &message_handler);
const std::string &module);
virtual void show_parse(std::ostream &out);
@ -60,7 +56,6 @@ public:
const std::string &code,
const std::string &module,
exprt &expr,
message_handlert &message_handler,
const namespacet &ns);
virtual languaget *new_language()

View File

@ -30,14 +30,13 @@ Function: vhdl_languaget::parse
bool vhdl_languaget::parse(
std::istream &instream,
const std::string &path,
message_handlert &message_handler)
const std::string &path)
{
vhdl_parser.clear();
vhdl_parser.set_file(path);
vhdl_parser.in=&instream;
vhdl_parser.set_message_handler(message_handler);
vhdl_parser.set_message_handler(get_message_handler());
//vhdl_parser.grammar=vhdl_parsert::LANGUAGE;
//if(has_suffix(path, ".sv"))
@ -70,11 +69,9 @@ Function: vhdl_languaget::preprocess
bool vhdl_languaget::preprocess(
std::istream &instream,
const std::string &path,
std::ostream &outstream,
message_handlert &message_handler)
std::ostream &outstream)
{
messaget message(message_handler);
message.error("there is no VHDL preprocessing");
error("there is no VHDL preprocessing");
return true;
}
@ -149,8 +146,7 @@ Function: vhdl_languaget::typecheck
bool vhdl_languaget::typecheck(
symbol_tablet &symbol_table,
const std::string &module,
message_handlert &message_handler)
const std::string &module)
{
if(module=="") return false;
@ -180,8 +176,7 @@ Function: vhdl_languaget::interfaces
\*******************************************************************/
bool vhdl_languaget::interfaces(
symbol_tablet &symbol_table,
message_handlert &message_handler)
symbol_tablet &symbol_table)
{
return false;
}
@ -261,7 +256,6 @@ bool vhdl_languaget::to_expr(
const std::string &code,
const std::string &module,
exprt &expr,
message_handlert &message_handler,
const namespacet &ns)
{
expr.make_nil();
@ -274,7 +268,7 @@ bool vhdl_languaget::to_expr(
vhdl_parser.clear();
vhdl_parser.set_file("");
vhdl_parser.in=&i_preprocessed;
vhdl_parser.set_message_handler(message_handler);
vhdl_parser.set_message_handler(get_message_handler());
vhdl_parser.grammar=vhdl_parsert::EXPRESSION;
vhdl_scanner_init();

View File

@ -20,13 +20,11 @@ public:
virtual bool preprocess(
std::istream &instream,
const std::string &path,
std::ostream &outstream,
message_handlert &message_handler);
std::ostream &outstream);
virtual bool parse(
std::istream &instream,
const std::string &path,
message_handlert &message_handler);
const std::string &path);
virtual void dependencies(
const std::string &module,
@ -36,13 +34,11 @@ public:
std::set<std::string> &module_set);
virtual bool interfaces(
symbol_tablet &symbol_table,
message_handlert &message_handler);
symbol_tablet &symbol_table);
virtual bool typecheck(
symbol_tablet &symbol_table,
const std::string &module,
message_handlert &message_handler);
const std::string &module);
virtual void show_parse(std::ostream &out);
@ -60,7 +56,6 @@ public:
const std::string &code,
const std::string &module,
exprt &expr,
message_handlert &message_handler,
const namespacet &ns);
virtual languaget *new_language()