Changes in src/Parser/parser.yy [8b47e50:cda7889]
- File:
-
- 1 edited
-
src/Parser/parser.yy (modified) (20 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/parser.yy
r8b47e50 rcda7889 9 9 // Author : Peter A. Buhr 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 // Last Modified By : Peter A. Buhr12 // Last Modified On : Wed Jul 12 18:23:36201713 // Update Count : 24 2611 // Last Modified By : Andrew Beach 12 // Last Modified On : Fri Jun 30 15:38:00 2017 13 // Update Count : 2415 14 14 // 15 15 … … 129 129 %token ATTRIBUTE EXTENSION // GCC 130 130 %token IF ELSE SWITCH CASE DEFAULT DO WHILE FOR BREAK CONTINUE GOTO RETURN 131 %token CHOOSE DISABLE ENABLE FALLTHRU TRY CATCH CATCHRESUME FINALLY THROW THROWRESUME AT WITH// CFA131 %token CHOOSE DISABLE ENABLE FALLTHRU TRY CATCH CATCHRESUME FINALLY THROW THROWRESUME AT // CFA 132 132 %token ASM // C99, extension ISO/IEC 9899:1999 Section J.5.10(1) 133 133 %token ALIGNAS ALIGNOF GENERIC STATICASSERT // C11 … … 184 184 // statements 185 185 %type<sn> labeled_statement compound_statement expression_statement selection_statement 186 %type<sn> iteration_statement jump_statement 187 %type<sn> with_statement exception_statement asm_statement 186 %type<sn> iteration_statement jump_statement exception_statement asm_statement 188 187 %type<sn> fall_through_opt fall_through 189 188 %type<sn> statement statement_list 190 189 %type<sn> block_item_list block_item 191 %type<sn> with_clause_opt190 %type<sn> case_clause 192 191 %type<en> case_value 193 %type<sn> case_ clause case_value_list case_label case_label_list192 %type<sn> case_value_list case_label case_label_list 194 193 %type<sn> switch_clause_list_opt switch_clause_list choose_clause_list_opt choose_clause_list 195 194 %type<sn> /* handler_list */ handler_clause finally_clause … … 666 665 conditional_expression 667 666 | unary_expression assignment_operator assignment_expression 668 { $$ = new ExpressionNode( build_binary_ ptr( $2, $1, $3 ) ); }667 { $$ = new ExpressionNode( build_binary_val( $2, $1, $3 ) ); } 669 668 ; 670 669 … … 730 729 | iteration_statement 731 730 | jump_statement 732 | with_statement733 731 | exception_statement 734 732 | asm_statement … … 936 934 | THROWRESUME assignment_expression_opt AT assignment_expression ';' // handles reresume 937 935 { $$ = new StatementNode( build_resume_at( $2, $4 ) ); } 938 ;939 940 with_statement:941 WITH identifier_list compound_statement942 { $$ = (StatementNode *)0; } // FIX ME943 936 ; 944 937 … … 2183 2176 { 2184 2177 linkageStack.push( linkage ); // handle nested extern "C"/"Cforall" 2185 linkage = LinkageSpec::linkage Update( linkage,$2 );2178 linkage = LinkageSpec::linkageCheck( $2 ); 2186 2179 } 2187 2180 '{' external_definition_list_opt '}' … … 2219 2212 ; 2220 2213 2221 with_clause_opt:2222 // empty2223 { $$ = (StatementNode *)0; } // FIX ME2224 | WITH identifier_list2225 { $$ = (StatementNode *)0; } // FIX ME2226 ;2227 2228 2214 function_definition: 2229 cfa_function_declaration with_clause_opt compound_statement// CFA2215 cfa_function_declaration compound_statement // CFA 2230 2216 { 2231 2217 typedefTable.addToEnclosingScope( TypedefTable::ID ); 2232 2218 typedefTable.leaveScope(); 2233 $$ = $1->addFunctionBody( $ 3);2234 } 2235 | declaration_specifier function_declarator with_clause_optcompound_statement2219 $$ = $1->addFunctionBody( $2 ); 2220 } 2221 | declaration_specifier function_declarator compound_statement 2236 2222 { 2237 2223 typedefTable.addToEnclosingScope( TypedefTable::ID ); 2238 2224 typedefTable.leaveScope(); 2239 $$ = $2->addFunctionBody( $ 4)->addType( $1 );2240 } 2241 | type_qualifier_list function_declarator with_clause_optcompound_statement2225 $$ = $2->addFunctionBody( $3 )->addType( $1 ); 2226 } 2227 | type_qualifier_list function_declarator compound_statement 2242 2228 { 2243 2229 typedefTable.addToEnclosingScope( TypedefTable::ID ); 2244 2230 typedefTable.leaveScope(); 2245 $$ = $2->addFunctionBody( $ 4)->addQualifiers( $1 );2246 } 2247 | declaration_qualifier_list function_declarator with_clause_optcompound_statement2231 $$ = $2->addFunctionBody( $3 )->addQualifiers( $1 ); 2232 } 2233 | declaration_qualifier_list function_declarator compound_statement 2248 2234 { 2249 2235 typedefTable.addToEnclosingScope( TypedefTable::ID ); 2250 2236 typedefTable.leaveScope(); 2251 $$ = $2->addFunctionBody( $ 4)->addQualifiers( $1 );2252 } 2253 | declaration_qualifier_list type_qualifier_list function_declarator with_clause_optcompound_statement2237 $$ = $2->addFunctionBody( $3 )->addQualifiers( $1 ); 2238 } 2239 | declaration_qualifier_list type_qualifier_list function_declarator compound_statement 2254 2240 { 2255 2241 typedefTable.addToEnclosingScope( TypedefTable::ID ); 2256 2242 typedefTable.leaveScope(); 2257 $$ = $3->addFunctionBody( $ 5)->addQualifiers( $2 )->addQualifiers( $1 );2243 $$ = $3->addFunctionBody( $4 )->addQualifiers( $2 )->addQualifiers( $1 ); 2258 2244 } 2259 2245 2260 2246 // Old-style K&R function definition, OBSOLESCENT (see 4) 2261 | declaration_specifier KR_function_declarator push KR_declaration_list_opt with_clause_optcompound_statement2247 | declaration_specifier KR_function_declarator push KR_declaration_list_opt compound_statement 2262 2248 { 2263 2249 typedefTable.addToEnclosingScope( TypedefTable::ID ); 2264 2250 typedefTable.leaveScope(); 2265 $$ = $2->addOldDeclList( $4 )->addFunctionBody( $ 6)->addType( $1 );2266 } 2267 | type_qualifier_list KR_function_declarator push KR_declaration_list_opt with_clause_optcompound_statement2251 $$ = $2->addOldDeclList( $4 )->addFunctionBody( $5 )->addType( $1 ); 2252 } 2253 | type_qualifier_list KR_function_declarator push KR_declaration_list_opt compound_statement 2268 2254 { 2269 2255 typedefTable.addToEnclosingScope( TypedefTable::ID ); 2270 2256 typedefTable.leaveScope(); 2271 $$ = $2->addOldDeclList( $4 )->addFunctionBody( $ 6)->addQualifiers( $1 );2257 $$ = $2->addOldDeclList( $4 )->addFunctionBody( $5 )->addQualifiers( $1 ); 2272 2258 } 2273 2259 2274 2260 // Old-style K&R function definition with "implicit int" type_specifier, OBSOLESCENT (see 4) 2275 | declaration_qualifier_list KR_function_declarator push KR_declaration_list_opt with_clause_optcompound_statement2261 | declaration_qualifier_list KR_function_declarator push KR_declaration_list_opt compound_statement 2276 2262 { 2277 2263 typedefTable.addToEnclosingScope( TypedefTable::ID ); 2278 2264 typedefTable.leaveScope(); 2279 $$ = $2->addOldDeclList( $4 )->addFunctionBody( $ 6)->addQualifiers( $1 );2280 } 2281 | declaration_qualifier_list type_qualifier_list KR_function_declarator push KR_declaration_list_opt with_clause_optcompound_statement2265 $$ = $2->addOldDeclList( $4 )->addFunctionBody( $5 )->addQualifiers( $1 ); 2266 } 2267 | declaration_qualifier_list type_qualifier_list KR_function_declarator push KR_declaration_list_opt compound_statement 2282 2268 { 2283 2269 typedefTable.addToEnclosingScope( TypedefTable::ID ); 2284 2270 typedefTable.leaveScope(); 2285 $$ = $3->addOldDeclList( $5 )->addFunctionBody( $ 7)->addQualifiers( $2 )->addQualifiers( $1 );2271 $$ = $3->addOldDeclList( $5 )->addFunctionBody( $6 )->addQualifiers( $2 )->addQualifiers( $1 ); 2286 2272 } 2287 2273 ; … … 2346 2332 | TYPEGENname 2347 2333 | CONST 2348 { $$ = Token{ new string( "__const__" ) , { nullptr, -1 }}; }2334 { $$ = Token{ new string( "__const__" ) }; } 2349 2335 ; 2350 2336 … … 2401 2387 variable_ptr: 2402 2388 ptrref_operator variable_declarator 2403 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }2389 { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2404 2390 | ptrref_operator type_qualifier_list variable_declarator 2405 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }2391 { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); } 2406 2392 | '(' variable_ptr ')' attribute_list_opt 2407 2393 { $$ = $2->addQualifiers( $4 ); } // redundant parenthesis … … 2449 2435 function_ptr: 2450 2436 ptrref_operator function_declarator 2451 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }2437 { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2452 2438 | ptrref_operator type_qualifier_list function_declarator 2453 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }2439 { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); } 2454 2440 | '(' function_ptr ')' 2455 2441 { $$ = $2; } … … 2489 2475 KR_function_ptr: 2490 2476 ptrref_operator KR_function_declarator 2491 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }2477 { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2492 2478 | ptrref_operator type_qualifier_list KR_function_declarator 2493 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }2479 { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); } 2494 2480 | '(' KR_function_ptr ')' 2495 2481 { $$ = $2; } … … 2533 2519 type_ptr: 2534 2520 ptrref_operator variable_type_redeclarator 2535 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }2521 { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2536 2522 | ptrref_operator type_qualifier_list variable_type_redeclarator 2537 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }2523 { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); } 2538 2524 | '(' type_ptr ')' attribute_list_opt 2539 2525 { $$ = $2->addQualifiers( $4 ); } … … 2577 2563 identifier_parameter_ptr: 2578 2564 ptrref_operator identifier_parameter_declarator 2579 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }2565 { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2580 2566 | ptrref_operator type_qualifier_list identifier_parameter_declarator 2581 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }2567 { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); } 2582 2568 | '(' identifier_parameter_ptr ')' attribute_list_opt 2583 2569 { $$ = $2->addQualifiers( $4 ); } … … 2637 2623 type_parameter_ptr: 2638 2624 ptrref_operator type_parameter_redeclarator 2639 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }2625 { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2640 2626 | ptrref_operator type_qualifier_list type_parameter_redeclarator 2641 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }2627 { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); } 2642 2628 | '(' type_parameter_ptr ')' attribute_list_opt 2643 2629 { $$ = $2->addQualifiers( $4 ); } … … 2680 2666 abstract_ptr: 2681 2667 ptrref_operator 2682 { $$ = DeclarationNode::newPointer( 0 ); }2668 { $$ = DeclarationNode::newPointer( 0, $1 ); } 2683 2669 | ptrref_operator type_qualifier_list 2684 { $$ = DeclarationNode::newPointer( $2 ); }2670 { $$ = DeclarationNode::newPointer( $2, $1 ); } 2685 2671 | ptrref_operator abstract_declarator 2686 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }2672 { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2687 2673 | ptrref_operator type_qualifier_list abstract_declarator 2688 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }2674 { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); } 2689 2675 | '(' abstract_ptr ')' attribute_list_opt 2690 2676 { $$ = $2->addQualifiers( $4 ); } … … 2769 2755 abstract_parameter_ptr: 2770 2756 ptrref_operator 2771 { $$ = DeclarationNode::newPointer( nullptr ); }2757 { $$ = DeclarationNode::newPointer( nullptr, $1 ); } 2772 2758 | ptrref_operator type_qualifier_list 2773 { $$ = DeclarationNode::newPointer( $2 ); }2759 { $$ = DeclarationNode::newPointer( $2, $1 ); } 2774 2760 | ptrref_operator abstract_parameter_declarator 2775 { $$ = $2->addPointer( DeclarationNode::newPointer( nullptr ) ); }2761 { $$ = $2->addPointer( DeclarationNode::newPointer( nullptr, $1 ) ); } 2776 2762 | ptrref_operator type_qualifier_list abstract_parameter_declarator 2777 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }2763 { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); } 2778 2764 | '(' abstract_parameter_ptr ')' attribute_list_opt 2779 2765 { $$ = $2->addQualifiers( $4 ); } … … 2848 2834 variable_abstract_ptr: 2849 2835 ptrref_operator 2850 { $$ = DeclarationNode::newPointer( 0 ); }2836 { $$ = DeclarationNode::newPointer( 0, $1 ); } 2851 2837 | ptrref_operator type_qualifier_list 2852 { $$ = DeclarationNode::newPointer( $2 ); }2838 { $$ = DeclarationNode::newPointer( $2, $1 ); } 2853 2839 | ptrref_operator variable_abstract_declarator 2854 { $$ = $2->addPointer( DeclarationNode::newPointer( 0 ) ); }2840 { $$ = $2->addPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2855 2841 | ptrref_operator type_qualifier_list variable_abstract_declarator 2856 { $$ = $3->addPointer( DeclarationNode::newPointer( $2 ) ); }2842 { $$ = $3->addPointer( DeclarationNode::newPointer( $2, $1 ) ); } 2857 2843 | '(' variable_abstract_ptr ')' attribute_list_opt 2858 2844 { $$ = $2->addQualifiers( $4 ); } … … 2894 2880 // No SUE declaration in parameter list. 2895 2881 ptrref_operator type_specifier_nobody 2896 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }2882 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2897 2883 | type_qualifier_list ptrref_operator type_specifier_nobody 2898 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }2884 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1, $2 ) ); } 2899 2885 | ptrref_operator cfa_abstract_function 2900 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }2886 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2901 2887 | type_qualifier_list ptrref_operator cfa_abstract_function 2902 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }2888 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1, $2 ) ); } 2903 2889 | ptrref_operator cfa_identifier_parameter_declarator_tuple 2904 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }2890 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2905 2891 | type_qualifier_list ptrref_operator cfa_identifier_parameter_declarator_tuple 2906 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }2892 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1, $2 ) ); } 2907 2893 ; 2908 2894 … … 2982 2968 cfa_abstract_ptr: // CFA 2983 2969 ptrref_operator type_specifier 2984 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }2970 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2985 2971 | type_qualifier_list ptrref_operator type_specifier 2986 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }2972 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1, $2 ) ); } 2987 2973 | ptrref_operator cfa_abstract_function 2988 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }2974 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2989 2975 | type_qualifier_list ptrref_operator cfa_abstract_function 2990 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }2976 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1, $2 ) ); } 2991 2977 | ptrref_operator cfa_abstract_declarator_tuple 2992 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0 ) ); }2978 { $$ = $2->addNewPointer( DeclarationNode::newPointer( 0, $1 ) ); } 2993 2979 | type_qualifier_list ptrref_operator cfa_abstract_declarator_tuple 2994 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1 ) ); }2980 { $$ = $3->addNewPointer( DeclarationNode::newPointer( $1, $2 ) ); } 2995 2981 ; 2996 2982
Note:
See TracChangeset
for help on using the changeset viewer.