Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    r401e61f recae5860  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Mon Jun  4 22:22:04 2018
    13 // Update Count     : 3492
     12// Last Modified On : Fri Jun  1 17:59:57 2018
     13// Update Count     : 3476
    1414//
    1515
     
    10501050
    10511051iteration_statement:
    1052         WHILE '(' push if_control_expression ')' statement pop
    1053                 { $$ = new StatementNode( build_while( $4, $6 ) ); }
     1052        WHILE '(' comma_expression ')' statement
     1053                { $$ = new StatementNode( build_while( $3, $5 ) ); }
    10541054        | DO statement WHILE '(' comma_expression ')' ';'
    1055                 { $$ = new StatementNode( build_do_while( $5, $2 ) ); }
     1055                { $$ = new StatementNode( build_while( $5, $2, true ) ); }
    10561056        | FOR '(' push for_control_expression ')' statement pop
    10571057                { $$ = new StatementNode( build_for( $4, $6 ) ); }
     
    13311331        c_declaration ';'
    13321332        | cfa_declaration ';'                                                           // CFA
    1333         | static_assert                                                                         // C11
     1333        | static_assert
    13341334        ;
    13351335
     
    13371337        STATICASSERT '(' constant_expression ',' string_literal ')' ';' // C11
    13381338                { $$ = DeclarationNode::newStaticAssert( $3, $5 ); }
    1339         | STATICASSERT '(' constant_expression ')' ';'          // CFA
    1340                 { $$ = DeclarationNode::newStaticAssert( $3, build_constantStr( *new string( "\"\"" ) ) ); }
    13411339
    13421340// C declaration syntax is notoriously confusing and error prone. Cforall provides its own type, variable and function
     
    18831881
    18841882field_declaration:
    1885         type_specifier field_declaring_list ';'
    1886                 { $$ = distAttr( $1, $2 ); }
     1883        cfa_field_declaring_list ';'                                            // CFA, new style field declaration
     1884        | EXTENSION cfa_field_declaring_list ';'                        // GCC
     1885                {
     1886                        distExt( $2 );                                                          // mark all fields in list
     1887                        $$ = $2;
     1888                }
     1889        | type_specifier field_declaring_list ';'
     1890                {
     1891                        $$ = distAttr( $1, $2 ); }
    18871892        | EXTENSION type_specifier field_declaring_list ';'     // GCC
    1888                 { distExt( $3 ); $$ = distAttr( $2, $3 ); }             // mark all fields in list
    1889         | typedef_declaration ';'                                                       // CFA
    1890                 { SemanticError( yylloc, "Typedef in aggregate is currently unimplemented." ); $$ = nullptr; }
    1891         | cfa_field_declaring_list ';'                                          // CFA, new style field declaration
    1892         | EXTENSION cfa_field_declaring_list ';'                        // GCC
    1893                 { distExt( $2 ); $$ = $2; }                                             // mark all fields in list
    1894         | cfa_typedef_declaration ';'                                           // CFA
    1895                 { SemanticError( yylloc, "Typedef in aggregate is currently unimplemented." ); $$ = nullptr; }
    1896         | static_assert                                                                         // C11
     1893                {
     1894                        distExt( $3 );                                                          // mark all fields in list
     1895                        $$ = distAttr( $2, $3 );
     1896                }
     1897        | static_assert
    18971898        ;
    18981899
Note: See TracChangeset for help on using the changeset viewer.