Skip to content

Commit ec43ea3

Browse files
author
Aalok Thakkar
committed
Created cprover_loop_contract
1. Created cprover_loop_contract that has loop_invariant_opt and cprover_contract_assigns_opt. 2. Created cprover_loop_contract_sequence_opt. 3. Added cprover_loop_contract_sequence_opt to iteration_statement for all three types of loops. This adds support for parsing assigns clauses for loops.
1 parent 3c62abb commit ec43ea3

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

src/ansi-c/parser.y

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2418,7 +2418,7 @@ declaration_or_expression_statement:
24182418

24192419
iteration_statement:
24202420
TOK_WHILE '(' comma_expression_opt ')'
2421-
loop_invariant_opt statement
2421+
cprover_loop_contract_sequence_opt statement
24222422
{
24232423
$$=$1;
24242424
statement($$, ID_while);
@@ -2428,7 +2428,7 @@ iteration_statement:
24282428
parser_stack($$).add(ID_C_spec_loop_invariant).swap(parser_stack($5));
24292429
}
24302430
| TOK_DO statement TOK_WHILE '(' comma_expression ')'
2431-
loop_invariant_opt ';'
2431+
cprover_loop_contract_sequence_opt ';'
24322432
{
24332433
$$=$1;
24342434
statement($$, ID_dowhile);
@@ -2449,7 +2449,7 @@ iteration_statement:
24492449
'(' declaration_or_expression_statement
24502450
comma_expression_opt ';'
24512451
comma_expression_opt ')'
2452-
loop_invariant_opt
2452+
cprover_loop_contract_sequence_opt
24532453
statement
24542454
{
24552455
$$=$1;
@@ -3269,6 +3269,23 @@ cprover_function_contract_sequence_opt:
32693269
/* nothing */
32703270
{ init($$); }
32713271
| cprover_function_contract_sequence
3272+
<<<<<<< HEAD
3273+
=======
3274+
;
3275+
3276+
cprover_loop_contract:
3277+
loop_invariant_opt
3278+
| cprover_contract_assigns_opt
3279+
;
3280+
3281+
cprover_loop_contract_sequence_opt:
3282+
cprover_loop_contract
3283+
| cprover_loop_contract_sequence_opt cprover_loop_contract
3284+
{
3285+
$$=$1;
3286+
merge($$, $2);
3287+
}
3288+
>>>>>>> 863623ddd... Created cprover_loop_contract
32723289
;
32733290

32743291
postfixing_abstract_declarator:

0 commit comments

Comments
 (0)