Changeset 3e5e32cf for src


Ignore:
Timestamp:
Feb 10, 2025, 10:34:14 PM (7 weeks ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
master
Children:
17fa94f, 4d5c5b6a
Parents:
3ae2069
Message:

small additions to the attribute problem, but not a complete fix

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified src/Parser/parser.yy

    r3ae2069 r3e5e32cf  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Thu Feb  6 11:40:06 2025
    13 // Update Count     : 7236
     12// Last Modified On : Mon Feb 10 21:56:46 2025
     13// Update Count     : 7252
    1414//
    1515
     
    21232123
    21242124cfa_typedef_declaration:                                                                // CFA
    2125         TYPEDEF cfa_variable_specifier
    2126                 {
    2127                         typedefTable.addToEnclosingScope( *$2->name, TYPEDEFname, "cfa_typedef_declaration 1" );
    2128                         $$ = $2->addTypedef();
    2129                 }
    2130         | TYPEDEF cfa_function_specifier
    2131                 {
    2132                         typedefTable.addToEnclosingScope( *$2->name, TYPEDEFname, "cfa_typedef_declaration 2" );
    2133                         $$ = $2->addTypedef();
    2134                 }
    2135         | cfa_typedef_declaration ',' identifier
    2136                 {
    2137                         typedefTable.addToEnclosingScope( *$3, TYPEDEFname, "cfa_typedef_declaration 3" );
    2138                         $$ = $1->set_last( $1->cloneType( $3 ) );
     2125        TYPEDEF attribute_list_opt cfa_variable_specifier
     2126                {
     2127                        typedefTable.addToEnclosingScope( *$3->name, TYPEDEFname, "cfa_typedef_declaration 1" );
     2128                        $$ = $3->addTypedef()->addQualifiers( $2 );
     2129                }
     2130        | TYPEDEF attribute_list_opt cfa_function_specifier
     2131                {
     2132                        typedefTable.addToEnclosingScope( *$3->name, TYPEDEFname, "cfa_typedef_declaration 2" );
     2133                        $$ = $3->addTypedef()->addQualifiers( $2 );
     2134                }
     2135        | cfa_typedef_declaration ',' attribute_list_opt identifier
     2136                {
     2137                        typedefTable.addToEnclosingScope( *$4, TYPEDEFname, "cfa_typedef_declaration 3" );
     2138                        $$ = $1->set_last( $1->cloneType( $4 )->addQualifiers( $3 ) );
    21392139                }
    21402140        ;
     
    21442144
    21452145typedef_declaration:
    2146         TYPEDEF type_specifier declarator
    2147                 {
    2148                         typedefTable.addToEnclosingScope( *$3->name, TYPEDEFname, "typedef_declaration 1" );
    2149                         if ( $2->type->forall || ($2->type->kind == TypeData::Aggregate && $2->type->aggregate.params) ) {
    2150                                 SemanticError( yylloc, "forall qualifier in typedef is currently unimplemented." ); $$ = nullptr;
    2151                         } else $$ = $3->addType( $2 )->addTypedef(); // watchout frees $2 and $3
    2152                 }
    2153         | TYPEDEF attribute_list type_specifier declarator
     2146        TYPEDEF attribute_list_opt type_specifier declarator
    21542147                {
    21552148                        typedefTable.addToEnclosingScope( *$4->name, TYPEDEFname, "typedef_declaration 1" );
     
    21582151                        } else $$ = $4->addType( $3 )->addTypedef()->addQualifiers( $2 ); // watchout frees $3 and $4
    21592152                }
    2160         | typedef_declaration ',' declarator
    2161                 {
    2162                         typedefTable.addToEnclosingScope( *$3->name, TYPEDEFname, "typedef_declaration 2" );
    2163                         $$ = $1->set_last( $1->cloneBaseType( $3 )->addTypedef() );
     2153        | typedef_declaration ',' attribute_list_opt declarator
     2154                {
     2155                        typedefTable.addToEnclosingScope( *$4->name, TYPEDEFname, "typedef_declaration 2" );
     2156                        $$ = $1->set_last( $1->cloneBaseType( $4 )->addTypedef()->addQualifiers( $3 ) );
    21642157                }
    21652158        | type_qualifier_list TYPEDEF type_specifier declarator // remaining OBSOLESCENT (see 2 )
     
    21742167                // deprecated GCC, naming expression type: typedef name = exp; gives a name to the type of an expression
    21752168        TYPEDEF identifier '=' assignment_expression
    2176                 {
    2177                         SemanticError( yylloc, "TYPEDEF expression is deprecated, use typeof(...) instead." ); $$ = nullptr;
    2178                 }
     2169                { SemanticError( yylloc, "TYPEDEF expression is deprecated, use typeof(...) instead." ); $$ = nullptr; }
    21792170        | typedef_expression ',' identifier '=' assignment_expression
    2180                 {
    2181                         SemanticError( yylloc, "TYPEDEF expression is deprecated, use typeof(...) instead." ); $$ = nullptr;
    2182                 }
     2171                { SemanticError( yylloc, "TYPEDEF expression is deprecated, use typeof(...) instead." ); $$ = nullptr; }
    21832172        ;
    21842173
Note: See TracChangeset for help on using the changeset viewer.