diff options
Diffstat (limited to 'lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java')
-rw-r--r-- | lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java | 582 |
1 files changed, 297 insertions, 285 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java index 3f13e3f35e1..2d6eb25c774 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPSizeofExpressionParser.java @@ -1,5 +1,5 @@ /******************************************************************************* -* Copyright (c) 2006, 2009 IBM Corporation and others. +* Copyright (c) 2006, 2010 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -991,925 +991,937 @@ public CPPSizeofExpressionParser(ITokenStream stream, Map<String,String> propert // // Rule 191: iteration_statement ::= do statement while ( expression ) ; // - case 191: { action. consumeStatementDoLoop(); break; + case 191: { action. consumeStatementDoLoop(true); break; } // - // Rule 192: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement + // Rule 192: iteration_statement ::= do statement // - case 192: { action. consumeStatementForLoop(); break; + case 192: { action. consumeStatementDoLoop(false); break; } // - // Rule 194: for_init_statement ::= simple_declaration_with_declspec + // Rule 193: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement // - case 194: { action. consumeStatementDeclaration(); break; + case 193: { action. consumeStatementForLoop(); break; } // - // Rule 195: jump_statement ::= break ; + // Rule 195: for_init_statement ::= simple_declaration_with_declspec // - case 195: { action. consumeStatementBreak(); break; + case 195: { action. consumeStatementDeclaration(); break; } // - // Rule 196: jump_statement ::= continue ; + // Rule 196: jump_statement ::= break ; // - case 196: { action. consumeStatementContinue(); break; + case 196: { action. consumeStatementBreak(); break; } // - // Rule 197: jump_statement ::= return expression ; + // Rule 197: jump_statement ::= continue ; // - case 197: { action. consumeStatementReturn(true); break; + case 197: { action. consumeStatementContinue(); break; } // - // Rule 198: jump_statement ::= return ; + // Rule 198: jump_statement ::= return expression ; // - case 198: { action. consumeStatementReturn(false); break; + case 198: { action. consumeStatementReturn(true); break; } // - // Rule 199: jump_statement ::= goto identifier_token ; + // Rule 199: jump_statement ::= return ; // - case 199: { action. consumeStatementGoto(); break; + case 199: { action. consumeStatementReturn(false); break; } // - // Rule 200: declaration_statement ::= block_declaration + // Rule 200: jump_statement ::= goto identifier_token ; // - case 200: { action. consumeStatementDeclarationWithDisambiguation(); break; + case 200: { action. consumeStatementGoto(); break; } // - // Rule 201: declaration_statement ::= function_definition + // Rule 201: declaration_statement ::= block_declaration // - case 201: { action. consumeStatementDeclaration(); break; + case 201: { action. consumeStatementDeclarationWithDisambiguation(); break; } // - // Rule 209: declaration ::= ERROR_TOKEN + // Rule 202: declaration_statement ::= function_definition // - case 209: { action. consumeDeclarationProblem(); break; + case 202: { action. consumeStatementDeclaration(); break; } // - // Rule 219: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ; + // Rule 210: declaration ::= ERROR_TOKEN // - case 219: { action. consumeDeclarationSimple(true); break; + case 210: { action. consumeDeclarationProblem(); break; } // - // Rule 220: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ; + // Rule 220: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ; // case 220: { action. consumeDeclarationSimple(true); break; } // - // Rule 221: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers + // Rule 221: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ; // - case 221: { action. consumeDeclarationSpecifiersSimple(); break; + case 221: { action. consumeDeclarationSimple(true); break; } // - // Rule 222: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers + // Rule 222: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers // - case 222: { action. consumeDeclarationSpecifiersComposite(); break; + case 222: { action. consumeDeclarationSpecifiersSimple(); break; } // - // Rule 223: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers + // Rule 223: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers // case 223: { action. consumeDeclarationSpecifiersComposite(); break; } // - // Rule 224: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers + // Rule 224: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers // case 224: { action. consumeDeclarationSpecifiersComposite(); break; } // - // Rule 225: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers + // Rule 225: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers // - case 225: { action. consumeDeclarationSpecifiersTypeName(); break; + case 225: { action. consumeDeclarationSpecifiersComposite(); break; } // - // Rule 227: declaration_specifiers_opt ::= $Empty + // Rule 226: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers // - case 227: { action. consumeEmpty(); break; + case 226: { action. consumeDeclarationSpecifiersTypeName(); break; } // - // Rule 231: no_type_declaration_specifier ::= friend + // Rule 228: declaration_specifiers_opt ::= $Empty // - case 231: { action. consumeToken(); break; + case 228: { action. consumeEmpty(); break; } // - // Rule 232: no_type_declaration_specifier ::= typedef + // Rule 232: no_type_declaration_specifier ::= friend // case 232: { action. consumeToken(); break; } // - // Rule 252: storage_class_specifier ::= auto + // Rule 233: no_type_declaration_specifier ::= typedef // - case 252: { action. consumeToken(); break; + case 233: { action. consumeToken(); break; } // - // Rule 253: storage_class_specifier ::= register + // Rule 253: storage_class_specifier ::= auto // case 253: { action. consumeToken(); break; } // - // Rule 254: storage_class_specifier ::= static + // Rule 254: storage_class_specifier ::= register // case 254: { action. consumeToken(); break; } // - // Rule 255: storage_class_specifier ::= extern + // Rule 255: storage_class_specifier ::= static // case 255: { action. consumeToken(); break; } // - // Rule 256: storage_class_specifier ::= mutable + // Rule 256: storage_class_specifier ::= extern // case 256: { action. consumeToken(); break; } // - // Rule 257: function_specifier ::= inline + // Rule 257: storage_class_specifier ::= mutable // case 257: { action. consumeToken(); break; } // - // Rule 258: function_specifier ::= virtual + // Rule 258: function_specifier ::= inline // case 258: { action. consumeToken(); break; } // - // Rule 259: function_specifier ::= explicit + // Rule 259: function_specifier ::= virtual // case 259: { action. consumeToken(); break; } // - // Rule 260: simple_type_specifier ::= simple_type_specifier_token + // Rule 260: function_specifier ::= explicit // case 260: { action. consumeToken(); break; } // - // Rule 274: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name + // Rule 261: simple_type_specifier ::= simple_type_specifier_token // - case 274: { action. consumeQualifiedId(false); break; + case 261: { action. consumeToken(); break; } // - // Rule 275: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name + // Rule 275: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name // case 275: { action. consumeQualifiedId(false); break; } // - // Rule 276: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name + // Rule 276: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name // case 276: { action. consumeQualifiedId(false); break; } // - // Rule 277: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name + // Rule 277: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name // - case 277: { action. consumeQualifiedId(true); break; + case 277: { action. consumeQualifiedId(false); break; } // - // Rule 279: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name + // Rule 278: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name // - case 279: { action. consumeTypeSpecifierElaborated(false); break; + case 278: { action. consumeQualifiedId(true); break; } // - // Rule 280: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name + // Rule 280: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name // - case 280: { action. consumeTypeSpecifierElaborated(true); break; + case 280: { action. consumeTypeSpecifierElaborated(false); break; } // - // Rule 281: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name + // Rule 281: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name // - case 281: { action. consumeTypeSpecifierElaborated(false); break; + case 281: { action. consumeTypeSpecifierElaborated(true); break; } // - // Rule 285: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt } + // Rule 282: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name // - case 285: { action. consumeTypeSpecifierEnumeration(false); break; + case 282: { action. consumeTypeSpecifierElaborated(false); break; } // - // Rule 286: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt } + // Rule 286: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt } // - case 286: { action. consumeTypeSpecifierEnumeration(true); break; + case 286: { action. consumeTypeSpecifierEnumeration(false); break; } // - // Rule 292: enumerator_definition ::= identifier_token + // Rule 287: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt } // - case 292: { action. consumeEnumerator(false); break; + case 287: { action. consumeTypeSpecifierEnumeration(true); break; } // - // Rule 293: enumerator_definition ::= identifier_token = constant_expression + // Rule 293: enumerator_definition ::= identifier_token // - case 293: { action. consumeEnumerator(true); break; + case 293: { action. consumeEnumerator(false); break; } // - // Rule 295: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt } + // Rule 294: enumerator_definition ::= identifier_token = constant_expression // - case 295: { action. consumeNamespaceDefinition(true); break; + case 294: { action. consumeEnumerator(true); break; } // - // Rule 296: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt } + // Rule 296: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt } // - case 296: { action. consumeNamespaceDefinition(false); break; + case 296: { action. consumeNamespaceDefinition(true); break; } // - // Rule 298: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; + // Rule 297: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt } // - case 298: { action. consumeNamespaceAliasDefinition(); break; + case 297: { action. consumeNamespaceDefinition(false); break; } // - // Rule 299: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; + // Rule 299: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; // - case 299: { action. consumeUsingDeclaration(); break; + case 299: { action. consumeNamespaceAliasDefinition(); break; } // - // Rule 300: typename_opt ::= typename + // Rule 300: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; // - case 300: { action. consumePlaceHolder(); break; + case 300: { action. consumeUsingDeclaration(); break; } // - // Rule 301: typename_opt ::= $Empty + // Rule 301: typename_opt ::= typename // - case 301: { action. consumeEmpty(); break; + case 301: { action. consumePlaceHolder(); break; } // - // Rule 302: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; + // Rule 302: typename_opt ::= $Empty // - case 302: { action. consumeUsingDirective(); break; + case 302: { action. consumeEmpty(); break; } // - // Rule 303: asm_definition ::= asm ( stringlit ) ; + // Rule 303: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; // - case 303: { action. consumeDeclarationASM(); break; + case 303: { action. consumeUsingDirective(); break; } // - // Rule 304: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt } + // Rule 304: asm_definition ::= asm ( stringlit ) ; // - case 304: { action. consumeLinkageSpecification(); break; + case 304: { action. consumeDeclarationASM(); break; } // - // Rule 305: linkage_specification ::= extern stringlit <openscope-ast> declaration + // Rule 305: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt } // case 305: { action. consumeLinkageSpecification(); break; } // - // Rule 310: init_declarator_complete ::= init_declarator + // Rule 306: linkage_specification ::= extern stringlit <openscope-ast> declaration // - case 310: { action. consumeInitDeclaratorComplete(); break; + case 306: { action. consumeLinkageSpecification(); break; } // - // Rule 312: init_declarator ::= complete_declarator initializer + // Rule 311: init_declarator_complete ::= init_declarator // - case 312: { action. consumeDeclaratorWithInitializer(true); break; + case 311: { action. consumeInitDeclaratorComplete(); break; } // - // Rule 315: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator + // Rule 313: init_declarator ::= complete_declarator initializer // - case 315: { action. consumeDeclaratorWithPointer(true); break; + case 313: { action. consumeDeclaratorWithInitializer(true); break; } // - // Rule 317: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator + // Rule 316: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // - case 317: { action. consumeDeclaratorWithPointer(true); break; + case 316: { action. consumeDeclaratorWithPointer(true); break; } // - // Rule 321: basic_direct_declarator ::= declarator_id_name + // Rule 318: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // - case 321: { action. consumeDirectDeclaratorIdentifier(); break; + case 318: { action. consumeDeclaratorWithPointer(true); break; } // - // Rule 322: basic_direct_declarator ::= ( declarator ) + // Rule 322: basic_direct_declarator ::= declarator_id_name // - case 322: { action. consumeDirectDeclaratorBracketed(); break; + case 322: { action. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 323: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt + // Rule 323: basic_direct_declarator ::= ( declarator ) // - case 323: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; + case 323: { action. consumeDirectDeclaratorBracketed(); break; } // - // Rule 324: array_direct_declarator ::= array_direct_declarator array_modifier + // Rule 324: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // - case 324: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + case 324: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 325: array_direct_declarator ::= basic_direct_declarator array_modifier + // Rule 325: array_direct_declarator ::= array_direct_declarator array_modifier // case 325: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 326: array_modifier ::= [ constant_expression ] + // Rule 326: array_direct_declarator ::= basic_direct_declarator array_modifier // - case 326: { action. consumeDirectDeclaratorArrayModifier(true); break; + case 326: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 327: array_modifier ::= [ ] + // Rule 327: array_modifier ::= [ constant_expression ] // - case 327: { action. consumeDirectDeclaratorArrayModifier(false); break; + case 327: { action. consumeDirectDeclaratorArrayModifier(true); break; } // - // Rule 328: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt + // Rule 328: array_modifier ::= [ ] // - case 328: { action. consumePointer(); break; + case 328: { action. consumeDirectDeclaratorArrayModifier(false); break; } // - // Rule 329: ptr_operator ::= pointer_hook & pointer_hook + // Rule 329: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt // - case 329: { action. consumeReferenceOperator(); break; + case 329: { action. consumePointer(); break; } // - // Rule 330: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt + // Rule 330: ptr_operator ::= pointer_hook & pointer_hook // - case 330: { action. consumePointerToMember(); break; + case 330: { action. consumeReferenceOperator(); break; } // - // Rule 337: cv_qualifier ::= const + // Rule 331: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt // - case 337: { action. consumeToken(); break; + case 331: { action. consumePointerToMember(); break; } // - // Rule 338: cv_qualifier ::= volatile + // Rule 338: cv_qualifier ::= const // case 338: { action. consumeToken(); break; } // - // Rule 340: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // Rule 339: cv_qualifier ::= volatile // - case 340: { action. consumeQualifiedId(false); break; + case 339: { action. consumeToken(); break; } // - // Rule 341: type_id ::= type_specifier_seq + // Rule 341: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name // - case 341: { action. consumeTypeId(false); break; + case 341: { action. consumeQualifiedId(false); break; } // - // Rule 342: type_id ::= type_specifier_seq abstract_declarator + // Rule 342: type_id ::= type_specifier_seq // - case 342: { action. consumeTypeId(true); break; + case 342: { action. consumeTypeId(false); break; } // - // Rule 345: abstract_declarator ::= <openscope-ast> ptr_operator_seq + // Rule 343: type_id ::= type_specifier_seq abstract_declarator // - case 345: { action. consumeDeclaratorWithPointer(false); break; + case 343: { action. consumeTypeId(true); break; } // - // Rule 346: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator + // Rule 346: abstract_declarator ::= <openscope-ast> ptr_operator_seq // - case 346: { action. consumeDeclaratorWithPointer(true); break; + case 346: { action. consumeDeclaratorWithPointer(false); break; } // - // Rule 350: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // Rule 347: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator // - case 350: { action. consumeDirectDeclaratorBracketed(); break; + case 347: { action. consumeDeclaratorWithPointer(true); break; } // - // Rule 351: basic_direct_abstract_declarator ::= ( ) + // Rule 351: basic_direct_abstract_declarator ::= ( abstract_declarator ) // - case 351: { action. consumeAbstractDeclaratorEmpty(); break; + case 351: { action. consumeDirectDeclaratorBracketed(); break; } // - // Rule 352: array_direct_abstract_declarator ::= array_modifier + // Rule 352: basic_direct_abstract_declarator ::= ( ) // - case 352: { action. consumeDirectDeclaratorArrayDeclarator(false); break; + case 352: { action. consumeAbstractDeclaratorEmpty(); break; } // - // Rule 353: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier + // Rule 353: array_direct_abstract_declarator ::= array_modifier // - case 353: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + case 353: { action. consumeDirectDeclaratorArrayDeclarator(false); break; } // - // Rule 354: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // Rule 354: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // case 354: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 355: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt + // Rule 355: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // - case 355: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; + case 355: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 356: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt + // Rule 356: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // - case 356: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; + case 356: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 357: parameter_declaration_clause ::= parameter_declaration_list_opt ... + // Rule 357: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // - case 357: { action. consumePlaceHolder(); break; + case 357: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; } // - // Rule 358: parameter_declaration_clause ::= parameter_declaration_list_opt + // Rule 358: parameter_declaration_clause ::= parameter_declaration_list_opt ... // - case 358: { action. consumeEmpty(); break; + case 358: { action. consumePlaceHolder(); break; } // - // Rule 359: parameter_declaration_clause ::= parameter_declaration_list , ... + // Rule 359: parameter_declaration_clause ::= parameter_declaration_list_opt // - case 359: { action. consumePlaceHolder(); break; + case 359: { action. consumeEmpty(); break; } // - // Rule 365: abstract_declarator_opt ::= $Empty + // Rule 360: parameter_declaration_clause ::= parameter_declaration_list , ... // - case 365: { action. consumeEmpty(); break; + case 360: { action. consumePlaceHolder(); break; } // - // Rule 366: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // Rule 366: abstract_declarator_opt ::= $Empty // - case 366: { action. consumeParameterDeclaration(); break; + case 366: { action. consumeEmpty(); break; } // - // Rule 367: parameter_declaration ::= declaration_specifiers + // Rule 367: parameter_declaration ::= declaration_specifiers parameter_init_declarator // - case 367: { action. consumeParameterDeclarationWithoutDeclarator(); break; + case 367: { action. consumeParameterDeclaration(); break; } // - // Rule 369: parameter_init_declarator ::= declarator = parameter_initializer + // Rule 368: parameter_declaration ::= declaration_specifiers // - case 369: { action. consumeDeclaratorWithInitializer(true); break; + case 368: { action. consumeParameterDeclarationWithoutDeclarator(); break; } // - // Rule 371: parameter_init_declarator ::= abstract_declarator = parameter_initializer + // Rule 370: parameter_init_declarator ::= declarator = parameter_initializer // - case 371: { action. consumeDeclaratorWithInitializer(true); break; + case 370: { action. consumeDeclaratorWithInitializer(true); break; } // - // Rule 372: parameter_init_declarator ::= = parameter_initializer + // Rule 372: parameter_init_declarator ::= abstract_declarator = parameter_initializer // - case 372: { action. consumeDeclaratorWithInitializer(false); break; + case 372: { action. consumeDeclaratorWithInitializer(true); break; } // - // Rule 373: parameter_initializer ::= assignment_expression + // Rule 373: parameter_init_declarator ::= = parameter_initializer // - case 373: { action. consumeInitializer(); break; + case 373: { action. consumeDeclaratorWithInitializer(false); break; } // - // Rule 374: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body + // Rule 374: parameter_initializer ::= assignment_expression // - case 374: { action. consumeFunctionDefinition(false); break; + case 374: { action. consumeInitializer(); break; } // - // Rule 375: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq + // Rule 375: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body // - case 375: { action. consumeFunctionDefinition(true); break; + case 375: { action. consumeFunctionDefinition(false); break; } // - // Rule 378: initializer ::= ( expression_list ) + // Rule 376: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq // - case 378: { action. consumeInitializerConstructor(); break; + case 376: { action. consumeFunctionDefinition(true); break; } // - // Rule 379: initializer_clause ::= assignment_expression + // Rule 379: initializer ::= ( expression_list ) // - case 379: { action. consumeInitializer(); break; + case 379: { action. consumeInitializerConstructor(); break; } // - // Rule 381: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list + // Rule 380: initializer_clause ::= assignment_expression // - case 381: { action. consumeInitializerList(); break; + case 380: { action. consumeInitializer(); break; } // - // Rule 382: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list + // Rule 382: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list // case 382: { action. consumeInitializerList(); break; } // - // Rule 383: initializer_list ::= { <openscope-ast> } + // Rule 383: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list // case 383: { action. consumeInitializerList(); break; } // - // Rule 384: start_initializer_list ::= $Empty + // Rule 384: initializer_list ::= { <openscope-ast> } // - case 384: { action. initializerListStart(); break; + case 384: { action. consumeInitializerList(); break; } // - // Rule 385: end_initializer_list ::= $Empty + // Rule 385: start_initializer_list ::= $Empty // - case 385: { action. initializerListEnd(); break; + case 385: { action. initializerListStart(); break; } // - // Rule 390: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt } + // Rule 386: end_initializer_list ::= $Empty // - case 390: { action. consumeClassSpecifier(); break; + case 386: { action. initializerListEnd(); break; } // - // Rule 391: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt + // Rule 391: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt } // - case 391: { action. consumeClassHead(false); break; + case 391: { action. consumeClassSpecifier(); break; } // - // Rule 392: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt + // Rule 392: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt // case 392: { action. consumeClassHead(false); break; } // - // Rule 393: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt + // Rule 393: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt // - case 393: { action. consumeClassHead(true); break; + case 393: { action. consumeClassHead(false); break; } // - // Rule 394: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt + // Rule 394: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt // case 394: { action. consumeClassHead(true); break; } // - // Rule 398: identifier_name_opt ::= $Empty + // Rule 395: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt // - case 398: { action. consumeEmpty(); break; - } + case 395: { action. consumeClassHead(true); break; + } // - // Rule 402: visibility_label ::= access_specifier_keyword : + // Rule 399: identifier_name_opt ::= $Empty // - case 402: { action. consumeVisibilityLabel(); break; - } + case 399: { action. consumeEmpty(); break; + } // - // Rule 403: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ; + // Rule 403: visibility_label ::= access_specifier_keyword : // - case 403: { action. consumeDeclarationSimple(true); break; + case 403: { action. consumeVisibilityLabel(); break; } // - // Rule 404: member_declaration ::= declaration_specifiers_opt ; + // Rule 404: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ; // - case 404: { action. consumeDeclarationSimple(false); break; + case 404: { action. consumeDeclarationSimple(true); break; } // - // Rule 407: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // Rule 405: member_declaration ::= declaration_specifiers_opt ; // - case 407: { action. consumeMemberDeclarationQualifiedId(); break; + case 405: { action. consumeDeclarationSimple(false); break; } // - // Rule 413: member_declaration ::= ERROR_TOKEN + // Rule 408: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; // - case 413: { action. consumeDeclarationProblem(); break; + case 408: { action. consumeMemberDeclarationQualifiedId(); break; } // - // Rule 422: member_declarator ::= declarator constant_initializer + // Rule 414: member_declaration ::= ERROR_TOKEN // - case 422: { action. consumeMemberDeclaratorWithInitializer(); break; + case 414: { action. consumeDeclarationProblem(); break; } // - // Rule 423: member_declarator ::= bit_field_declarator : constant_expression + // Rule 423: member_declarator ::= declarator constant_initializer // - case 423: { action. consumeBitField(true); break; + case 423: { action. consumeMemberDeclaratorWithInitializer(); break; } // - // Rule 424: member_declarator ::= : constant_expression + // Rule 424: member_declarator ::= bit_field_declarator : constant_expression // - case 424: { action. consumeBitField(false); break; + case 424: { action. consumeBitField(true); break; } // - // Rule 425: bit_field_declarator ::= identifier_name + // Rule 425: member_declarator ::= : constant_expression // - case 425: { action. consumeDirectDeclaratorIdentifier(); break; + case 425: { action. consumeBitField(false); break; } // - // Rule 426: constant_initializer ::= = constant_expression + // Rule 426: bit_field_declarator ::= identifier_name // - case 426: { action. consumeInitializer(); break; + case 426: { action. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 432: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 427: constant_initializer ::= = constant_expression // - case 432: { action. consumeBaseSpecifier(false, false); break; + case 427: { action. consumeInitializer(); break; } // - // Rule 433: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name + // Rule 433: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name // - case 433: { action. consumeBaseSpecifier(true, true); break; + case 433: { action. consumeBaseSpecifier(false, false); break; } // - // Rule 434: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name + // Rule 434: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name // case 434: { action. consumeBaseSpecifier(true, true); break; } // - // Rule 435: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // Rule 435: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name // - case 435: { action. consumeBaseSpecifier(true, false); break; + case 435: { action. consumeBaseSpecifier(true, true); break; } // - // Rule 436: access_specifier_keyword ::= private + // Rule 436: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name // - case 436: { action. consumeToken(); break; + case 436: { action. consumeBaseSpecifier(true, false); break; } // - // Rule 437: access_specifier_keyword ::= protected + // Rule 437: access_specifier_keyword ::= private // case 437: { action. consumeToken(); break; } // - // Rule 438: access_specifier_keyword ::= public + // Rule 438: access_specifier_keyword ::= protected // case 438: { action. consumeToken(); break; } // - // Rule 440: access_specifier_keyword_opt ::= $Empty + // Rule 439: access_specifier_keyword ::= public + // + case 439: { action. consumeToken(); break; + } + + // + // Rule 441: access_specifier_keyword_opt ::= $Empty + // + case 441: { action. consumeEmpty(); break; + } + + // + // Rule 443: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt > // - case 440: { action. consumeEmpty(); break; + case 443: { action. consumeTemplateId(); break; } // - // Rule 442: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt > + // Rule 444: conversion_function_id ::= operator conversion_type_id // - case 442: { action. consumeTemplateId(); break; + case 444: { action. consumeConversionName(); break; } // - // Rule 443: conversion_function_id ::= operator conversion_type_id + // Rule 445: conversion_type_id ::= type_specifier_seq conversion_declarator // - case 443: { action. consumeConversionName(); break; + case 445: { action. consumeTypeId(true); break; } // - // Rule 444: conversion_type_id ::= type_specifier_seq conversion_declarator + // Rule 446: conversion_type_id ::= type_specifier_seq // - case 444: { action. consumeTypeId(true); break; + case 446: { action. consumeTypeId(false); break; } // - // Rule 445: conversion_type_id ::= type_specifier_seq + // Rule 447: conversion_declarator ::= <openscope-ast> ptr_operator_seq // - case 445: { action. consumeTypeId(false); break; + case 447: { action. consumeDeclaratorWithPointer(false); break; } // - // Rule 446: conversion_declarator ::= <openscope-ast> ptr_operator_seq + // Rule 453: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // - case 446: { action. consumeDeclaratorWithPointer(false); break; + case 453: { action. consumeConstructorChainInitializer(); break; } // - // Rule 452: mem_initializer ::= mem_initializer_name ( expression_list_opt ) + // Rule 454: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // - case 452: { action. consumeConstructorChainInitializer(); break; + case 454: { action. consumeQualifiedId(false); break; } // - // Rule 453: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 457: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt > // - case 453: { action. consumeQualifiedId(false); break; + case 457: { action. consumeTemplateId(); break; } // - // Rule 456: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt > + // Rule 458: operator_id_name ::= operator overloadable_operator // - case 456: { action. consumeTemplateId(); break; + case 458: { action. consumeOperatorName(); break; } // - // Rule 457: operator_id_name ::= operator overloadable_operator + // Rule 501: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration // - case 457: { action. consumeOperatorName(); break; + case 501: { action. consumeTemplateDeclaration(); break; } // - // Rule 500: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration + // Rule 502: export_opt ::= export // - case 500: { action. consumeTemplateDeclaration(); break; + case 502: { action. consumePlaceHolder(); break; } // - // Rule 501: export_opt ::= export + // Rule 503: export_opt ::= $Empty // - case 501: { action. consumePlaceHolder(); break; + case 503: { action. consumeEmpty(); break; } // - // Rule 502: export_opt ::= $Empty + // Rule 507: template_parameter ::= parameter_declaration // - case 502: { action. consumeEmpty(); break; + case 507: { action. consumeTemplateParamterDeclaration(); break; } // - // Rule 506: template_parameter ::= parameter_declaration + // Rule 508: type_parameter ::= class identifier_name_opt // - case 506: { action. consumeTemplateParamterDeclaration(); break; + case 508: { action. consumeSimpleTypeTemplateParameter(false); break; } // - // Rule 507: type_parameter ::= class identifier_name_opt + // Rule 509: type_parameter ::= class identifier_name_opt = type_id // - case 507: { action. consumeSimpleTypeTemplateParameter(false); break; + case 509: { action. consumeSimpleTypeTemplateParameter(true); break; } // - // Rule 508: type_parameter ::= class identifier_name_opt = type_id + // Rule 510: type_parameter ::= typename identifier_name_opt // - case 508: { action. consumeSimpleTypeTemplateParameter(true); break; + case 510: { action. consumeSimpleTypeTemplateParameter(false); break; } // - // Rule 509: type_parameter ::= typename identifier_name_opt + // Rule 511: type_parameter ::= typename identifier_name_opt = type_id // - case 509: { action. consumeSimpleTypeTemplateParameter(false); break; + case 511: { action. consumeSimpleTypeTemplateParameter(true); break; } // - // Rule 510: type_parameter ::= typename identifier_name_opt = type_id + // Rule 512: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt // - case 510: { action. consumeSimpleTypeTemplateParameter(true); break; + case 512: { action. consumeTemplatedTypeTemplateParameter(false); break; } // - // Rule 511: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt + // Rule 513: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression // - case 511: { action. consumeTemplatedTypeTemplateParameter(false); break; + case 513: { action. consumeTemplatedTypeTemplateParameter(true); break; } // - // Rule 512: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression + // Rule 514: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt > // - case 512: { action. consumeTemplatedTypeTemplateParameter(true); break; + case 514: { action. consumeTemplateId(); break; } // - // Rule 513: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt > + // Rule 519: template_argument ::= assignment_expression // - case 513: { action. consumeTemplateId(); break; + case 519: { action. consumeTemplateArgumentExpression(); break; } // - // Rule 518: template_argument ::= assignment_expression + // Rule 520: template_argument ::= type_id // - case 518: { action. consumeTemplateArgumentExpression(); break; + case 520: { action. consumeTemplateArgumentTypeId(); break; } // - // Rule 519: template_argument ::= type_id + // Rule 521: explicit_instantiation ::= template declaration // - case 519: { action. consumeTemplateArgumentTypeId(); break; + case 521: { action. consumeTemplateExplicitInstantiation(); break; } // - // Rule 520: explicit_instantiation ::= template declaration + // Rule 522: explicit_specialization ::= template < > declaration // - case 520: { action. consumeTemplateExplicitInstantiation(); break; + case 522: { action. consumeTemplateExplicitSpecialization(); break; } // - // Rule 521: explicit_specialization ::= template < > declaration + // Rule 523: try_block ::= try compound_statement <openscope-ast> handler_seq // - case 521: { action. consumeTemplateExplicitSpecialization(); break; + case 523: { action. consumeStatementTryBlock(true); break; } // - // Rule 522: try_block ::= try compound_statement <openscope-ast> handler_seq + // Rule 524: try_block ::= try compound_statement // - case 522: { action. consumeStatementTryBlock(); break; + case 524: { action. consumeStatementTryBlock(false); break; } // - // Rule 525: handler ::= catch ( exception_declaration ) compound_statement + // Rule 527: handler ::= catch ( exception_declaration ) compound_statement // - case 525: { action. consumeStatementCatchHandler(false); break; + case 527: { action. consumeStatementCatchHandler(false); break; } // - // Rule 526: handler ::= catch ( ... ) compound_statement + // Rule 528: handler ::= catch ( ... ) compound_statement // - case 526: { action. consumeStatementCatchHandler(true); break; + case 528: { action. consumeStatementCatchHandler(true); break; } // - // Rule 527: exception_declaration ::= type_specifier_seq <openscope-ast> declarator + // Rule 529: exception_declaration ::= type_specifier_seq <openscope-ast> declarator // - case 527: { action. consumeDeclarationSimple(true); break; + case 529: { action. consumeDeclarationSimple(true); break; } // - // Rule 528: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator + // Rule 530: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator // - case 528: { action. consumeDeclarationSimple(true); break; + case 530: { action. consumeDeclarationSimple(true); break; } // - // Rule 529: exception_declaration ::= type_specifier_seq + // Rule 531: exception_declaration ::= type_specifier_seq // - case 529: { action. consumeDeclarationSimple(false); break; + case 531: { action. consumeDeclarationSimple(false); break; } // - // Rule 531: exception_specification ::= throw ( ) + // Rule 533: exception_specification ::= throw ( ) // - case 531: { action. consumePlaceHolder(); break; + case 533: { action. consumePlaceHolder(); break; } // - // Rule 537: no_sizeof_type_id_start ::= ERROR_TOKEN + // Rule 539: no_sizeof_type_id_start ::= ERROR_TOKEN // - case 537: { action. consumeEmpty(); break; + case 539: { action. consumeEmpty(); break; } |