Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    r5c216b4 r3b0bc16  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Sat Feb 19 09:47:20 2022
    13 // Update Count     : 5218
     12// Last Modified On : Tue Feb  1 11:06:13 2022
     13// Update Count     : 5167
    1414//
    1515
     
    10521052        identifier_or_type_name ':' attribute_list_opt statement
    10531053                { $$ = $4->add_label( $1, $3 ); }
    1054         | identifier_or_type_name ':' attribute_list_opt error
    1055                 { SemanticError( yylloc, "previous label must be associated with a statement (where a declaration is not a statement). Move the label or terminate with a semi-colon." ); $$ = nullptr; }
    10561054        ;
    10571055
     
    10881086        | statement_list_nodecl statement
    10891087                { assert( $1 ); $1->set_last( $2 ); $$ = $1; }
    1090         | statement_list_nodecl error
    1091                 { SemanticError( yylloc, "declarations only allowed at the start of the switch body, i.e., after the '{'." ); $$ = nullptr; }
    10921088        ;
    10931089
     
    10971093        | MUTEX '(' ')' comma_expression ';'
    10981094                { $$ = new StatementNode( build_mutex( nullptr, new StatementNode( build_expr( $4 ) ) ) ); }
     1095                // { SemanticError( yylloc, "Mutex expression is currently unimplemented." ); $$ = nullptr; }
    10991096        ;
    11001097
     
    11161113                        $$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
    11171114                }
    1118         | SWITCH '(' comma_expression ')' '{' error '}'         // CFA
    1119                 { SemanticError( yylloc, "only declarations can appear before the list of case clauses." ); $$ = nullptr; }
    11201115        | CHOOSE '(' comma_expression ')' case_clause           // CFA
    11211116                { $$ = new StatementNode( build_switch( false, $3, $5 ) ); }
     
    11251120                        $$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
    11261121                }
    1127         | CHOOSE '(' comma_expression ')' '{' error '}'         // CFA
    1128                 { SemanticError( yylloc, "only declarations can appear before the list of case clauses." ); $$ = nullptr; }
    11291122        ;
    11301123
     
    11651158
    11661159case_label:                                                                                             // CFA
    1167         CASE error
    1168                 { SemanticError( yylloc, "missing case list after case." ); $$ = nullptr; }
    1169         | CASE case_value_list ':'                                      { $$ = $2; }
    1170         | CASE case_value_list error
    1171                 { SemanticError( yylloc, "missing colon after case list." ); $$ = nullptr; }
     1160        CASE case_value_list ':'                                        { $$ = $2; }
    11721161        | DEFAULT ':'                                                           { $$ = new StatementNode( build_default() ); }
    11731162                // A semantic check is required to ensure only one default clause per switch/choose statement.
    1174         | DEFAULT error
    1175                 { SemanticError( yylloc, "missing colon after default." ); $$ = nullptr; }
    1176         ;
     1163        ;
     1164
     1165//label_list_opt:
     1166//      // empty
     1167//      | identifier_or_type_name ':'
     1168//      | label_list_opt identifier_or_type_name ':'
     1169//      ;
    11771170
    11781171case_label_list:                                                                                // CFA
     
    12041197                { $$ = new StatementNode( build_while( $3, maybe_build_compound( $5 ) ) ); }
    12051198        | WHILE '(' conditional_declaration ')' statement ELSE statement // CFA
     1199                // { SemanticError( yylloc, "Loop default block is currently unimplemented." ); $$ = nullptr; }
    12061200                { $$ = new StatementNode( build_while( $3, maybe_build_compound( $5 ), $7 ) ); }
    12071201        | DO statement WHILE '(' ')' ';'                                        // CFA => do while( 1 )
     
    12101204                { $$ = new StatementNode( build_do_while( $5, maybe_build_compound( $2 ) ) ); }
    12111205        | DO statement WHILE '(' comma_expression ')' ELSE statement // CFA
     1206                // { SemanticError( yylloc, "Loop default block is currently unimplemented." ); $$ = nullptr; }
    12121207                { $$ = new StatementNode( build_do_while( $5, maybe_build_compound( $2 ), $8 ) ); }
    12131208        | FOR '(' ')' statement                                                         // CFA => for ( ;; )
     
    12161211                { $$ = new StatementNode( build_for( $3, maybe_build_compound( $5 ) ) ); }
    12171212        | FOR '(' for_control_expression_list ')' statement ELSE statement // CFA
     1213                // { SemanticError( yylloc, "Loop default block is currently unimplemented." ); $$ = nullptr; }
    12181214                { $$ = new StatementNode( build_for( $3, maybe_build_compound( $5 ), $7 ) ); }
    12191215        ;
     
    27332729        | ASM '(' string_literal ')' ';'                                        // GCC, global assembler statement
    27342730                { $$ = DeclarationNode::newAsmStmt( new StatementNode( build_asm( false, $3, 0 ) ) ); }
    2735         | EXTERN STRINGliteral
    2736                 {
    2737                         linkageStack.push( linkage );                           // handle nested extern "C"/"Cforall"
    2738                         linkage = LinkageSpec::update( yylloc, linkage, $2 );
    2739                 }
    2740           up external_definition down
    2741                 {
    2742                         linkage = linkageStack.top();
    2743                         linkageStack.pop();
    2744                         $$ = $5;
    2745                 }
    27462731        | EXTERN STRINGliteral                                                          // C++-style linkage specifier
    27472732                {
Note: See TracChangeset for help on using the changeset viewer.