Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    recb27a7 rfbcde64  
    393393        | '(' compound_statement ')'                                            // GCC, lambda expression
    394394                { $$ = new ExpressionNode( build_valexpr( $2 ) ); }
    395         | primary_expression '{' argument_expression_list '}' // CFA
    396                 {
    397                         Token fn;
    398                         fn.str = new std::string( "?{}" );                      // location undefined - use location of '{'?
    399                         $$ = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_last( $3 ) ) ) );
    400                 }
    401395        ;
    402396
     
    431425        | '(' type_name_no_function ')' '{' initializer_list comma_opt '}' // C99, compound-literal
    432426                { $$ = new ExpressionNode( build_compoundLiteral( $2, new InitializerNode( $5, true ) ) ); }
    433         | '^' primary_expression '{' argument_expression_list '}' // CFA
     427        | postfix_expression '{' argument_expression_list '}' // CFA
    434428                {
    435429                        Token fn;
    436                         fn.str = new string( "^?{}" );                          // location undefined
    437                         $$ = new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_last( $4 ) ) );
     430                        fn.str = new std::string( "?{}" );                      // location undefined - use location of '{'?
     431                        $$ = new ExpressionNode( new ConstructorExpr( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $1 )->set_last( $3 ) ) ) );
    438432                }
    439433        ;
     
    736730        | exception_statement
    737731        | asm_statement
     732        | '^' postfix_expression '{' argument_expression_list '}' ';' // CFA
     733                {
     734                        Token fn;
     735                        fn.str = new string( "^?{}" );                          // location undefined
     736                        $$ = new StatementNode( build_expr( new ExpressionNode( build_func( new ExpressionNode( build_varref( fn ) ), (ExpressionNode *)( $2 )->set_last( $4 ) ) ) ) );
     737                }
     738        ;
    738739
    739740labeled_statement:
Note: See TracChangeset for help on using the changeset viewer.