@@ -8,6 +8,12 @@ Author: Daniel Kroening, kroening@kroening.com
88
99#include " smv_parse_tree.h"
1010
11+ #include < util/namespace.h>
12+ #include < util/symbol_table.h>
13+
14+ #include " expr2smv.h"
15+ #include " smv_expr.h"
16+
1117/* ******************************************************************\
1218
1319Function: smv_parse_treet::swap
@@ -90,3 +96,57 @@ std::string to_string(smv_parse_treet::modulet::elementt::element_typet i)
9096
9197 return " " ;
9298}
99+
100+ void smv_parse_treet::show (std::ostream &out) const
101+ {
102+ for (auto &module_it : modules)
103+ {
104+ auto &module = module_it.second ;
105+
106+ out << " Module: " << module .name << std::endl << std::endl;
107+
108+ out << " PARAMETERS:\n " ;
109+
110+ for (auto ¶meter : module .parameters )
111+ out << " " << parameter << ' \n ' ;
112+
113+ out << ' \n ' ;
114+
115+ out << " VARIABLES:" << std::endl;
116+
117+ for (auto &element : module .elements )
118+ if (element.is_var () && element.expr .type ().id () != ID_smv_submodule)
119+ {
120+ symbol_tablet symbol_table;
121+ namespacet ns{symbol_table};
122+ auto identifier = to_smv_identifier_expr (element.expr ).identifier ();
123+ auto msg = type2smv (element.expr .type (), ns);
124+ out << " " << identifier << " : " << msg << " ;\n " ;
125+ }
126+
127+ out << std::endl;
128+
129+ out << " SUBMODULES:" << std::endl;
130+
131+ for (auto &element : module .elements )
132+ if (element.is_var () && element.expr .type ().id () == ID_smv_submodule)
133+ {
134+ symbol_tablet symbol_table;
135+ namespacet ns (symbol_table);
136+ auto identifier = to_smv_identifier_expr (element.expr ).identifier ();
137+ auto msg = type2smv (element.expr .type (), ns);
138+ out << " " << identifier << " : " << msg << " ;\n " ;
139+ }
140+
141+ out << std::endl;
142+
143+ out << " ITEMS:" << std::endl;
144+
145+ for (auto &element : module .elements )
146+ {
147+ out << " TYPE: " << to_string (element.element_type ) << ' \n ' ;
148+ out << " EXPR: " << element.expr .pretty () << ' \n ' ;
149+ out << std::endl;
150+ }
151+ }
152+ }
0 commit comments