Skip to content

Commit e3a84b6

Browse files
committed
update parser to grab assigns clauses on loops
1 parent d0e6b9a commit e3a84b6

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

src/ansi-c/parser.y

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2453,6 +2453,9 @@ iteration_statement:
24532453
statement($$, ID_while);
24542454
parser_stack($$).add_to_operands(std::move(parser_stack($3)), std::move(parser_stack($8)));
24552455

2456+
if(!parser_stack($5).operands().empty())
2457+
static_cast<exprt &>(parser_stack($$).add(ID_C_spec_assigns)).operands().swap(parser_stack($5).operands());
2458+
24562459
if(!parser_stack($6).operands().empty())
24572460
static_cast<exprt &>(parser_stack($$).add(ID_C_spec_loop_invariant)).operands().swap(parser_stack($6).operands());
24582461

@@ -2468,6 +2471,9 @@ iteration_statement:
24682471
statement($$, ID_dowhile);
24692472
parser_stack($$).add_to_operands(std::move(parser_stack($5)), std::move(parser_stack($2)));
24702473

2474+
if(!parser_stack($7).operands().empty())
2475+
static_cast<exprt &>(parser_stack($$).add(ID_C_spec_assigns)).operands().swap(parser_stack($7).operands());
2476+
24712477
if(!parser_stack($8).operands().empty())
24722478
static_cast<exprt &>(parser_stack($$).add(ID_C_spec_loop_invariant)).operands().swap(parser_stack($8).operands());
24732479

@@ -2499,6 +2505,9 @@ iteration_statement:
24992505
mto($$, $7);
25002506
mto($$, $12);
25012507

2508+
if(!parser_stack($9).operands().empty())
2509+
static_cast<exprt &>(parser_stack($$).add(ID_C_spec_assigns)).operands().swap(parser_stack($9).operands());
2510+
25022511
if(!parser_stack($10).operands().empty())
25032512
static_cast<exprt &>(parser_stack($$).add(ID_C_spec_loop_invariant)).operands().swap(parser_stack($10).operands());
25042513

0 commit comments

Comments
 (0)