Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/parser.yy

    r25744d2 ra491a3c  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Tue Oct  6 18:24:18 2020
    13 // Update Count     : 4610
     12// Last Modified On : Thu May 28 12:11:45 2020
     13// Update Count     : 4500
    1414//
    1515
     
    278278%token OTYPE FTYPE DTYPE TTYPE TRAIT                                    // CFA
    279279%token SIZEOF OFFSETOF
    280 // %token RESUME                                                                                        // CFA
    281 %token SUSPEND                                                                                  // CFA
     280// %token RESUME                                                                        // CFA
     281%token SUSPEND                                                                  // CFA
    282282%token ATTRIBUTE EXTENSION                                                              // GCC
    283283%token IF ELSE SWITCH CASE DEFAULT DO WHILE FOR BREAK CONTINUE GOTO RETURN
     
    329329%type<en> conditional_expression                constant_expression                     assignment_expression           assignment_expression_opt
    330330%type<en> comma_expression                              comma_expression_opt
    331 %type<en> argument_expression_list_opt  argument_expression                     default_initialize_opt
     331%type<en> argument_expression_list_opt          argument_expression                     default_initialize_opt
    332332%type<ifctl> if_control_expression
    333333%type<fctl> for_control_expression              for_control_expression_list
     
    370370%type<decl> assertion assertion_list assertion_list_opt
    371371
    372 %type<en> bit_subrange_size_opt bit_subrange_size
     372%type<en>   bit_subrange_size_opt bit_subrange_size
    373373
    374374%type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type indirect_type
     
    793793        | '(' aggregate_control '&' ')' cast_expression         // CFA
    794794                { $$ = new ExpressionNode( build_keyword_cast( $2, $5 ) ); }
     795                // VIRTUAL cannot be opt because of look ahead issues
    795796        | '(' VIRTUAL ')' cast_expression                                       // CFA
    796797                { $$ = new ExpressionNode( new VirtualCastExpr( maybeMoveBuild< Expression >( $4 ), maybeMoveBuildType( nullptr ) ) ); }
     
    919920        | unary_expression assignment_operator assignment_expression
    920921                {
    921 //                      if ( $2 == OperKinds::AtAssn ) {
    922 //                              SemanticError( yylloc, "C @= assignment is currently unimplemented." ); $$ = nullptr;
    923 //                      } else {
     922                        if ( $2 == OperKinds::AtAssn ) {
     923                                SemanticError( yylloc, "C @= assignment is currently unimplemented." ); $$ = nullptr;
     924                        } else {
    924925                                $$ = new ExpressionNode( build_binary_val( $2, $1, $3 ) );
    925 //                      } // if
     926                        } // if
    926927                }
    927928        | unary_expression '=' '{' initializer_list_opt comma_opt '}'
     
    16751676
    16761677typedef_expression:
    1677                 // deprecated GCC, naming expression type: typedef name = exp; gives a name to the type of an expression
     1678                // GCC, naming expression type: typedef name = exp; gives a name to the type of an expression
    16781679        TYPEDEF identifier '=' assignment_expression
    16791680                {
    1680                         SemanticError( yylloc, "Typedef expression is deprecated, use typeof(...) instead." ); $$ = nullptr;
     1681                        // $$ = DeclarationNode::newName( 0 );                  // unimplemented
     1682                        SemanticError( yylloc, "Typedef expression is currently unimplemented." ); $$ = nullptr;
    16811683                }
    16821684        | typedef_expression pop ',' push identifier '=' assignment_expression
    16831685                {
    1684                         SemanticError( yylloc, "Typedef expression is deprecated, use typeof(...) instead." ); $$ = nullptr;
    1685                 }
    1686         ;
     1686                        // $$ = DeclarationNode::newName( 0 );                  // unimplemented
     1687                        SemanticError( yylloc, "Typedef expression is currently unimplemented." ); $$ = nullptr;
     1688                }
     1689        ;
     1690
     1691//c_declaration:
     1692//      declaring_list pop ';'
     1693//      | typedef_declaration pop ';'
     1694//      | typedef_expression pop ';'                                            // GCC, naming expression type
     1695//      | sue_declaration_specifier pop ';'
     1696//      ;
     1697//
     1698//declaring_list:
     1699//              // A semantic check is required to ensure asm_name only appears on declarations with implicit or explicit static
     1700//              // storage-class
     1701//       declarator asm_name_opt initializer_opt
     1702//              {
     1703//                      typedefTable.addToEnclosingScope( IDENTIFIER );
     1704//                      $$ = ( $2->addType( $1 ))->addAsmName( $3 )->addInitializer( $4 );
     1705//              }
     1706//      | declaring_list ',' attribute_list_opt declarator asm_name_opt initializer_opt
     1707//              {
     1708//                      typedefTable.addToEnclosingScope( IDENTIFIER );
     1709//                      $$ = $1->appendList( $1->cloneBaseType( $4->addAsmName( $5 )->addInitializer( $6 ) ) );
     1710//              }
     1711//      ;
    16871712
    16881713c_declaration:
     
    16901715                { $$ = distAttr( $1, $2 ); }
    16911716        | typedef_declaration
    1692         | typedef_expression                                                            // deprecated GCC, naming expression type
     1717        | typedef_expression                                                            // GCC, naming expression type
    16931718        | sue_declaration_specifier
    16941719        ;
     
    20692094                { yyy = true; $$ = AggregateDecl::Union; }
    20702095        | EXCEPTION                                                                                     // CFA
    2071                 // { yyy = true; $$ = AggregateDecl::Exception; }
    2072                 { SemanticError( yylloc, "exception aggregate is currently unimplemented." ); $$ = AggregateDecl::NoAggregate; }
     2096                { yyy = true; $$ = AggregateDecl::Exception; }
    20732097        ;
    20742098
Note: See TracChangeset for help on using the changeset viewer.