@@ -2493,23 +2493,25 @@ iteration_statement:
24932493 if (!parser_stack ($7 ).operands ().empty ())
24942494 static_cast <exprt &>(parser_stack ($$).add (ID_C_spec_decreases)).operands ().swap (parser_stack ($7 ).operands ());
24952495 }
2496- | TOK_DO statement TOK_WHILE ' ( ' comma_expression ' ) '
2496+ | TOK_DO
24972497 cprover_contract_assigns_opt
2498- cprover_contract_loop_invariant_list_opt
2499- cprover_contract_decreases_opt ' ;'
2498+ cprover_contract_loop_invariant_list_opt
2499+ cprover_contract_decreases_opt
2500+ statement
2501+ TOK_WHILE ' (' comma_expression ' )' ' ;'
25002502 {
25012503 $$=$1 ;
25022504 statement ($$, ID_dowhile);
2503- parser_stack ($$).add_to_operands (std::move (parser_stack ($5 )), std::move (parser_stack ($2 )));
2505+ parser_stack ($$).add_to_operands (std::move (parser_stack ($8 )), std::move (parser_stack ($5 )));
25042506
2505- if (!parser_stack ($7 ).operands ().empty ())
2506- static_cast <exprt &>(parser_stack ($$).add (ID_C_spec_assigns)).operands ().swap (parser_stack ($7 ).operands ());
2507+ if (!parser_stack ($2 ).operands ().empty ())
2508+ static_cast <exprt &>(parser_stack ($$).add (ID_C_spec_assigns)).operands ().swap (parser_stack ($2 ).operands ());
25072509
2508- if (!parser_stack ($8 ).operands ().empty ())
2509- static_cast <exprt &>(parser_stack ($$).add (ID_C_spec_loop_invariant)).operands ().swap (parser_stack ($8 ).operands ());
2510+ if (!parser_stack ($3 ).operands ().empty ())
2511+ static_cast <exprt &>(parser_stack ($$).add (ID_C_spec_loop_invariant)).operands ().swap (parser_stack ($3 ).operands ());
25102512
2511- if (!parser_stack ($9 ).operands ().empty ())
2512- static_cast <exprt &>(parser_stack ($$).add (ID_C_spec_decreases)).operands ().swap (parser_stack ($9 ).operands ());
2513+ if (!parser_stack ($4 ).operands ().empty ())
2514+ static_cast <exprt &>(parser_stack ($$).add (ID_C_spec_decreases)).operands ().swap (parser_stack ($4 ).operands ());
25132515 }
25142516 | TOK_FOR
25152517 {
0 commit comments