- Timestamp:
- Feb 10, 2025, 10:34:14 PM (7 weeks ago)
- Branches:
- master
- Children:
- 17fa94f, 4d5c5b6a
- Parents:
- 3ae2069
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/Parser/parser.yy ¶
r3ae2069 r3e5e32cf 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Feb 6 11:40:06 202513 // Update Count : 72 3612 // Last Modified On : Mon Feb 10 21:56:46 2025 13 // Update Count : 7252 14 14 // 15 15 … … 2123 2123 2124 2124 cfa_typedef_declaration: // CFA 2125 TYPEDEF cfa_variable_specifier2126 { 2127 typedefTable.addToEnclosingScope( *$ 2->name, TYPEDEFname, "cfa_typedef_declaration 1" );2128 $$ = $ 2->addTypedef();2129 } 2130 | TYPEDEF cfa_function_specifier2131 { 2132 typedefTable.addToEnclosingScope( *$ 2->name, TYPEDEFname, "cfa_typedef_declaration 2" );2133 $$ = $ 2->addTypedef();2134 } 2135 | cfa_typedef_declaration ',' identifier2136 { 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 ) ); 2139 2139 } 2140 2140 ; … … 2144 2144 2145 2145 typedef_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 2154 2147 { 2155 2148 typedefTable.addToEnclosingScope( *$4->name, TYPEDEFname, "typedef_declaration 1" ); … … 2158 2151 } else $$ = $4->addType( $3 )->addTypedef()->addQualifiers( $2 ); // watchout frees $3 and $4 2159 2152 } 2160 | typedef_declaration ',' declarator2161 { 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 ) ); 2164 2157 } 2165 2158 | type_qualifier_list TYPEDEF type_specifier declarator // remaining OBSOLESCENT (see 2 ) … … 2174 2167 // deprecated GCC, naming expression type: typedef name = exp; gives a name to the type of an expression 2175 2168 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; } 2179 2170 | 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; } 2183 2172 ; 2184 2173
Note: See TracChangeset
for help on using the changeset viewer.