Changeset 4040425 for src/Parser/parser.yy
- Timestamp:
- Mar 2, 2016, 6:15:02 PM (8 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, ctor, deferred_resn, demangler, enum, forall-pointer-decay, gc_noraii, jacob/cs343-translation, jenkins-sandbox, master, memory, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, string, with_gc
- Children:
- 36ebd03, b63e376
- Parents:
- 8f610e85
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/parser.yy
r8f610e85 r4040425 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sun Feb 28 11:49:18201613 // Update Count : 149 212 // Last Modified On : Wed Mar 2 17:24:45 2016 13 // Update Count : 1495 14 14 // 15 15 … … 78 78 %token TYPEOF LABEL // GCC 79 79 %token ENUM STRUCT UNION 80 %token TYPE FTYPE DTYPE CONTEXT// CFA80 %token OTYPE FTYPE DTYPE TRAIT // CFA 81 81 %token SIZEOF OFFSETOF 82 82 %token ATTRIBUTE EXTENSION // GCC … … 172 172 %type<decl> basic_declaration_specifier basic_type_name basic_type_specifier direct_type_name indirect_type_name 173 173 174 %type<decl> context_declaration context_declaration_list context_declaring_list context_specifier174 %type<decl> trait_declaration trait_declaration_list trait_declaring_list trait_specifier 175 175 176 176 %type<decl> declaration declaration_list declaration_list_opt declaration_qualifier_list … … 198 198 %type<decl> new_array_parameter_1st_dimension 199 199 200 %type<decl> new_ context_declaring_list new_declaration new_field_declaring_list200 %type<decl> new_trait_declaring_list new_declaration new_field_declaring_list 201 201 %type<decl> new_function_declaration new_function_return new_function_specifier 202 202 … … 1021 1021 | new_function_declaration pop ';' 1022 1022 | type_declaring_list pop ';' 1023 | context_specifier pop ';'1023 | trait_specifier pop ';' 1024 1024 ; 1025 1025 … … 1806 1806 1807 1807 type_class: // CFA 1808 TYPE1808 OTYPE 1809 1809 { $$ = DeclarationNode::Type; } 1810 1810 | DTYPE … … 1824 1824 '|' no_attr_identifier_or_type_name '(' type_name_list ')' 1825 1825 { 1826 typedefTable.open Context( *$2 );1827 $$ = DeclarationNode::new ContextUse( $2, $4 );1828 } 1829 | '|' '{' push context_declaration_list '}'1826 typedefTable.openTrait( *$2 ); 1827 $$ = DeclarationNode::newTraitUse( $2, $4 ); 1828 } 1829 | '|' '{' push trait_declaration_list '}' 1830 1830 { $$ = $4; } 1831 | '|' '(' push type_parameter_list pop ')' '{' push context_declaration_list '}' '(' type_name_list ')'1831 | '|' '(' push type_parameter_list pop ')' '{' push trait_declaration_list '}' '(' type_name_list ')' 1832 1832 { $$ = 0; } 1833 1833 ; … … 1844 1844 1845 1845 type_declaring_list: // CFA 1846 TYPE type_declarator1847 { $$ = $2; } 1848 | storage_class_list TYPE type_declarator1846 OTYPE type_declarator 1847 { $$ = $2; } 1848 | storage_class_list OTYPE type_declarator 1849 1849 { $$ = $3->addQualifiers( $1 ); } 1850 1850 | type_declaring_list ',' type_declarator … … 1872 1872 ; 1873 1873 1874 context_specifier: // CFA1875 CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}'1874 trait_specifier: // CFA 1875 TRAIT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' '}' 1876 1876 { 1877 1877 typedefTable.addToEnclosingScope( *$2, TypedefTable::ID ); 1878 $$ = DeclarationNode::new Context( $2, $5, 0 );1879 } 1880 | CONTEXT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{'1881 { 1882 typedefTable.enter Context( *$2 );1878 $$ = DeclarationNode::newTrait( $2, $5, 0 ); 1879 } 1880 | TRAIT no_attr_identifier_or_type_name '(' push type_parameter_list pop ')' '{' 1881 { 1882 typedefTable.enterTrait( *$2 ); 1883 1883 typedefTable.enterScope(); 1884 1884 } 1885 context_declaration_list '}'1886 { 1887 typedefTable.leave Context();1885 trait_declaration_list '}' 1886 { 1887 typedefTable.leaveTrait(); 1888 1888 typedefTable.addToEnclosingScope( *$2, TypedefTable::ID ); 1889 $$ = DeclarationNode::new Context( $2, $5, $10 );1890 } 1891 ; 1892 1893 context_declaration_list: // CFA1894 context_declaration1895 | context_declaration_list push context_declaration1889 $$ = DeclarationNode::newTrait( $2, $5, $10 ); 1890 } 1891 ; 1892 1893 trait_declaration_list: // CFA 1894 trait_declaration 1895 | trait_declaration_list push trait_declaration 1896 1896 { $$ = $1->appendList( $3 ); } 1897 1897 ; 1898 1898 1899 context_declaration: // CFA1900 new_ context_declaring_list pop ';'1901 | context_declaring_list pop ';'1902 ; 1903 1904 new_ context_declaring_list: // CFA1899 trait_declaration: // CFA 1900 new_trait_declaring_list pop ';' 1901 | trait_declaring_list pop ';' 1902 ; 1903 1904 new_trait_declaring_list: // CFA 1905 1905 new_variable_specifier 1906 1906 { … … 1913 1913 $$ = $1; 1914 1914 } 1915 | new_ context_declaring_list pop ',' push identifier_or_type_name1915 | new_trait_declaring_list pop ',' push identifier_or_type_name 1916 1916 { 1917 1917 typedefTable.addToEnclosingScope2( *$5, TypedefTable::ID ); … … 1920 1920 ; 1921 1921 1922 context_declaring_list: // CFA1922 trait_declaring_list: // CFA 1923 1923 type_specifier declarator 1924 1924 { … … 1926 1926 $$ = $2->addType( $1 ); 1927 1927 } 1928 | context_declaring_list pop ',' push declarator1928 | trait_declaring_list pop ',' push declarator 1929 1929 { 1930 1930 typedefTable.addToEnclosingScope2( TypedefTable::ID );
Note: See TracChangeset
for help on using the changeset viewer.