Changes between Version 110 and Version 111 of IR2
- Timestamp:
- 05/21/21 22:05:54 (5 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
IR2
v110 v111 138 138 | '$rel' type-args /* relation: set of n-tuples with specified component types */ 139 139 ; 140 declarator '*'* direct-declarator ;140 declarator: '*'* direct-declarator ; 141 141 direct-declarator: 142 142 ID /* variable being declared */ 143 | direct-declarator '[' expr?']' /* array of ... */143 | direct-declarator '[' ']' /* array of ... */ 144 144 | direct-declarator '(' parameter-type-list? ')' /* function consuming ... and returning ... */ 145 145 | '(' declarator ')' 146 146 ; 147 type-name: ... /* same as declarator but without the ID */ 147 abstract-declarator: '*'* abstract-direct-declarator ; 148 abstract-direct-declarator: 149 | abstract-direct-declarator '[' expr? ']' 150 | abstract-direct-declarator '(' parameter-type-list? ')' 151 | '(' abstract-declarator ')' 152 ; 153 type-name: type-specifier abstract-declarator ; 148 154 type-args: '<' type-name (',' type-name)* '>'; 149 155 parameter-type-list: type-specifier declarator (',' type-specifier declarator)* ; … … 178 184 }; 179 185 }}} 186 * A *pure type name* is one in which the optional length expression for an array type never occurs. 187 * A *complete type name* is defined recursively as follows: a struct or union type is complete if and only if all the member types are complete; an array type is complete if and only if the element type is complete and the length is specified; all other types are complete. 188 180 189 181 190 == Statements ==
