Skip to content

Commit 83a39db

Browse files
author
Aalok Thakkar
committed
Created cprover_loop_contract
1. Created cprover_loop_contract that has cprover_contract_assigns_opt and loop_invariant_opt. This adds support for parsing assigns clauses for loops.
1 parent 3c62abb commit 83a39db

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/ansi-c/parser.y

Lines changed: 9 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 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 ';'
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
24532453
statement
24542454
{
24552455
$$=$1;
@@ -3271,6 +3271,12 @@ cprover_function_contract_sequence_opt:
32713271
| cprover_function_contract_sequence
32723272
;
32733273

3274+
cprover_loop_contract:
3275+
cprover_contract_assigns_opt
3276+
loop_invariant_opt
3277+
| loop_invariant_opt
3278+
;
3279+
32743280
postfixing_abstract_declarator:
32753281
parameter_postfixing_abstract_declarator
32763282
/* The following two rules implement K&R headers! */

0 commit comments

Comments
 (0)