File tree Expand file tree Collapse file tree 5 files changed +64
-6
lines changed
Expand file tree Collapse file tree 5 files changed +64
-6
lines changed Original file line number Diff line number Diff line change 1+ CORE
2+ show-modules-smv.smv
3+ --show-modules
4+ activate-multi-line-match
5+ Module 1:
6+ Location: file show-modules-smv\.smv line 3
7+ Identifier: smv::main
8+ Name: main
9+
10+ Module 2:
11+ Location: file show-modules-smv\.smv line 8
12+ Identifier: smv::bar
13+ Name: bar
14+
15+ Module 3:
16+ Location: file show-modules-smv\.smv line 13
17+ Identifier: smv::foo
18+ Name: foo
19+ ^EXIT=0$
20+ ^SIGNAL=0$
21+ --
Original file line number Diff line number Diff line change 1+ -- from the NuSMV 2.7 manual
2+
3+ MODULE main
4+ VAR
5+ a : bar;
6+ m : foo(a);
7+
8+ MODULE bar
9+ VAR
10+ q : boolean;
11+ p : boolean;
12+
13+ MODULE foo(c)
14+ DEFINE
15+ flag := c.q | c.p;
Original file line number Diff line number Diff line change @@ -177,7 +177,7 @@ Function: new_module
177177
178178\*******************************************************************/
179179
180- static smv_parse_treet::modulet &new_module (YYSTYPE &module_name)
180+ static smv_parse_treet::modulet &new_module (YYSTYPE &location, YYSTYPE & module_name)
181181{
182182 auto base_name = stack_expr (module_name).id_string ();
183183 const std::string identifier=smv_module_symbol (base_name);
@@ -186,6 +186,7 @@ static smv_parse_treet::modulet &new_module(YYSTYPE &module_name)
186186 PARSER.parse_tree .module_map [identifier] = --PARSER.parse_tree .module_list .end ();
187187 module .name = identifier;
188188 module .base_name = base_name;
189+ module .source_location = stack_expr (location).source_location ();
189190 PARSER.module = &module ;
190191 return module ;
191192}
@@ -363,8 +364,11 @@ module_name: IDENTIFIER_Token
363364 | STRING_Token
364365 ;
365366
366- module_head : MODULE_Token module_name { new_module($2 ); }
367- | MODULE_Token module_name { new_module($2 ); }
367+ module_keyword : MODULE_Token { init($$ ); /* for the location */ }
368+ ;
369+
370+ module_head : module_keyword module_name { new_module($1 , $2 ); }
371+ | module_keyword module_name { new_module($1 , $2 ); }
368372 ' (' module_parameters_opt ' )'
369373 ;
370374
Original file line number Diff line number Diff line change @@ -70,9 +70,26 @@ std::optional<transition_systemt> smv_ebmc_languaget::transition_system()
7070 return {};
7171 }
7272
73- if (
74- cmdline.isset (" show-modules" ) || cmdline.isset (" modules-xml" ) ||
75- cmdline.isset (" json-modules" ))
73+ if (cmdline.isset (" show-modules" ))
74+ {
75+ std::size_t count = 0 ;
76+ auto &out = std::cout;
77+
78+ for (const auto &module : parse_tree.module_list )
79+ {
80+ count++;
81+
82+ out << " Module " << count << " :" << ' \n ' ;
83+
84+ out << " Location: " << module .source_location << ' \n ' ;
85+ out << " Identifier: " << module .name << ' \n ' ;
86+ out << " Name: " << module .base_name << ' \n ' << ' \n ' ;
87+ }
88+
89+ return {};
90+ }
91+
92+ if (cmdline.isset (" modules-xml" ) || cmdline.isset (" json-modules" ))
7693 {
7794 // show_modules(cmdline, message_handler);
7895 return {};
Original file line number Diff line number Diff line change @@ -29,6 +29,7 @@ class smv_parse_treet
2929
3030 struct modulet
3131 {
32+ source_locationt source_location;
3233 irep_idt name, base_name;
3334 std::vector<irep_idt> parameters;
3435
You can’t perform that action at this time.
0 commit comments