Changes between Version 21 and Version 22 of IR2
- Timestamp:
- 04/26/21 15:08:15 (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
IR2
v21 v22 15 15 | 'typedef' type-specifier declarator ';' 16 16 ; 17 decl: type-qualifier? type-specifier declarator ';' ; 18 fundef: type-specifier declarator block ; 19 block: '{' typedef* vardecl* fundef* statement* '}' ; 17 decl: qualifier? type-specifier declarator contract-clause* ';' ; 18 qualifier: '$input' | '$output' | '$abstract' | '$system' '<' STRING ',' STRING '>' ; 19 function-definition: '$atomic_f'? type-specifier declarator contract-clause* block ; 20 block: '{' typedef* decl* function-definition* statement* '}' ; 20 21 statement: block | simpleStmt | chooseStmt ; 21 22 simpleStmt: label? guard? primitiveStmt gotoStmt? ; … … 24 25 guard: '$when' '(' expr ')' ; 25 26 gotoStmt: 'goto' ID ; 26 expr: 27 simpleStmt: 28 INT /* integer constant */ 29 ID /* identifier */ 30 conclause : 'assigns' expr ';' 31 | 'requires' expr ';' 32 | 'ensures' expr ';' 33 ... 27 INT: ... /* integer constant */ 28 ID: ... /* identifier */ 29 contract-clause : 30 '$assigns' expr ';' 31 | '$requires' expr ';' 32 | '$ensures' expr ';' 33 ... 34 34 35 35 }}} … … 60 60 | '$rel' '<' type-list '>' /* relation: set of n-tuples with specified component types */ 61 61 ; 62 type-qualifier: '$input' | '$output' ;63 62 declarator: '*'* ID ('[' ']' | '(' type-list? ')')* ; 64 63 type-name: type-specifier '*'* ('[' ']' | '(' type-list? ')')* ; … … 82 81 83 82 {{{ 84 simple-statement:83 primitiveStmt: 85 84 ';' /* noop */ 86 85 | lvalue '=' expr ';' /* assignment */ … … 103 102 }}} 104 103 104 === Expressions === 105 106 {{{ 107 expr: 108 109 }}} 110 111 112
