Changes in src/Parser/parser.yy [bd85400:097e2b0]
- File:
-
- 1 edited
-
src/Parser/parser.yy (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/parser.yy
rbd85400 r097e2b0 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Feb 1 18:22:42 201613 // Update Count : 14 8312 // Last Modified On : Thu Oct 8 17:17:54 2015 13 // Update Count : 1473 14 14 // 15 15 … … 78 78 %token ENUM STRUCT UNION 79 79 %token TYPE FTYPE DTYPE CONTEXT // CFA 80 %token SIZEOF OFFSETOF80 %token SIZEOF 81 81 %token ATTRIBUTE EXTENSION // GCC 82 82 %token IF ELSE SWITCH CASE DEFAULT DO WHILE FOR BREAK CONTINUE GOTO RETURN … … 319 319 ; 320 320 321 // no zero_one because ambiguity with 0.0 : double constant or field selection 321 322 no_attr_identifier: 322 323 IDENTIFIER 323 | zero_one // CFA324 324 ; 325 325 … … 357 357 | postfix_expression '(' argument_expression_list ')' 358 358 { $$ = new CompositeExprNode( $1, $3 ); } 359 // ambiguity with .0 so space required after field-selection, e.g.360 // struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;361 359 | postfix_expression '.' no_attr_identifier 362 360 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), $1, new VarRefNode( $3 )); } … … 407 405 no_attr_identifier 408 406 { $$ = new VarRefNode( $1 ); } 409 // ambiguity with .0 so space required after field-selection, e.g.410 // struct S { int 0, 1; } s; s. 0 = 0; s. 1 = 1;411 407 | no_attr_identifier '.' field 412 408 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::FieldSel ), new VarRefNode( $1 ), $3 ); } … … 447 443 | SIZEOF '(' type_name_no_function ')' 448 444 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::SizeOf ), new TypeValueNode( $3 )); } 449 | OFFSETOF '(' type_name_no_function ',' no_attr_identifier ')'450 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::OffsetOf ), new TypeValueNode( $3 ), new VarRefNode( $5 )); }451 445 | ATTR_IDENTIFIER 452 446 { $$ = new CompositeExprNode( new OperatorNode( OperatorNode::Attr ), new VarRefNode( $1 )); }
Note:
See TracChangeset
for help on using the changeset viewer.