diff options
Diffstat (limited to 'lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java')
-rw-r--r-- | lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java | 986 |
1 files changed, 610 insertions, 376 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java index abf24e58f61..063bcac846a 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/cpp/CPPNoCastExpressionParser.java @@ -248,7 +248,13 @@ public void setTokens(List<IToken> tokens) { public CPPNoCastExpressionParser(ITokenStream stream, Map<String,String> properties) { // constructor for creating secondary parser initActions(properties); tokenMap = new TokenMap(CPPNoCastExpressionParsersym.orderedTerminalSymbols, stream.getOrderedTerminalSymbols()); -} +} + + public CPPNoCastExpressionParser(ITokenStream stream, IScanner scanner, IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String,String> properties) { // constructor for creating secondary parser + initActions(properties); + action.initializeTranslationUnit(scanner, builtinBindingsProvider, index); + tokenMap = new TokenMap(CPPNoCastExpressionParsersym.orderedTerminalSymbols, stream.getOrderedTerminalSymbols()); +} public void ruleAction(int ruleNumber) @@ -809,1131 +815,1359 @@ public CPPNoCastExpressionParser(ITokenStream stream, Map<String,String> propert } // - // Rule 140: throw_expression ::= throw + // Rule 141: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression // - case 140: { action. consumeExpressionThrow(false); break; + case 141: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan); break; } // - // Rule 141: throw_expression ::= throw assignment_expression + // Rule 142: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression ) // - case 141: { action. consumeExpressionThrow(true); break; + case 142: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan); break; } // - // Rule 144: assignment_expression ::= logical_or_expression = assignment_expression + // Rule 143: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression // - case 144: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); break; + case 143: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual); break; } // - // Rule 145: assignment_expression ::= logical_or_expression *= assignment_expression + // Rule 144: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression // - case 145: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); break; + case 144: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual); break; } // - // Rule 146: assignment_expression ::= logical_or_expression /= assignment_expression + // Rule 146: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate // - case 146: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); break; + case 146: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals); break; } // - // Rule 147: assignment_expression ::= logical_or_expression %= assignment_expression + // Rule 147: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate // - case 147: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); break; + case 147: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals); break; } // - // Rule 148: assignment_expression ::= logical_or_expression += assignment_expression + // Rule 149: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate // - case 148: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); break; + case 149: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd); break; } // - // Rule 149: assignment_expression ::= logical_or_expression -= assignment_expression + // Rule 151: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate // - case 149: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); break; + case 151: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor); break; } // - // Rule 150: assignment_expression ::= logical_or_expression >>= assignment_expression + // Rule 153: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate // - case 150: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); break; + case 153: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr); break; } // - // Rule 151: assignment_expression ::= logical_or_expression <<= assignment_expression + // Rule 155: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate // - case 151: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); break; + case 155: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd); break; } // - // Rule 152: assignment_expression ::= logical_or_expression &= assignment_expression + // Rule 157: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate // - case 152: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); break; + case 157: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr); break; } // - // Rule 153: assignment_expression ::= logical_or_expression ^= assignment_expression + // Rule 159: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate // - case 153: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); break; + case 159: { action. consumeExpressionConditional(); break; } // - // Rule 154: assignment_expression ::= logical_or_expression |= assignment_expression + // Rule 162: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate // - case 154: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); break; + case 162: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); break; } // - // Rule 156: expression_list ::= <openscope-ast> expression_list_actual + // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate // - case 156: { action. consumeExpressionList(); break; + case 163: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); break; } // - // Rule 160: expression_list_opt ::= $Empty + // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate // - case 160: { action. consumeEmpty(); break; + case 164: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); break; } // - // Rule 162: expression_opt ::= $Empty + // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate // - case 162: { action. consumeEmpty(); break; + case 165: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); break; } // - // Rule 165: constant_expression_opt ::= $Empty + // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate // - case 165: { action. consumeEmpty(); break; + case 166: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); break; } // - // Rule 174: statement ::= ERROR_TOKEN + // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate // - case 174: { action. consumeStatementProblem(); break; + case 167: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); break; } // - // Rule 175: labeled_statement ::= identifier : statement + // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate // - case 175: { action. consumeStatementLabeled(); break; + case 168: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); break; } // - // Rule 176: labeled_statement ::= case constant_expression : statement + // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate // - case 176: { action. consumeStatementCase(); break; + case 169: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); break; } // - // Rule 177: labeled_statement ::= default : statement + // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate // - case 177: { action. consumeStatementDefault(); break; + case 170: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); break; } // - // Rule 178: expression_statement ::= expression ; + // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate // - case 178: { action. consumeStatementExpression(); break; + case 171: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); break; } // - // Rule 179: expression_statement ::= ; + // Rule 172: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate // - case 179: { action. consumeStatementNull(); break; + case 172: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); break; } // - // Rule 180: compound_statement ::= { <openscope-ast> statement_seq } + // Rule 173: throw_expression ::= throw // - case 180: { action. consumeStatementCompoundStatement(true); break; + case 173: { action. consumeExpressionThrow(false); break; } // - // Rule 181: compound_statement ::= { } + // Rule 174: throw_expression ::= throw assignment_expression // - case 181: { action. consumeStatementCompoundStatement(false); break; + case 174: { action. consumeExpressionThrow(true); break; } // - // Rule 184: selection_statement ::= if ( condition ) statement + // Rule 177: assignment_expression ::= logical_or_expression = assignment_expression // - case 184: { action. consumeStatementIf(false); break; + case 177: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); break; } // - // Rule 185: selection_statement ::= if ( condition ) statement else statement + // Rule 178: assignment_expression ::= logical_or_expression *= assignment_expression // - case 185: { action. consumeStatementIf(true); break; + case 178: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); break; } // - // Rule 186: selection_statement ::= switch ( condition ) statement + // Rule 179: assignment_expression ::= logical_or_expression /= assignment_expression // - case 186: { action. consumeStatementSwitch(); break; + case 179: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); break; } // - // Rule 188: condition ::= type_specifier_seq declarator = assignment_expression + // Rule 180: assignment_expression ::= logical_or_expression %= assignment_expression // - case 188: { action. consumeConditionDeclaration(); break; + case 180: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); break; } // - // Rule 190: condition_opt ::= $Empty + // Rule 181: assignment_expression ::= logical_or_expression += assignment_expression // - case 190: { action. consumeEmpty(); break; + case 181: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); break; } // - // Rule 191: iteration_statement ::= while ( condition ) statement + // Rule 182: assignment_expression ::= logical_or_expression -= assignment_expression // - case 191: { action. consumeStatementWhileLoop(); break; + case 182: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); break; } // - // Rule 192: iteration_statement ::= do statement while ( expression ) ; + // Rule 183: assignment_expression ::= logical_or_expression >>= assignment_expression // - case 192: { action. consumeStatementDoLoop(true); break; + case 183: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); break; } // - // Rule 193: iteration_statement ::= do statement + // Rule 184: assignment_expression ::= logical_or_expression <<= assignment_expression // - case 193: { action. consumeStatementDoLoop(false); break; + case 184: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); break; } // - // Rule 194: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement + // Rule 185: assignment_expression ::= logical_or_expression &= assignment_expression // - case 194: { action. consumeStatementForLoop(); break; + case 185: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); break; } // - // Rule 196: for_init_statement ::= simple_declaration_with_declspec + // Rule 186: assignment_expression ::= logical_or_expression ^= assignment_expression // - case 196: { action. consumeStatementDeclaration(); break; + case 186: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); break; } // - // Rule 197: jump_statement ::= break ; + // Rule 187: assignment_expression ::= logical_or_expression |= assignment_expression // - case 197: { action. consumeStatementBreak(); break; + case 187: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); break; } // - // Rule 198: jump_statement ::= continue ; + // Rule 189: expression_list ::= <openscope-ast> expression_list_actual // - case 198: { action. consumeStatementContinue(); break; + case 189: { action. consumeExpressionList(); break; } // - // Rule 199: jump_statement ::= return expression ; + // Rule 193: expression_list_opt ::= $Empty // - case 199: { action. consumeStatementReturn(true); break; + case 193: { action. consumeEmpty(); break; } // - // Rule 200: jump_statement ::= return ; + // Rule 195: expression_opt ::= $Empty // - case 200: { action. consumeStatementReturn(false); break; + case 195: { action. consumeEmpty(); break; } // - // Rule 201: jump_statement ::= goto identifier_token ; + // Rule 198: constant_expression_opt ::= $Empty // - case 201: { action. consumeStatementGoto(); break; + case 198: { action. consumeEmpty(); break; } // - // Rule 202: declaration_statement ::= block_declaration + // Rule 207: statement ::= ERROR_TOKEN // - case 202: { action. consumeStatementDeclarationWithDisambiguation(); break; + case 207: { action. consumeStatementProblem(); break; } // - // Rule 203: declaration_statement ::= function_definition + // Rule 208: labeled_statement ::= identifier : statement // - case 203: { action. consumeStatementDeclaration(); break; + case 208: { action. consumeStatementLabeled(); break; } // - // Rule 211: declaration ::= ERROR_TOKEN + // Rule 209: labeled_statement ::= case constant_expression : statement // - case 211: { action. consumeDeclarationProblem(); break; + case 209: { action. consumeStatementCase(); break; } // - // Rule 221: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ; + // Rule 210: labeled_statement ::= default : statement // - case 221: { action. consumeDeclarationSimple(true); break; + case 210: { action. consumeStatementDefault(); break; } // - // Rule 222: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ; + // Rule 211: expression_statement ::= expression ; // - case 222: { action. consumeDeclarationSimple(true); break; + case 211: { action. consumeStatementExpression(); break; } // - // Rule 223: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers + // Rule 212: expression_statement ::= ; // - case 223: { action. consumeDeclarationSpecifiersSimple(); break; + case 212: { action. consumeStatementNull(); break; } // - // Rule 224: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers + // Rule 213: compound_statement ::= { <openscope-ast> statement_seq } // - case 224: { action. consumeDeclarationSpecifiersComposite(); break; + case 213: { action. consumeStatementCompoundStatement(true); break; } // - // Rule 225: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers + // Rule 214: compound_statement ::= { } // - case 225: { action. consumeDeclarationSpecifiersComposite(); break; + case 214: { action. consumeStatementCompoundStatement(false); break; } // - // Rule 226: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers + // Rule 217: selection_statement ::= if ( condition ) statement // - case 226: { action. consumeDeclarationSpecifiersComposite(); break; + case 217: { action. consumeStatementIf(false); break; } // - // Rule 227: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers + // Rule 218: selection_statement ::= if ( condition ) statement else statement // - case 227: { action. consumeDeclarationSpecifiersTypeName(); break; + case 218: { action. consumeStatementIf(true); break; } // - // Rule 229: declaration_specifiers_opt ::= $Empty + // Rule 219: selection_statement ::= switch ( condition ) statement // - case 229: { action. consumeEmpty(); break; + case 219: { action. consumeStatementSwitch(); break; } // - // Rule 233: no_type_declaration_specifier ::= friend + // Rule 221: condition ::= type_specifier_seq declarator = assignment_expression // - case 233: { action. consumeToken(); break; + case 221: { action. consumeConditionDeclaration(); break; } // - // Rule 234: no_type_declaration_specifier ::= typedef + // Rule 223: condition_opt ::= $Empty // - case 234: { action. consumeToken(); break; + case 223: { action. consumeEmpty(); break; } // - // Rule 254: storage_class_specifier ::= auto + // Rule 224: iteration_statement ::= while ( condition ) statement // - case 254: { action. consumeToken(); break; + case 224: { action. consumeStatementWhileLoop(); break; } // - // Rule 255: storage_class_specifier ::= register + // Rule 225: iteration_statement ::= do statement while ( expression ) ; // - case 255: { action. consumeToken(); break; + case 225: { action. consumeStatementDoLoop(true); break; } // - // Rule 256: storage_class_specifier ::= static + // Rule 226: iteration_statement ::= do statement // - case 256: { action. consumeToken(); break; + case 226: { action. consumeStatementDoLoop(false); break; } // - // Rule 257: storage_class_specifier ::= extern + // Rule 227: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement // - case 257: { action. consumeToken(); break; + case 227: { action. consumeStatementForLoop(); break; } // - // Rule 258: storage_class_specifier ::= mutable + // Rule 229: for_init_statement ::= simple_declaration_with_declspec // - case 258: { action. consumeToken(); break; + case 229: { action. consumeStatementDeclaration(); break; } // - // Rule 259: function_specifier ::= inline + // Rule 230: jump_statement ::= break ; // - case 259: { action. consumeToken(); break; + case 230: { action. consumeStatementBreak(); break; } // - // Rule 260: function_specifier ::= virtual + // Rule 231: jump_statement ::= continue ; // - case 260: { action. consumeToken(); break; + case 231: { action. consumeStatementContinue(); break; } // - // Rule 261: function_specifier ::= explicit + // Rule 232: jump_statement ::= return expression ; // - case 261: { action. consumeToken(); break; + case 232: { action. consumeStatementReturn(true); break; } // - // Rule 262: simple_type_specifier ::= simple_type_specifier_token + // Rule 233: jump_statement ::= return ; // - case 262: { action. consumeToken(); break; + case 233: { action. consumeStatementReturn(false); break; } // - // Rule 276: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name + // Rule 234: jump_statement ::= goto identifier_token ; // - case 276: { action. consumeQualifiedId(false); break; + case 234: { action. consumeStatementGoto(); break; } // - // Rule 277: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name + // Rule 235: declaration_statement ::= block_declaration // - case 277: { action. consumeQualifiedId(false); break; + case 235: { action. consumeStatementDeclarationWithDisambiguation(); break; } // - // Rule 278: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name + // Rule 236: declaration_statement ::= function_definition // - case 278: { action. consumeQualifiedId(false); break; + case 236: { action. consumeStatementDeclaration(); break; } // - // Rule 279: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name + // Rule 244: declaration ::= ERROR_TOKEN // - case 279: { action. consumeQualifiedId(true); break; + case 244: { action. consumeDeclarationProblem(); break; } // - // Rule 281: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name + // Rule 254: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ; // - case 281: { action. consumeTypeSpecifierElaborated(false); break; + case 254: { action. consumeDeclarationSimple(true); break; } // - // Rule 282: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name + // Rule 255: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ; // - case 282: { action. consumeTypeSpecifierElaborated(true); break; + case 255: { action. consumeDeclarationSimple(true); break; } // - // Rule 283: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name + // Rule 256: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers // - case 283: { action. consumeTypeSpecifierElaborated(false); break; + case 256: { action. consumeDeclarationSpecifiersSimple(); break; } // - // Rule 287: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt } + // Rule 257: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers // - case 287: { action. consumeTypeSpecifierEnumeration(false); break; + case 257: { action. consumeDeclarationSpecifiersComposite(); break; } // - // Rule 288: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt } + // Rule 258: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers // - case 288: { action. consumeTypeSpecifierEnumeration(true); break; + case 258: { action. consumeDeclarationSpecifiersComposite(); break; } // - // Rule 294: enumerator_definition ::= identifier_token + // Rule 259: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers // - case 294: { action. consumeEnumerator(false); break; + case 259: { action. consumeDeclarationSpecifiersComposite(); break; } // - // Rule 295: enumerator_definition ::= identifier_token = constant_expression + // Rule 260: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers // - case 295: { action. consumeEnumerator(true); break; + case 260: { action. consumeDeclarationSpecifiersTypeName(); break; } // - // Rule 297: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt } + // Rule 262: declaration_specifiers_opt ::= $Empty // - case 297: { action. consumeNamespaceDefinition(true); break; + case 262: { action. consumeEmpty(); break; } // - // Rule 298: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt } + // Rule 266: no_type_declaration_specifier ::= friend // - case 298: { action. consumeNamespaceDefinition(false); break; + case 266: { action. consumeToken(); break; } // - // Rule 300: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; + // Rule 267: no_type_declaration_specifier ::= typedef // - case 300: { action. consumeNamespaceAliasDefinition(); break; + case 267: { action. consumeToken(); break; } // - // Rule 301: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; + // Rule 287: storage_class_specifier ::= auto // - case 301: { action. consumeUsingDeclaration(); break; + case 287: { action. consumeToken(); break; } // - // Rule 302: typename_opt ::= typename + // Rule 288: storage_class_specifier ::= register // - case 302: { action. consumePlaceHolder(); break; + case 288: { action. consumeToken(); break; } // - // Rule 303: typename_opt ::= $Empty + // Rule 289: storage_class_specifier ::= static // - case 303: { action. consumeEmpty(); break; + case 289: { action. consumeToken(); break; } // - // Rule 304: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; + // Rule 290: storage_class_specifier ::= extern // - case 304: { action. consumeUsingDirective(); break; + case 290: { action. consumeToken(); break; } // - // Rule 305: asm_definition ::= asm ( stringlit ) ; + // Rule 291: storage_class_specifier ::= mutable // - case 305: { action. consumeDeclarationASM(); break; + case 291: { action. consumeToken(); break; } // - // Rule 306: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt } + // Rule 292: function_specifier ::= inline // - case 306: { action. consumeLinkageSpecification(); break; + case 292: { action. consumeToken(); break; } // - // Rule 307: linkage_specification ::= extern stringlit <openscope-ast> declaration + // Rule 293: function_specifier ::= virtual // - case 307: { action. consumeLinkageSpecification(); break; + case 293: { action. consumeToken(); break; } // - // Rule 312: init_declarator_complete ::= init_declarator + // Rule 294: function_specifier ::= explicit // - case 312: { action. consumeInitDeclaratorComplete(); break; + case 294: { action. consumeToken(); break; } // - // Rule 314: init_declarator ::= complete_declarator initializer + // Rule 295: simple_type_specifier ::= simple_type_specifier_token // - case 314: { action. consumeDeclaratorWithInitializer(true); break; + case 295: { action. consumeToken(); break; } // - // Rule 317: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator + // Rule 309: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name // - case 317: { action. consumeDeclaratorWithPointer(true); break; + case 309: { action. consumeQualifiedId(false); break; } // - // Rule 319: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator + // Rule 310: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name // - case 319: { action. consumeDeclaratorWithPointer(true); break; + case 310: { action. consumeQualifiedId(false); break; } // - // Rule 323: basic_direct_declarator ::= declarator_id_name + // Rule 311: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name // - case 323: { action. consumeDirectDeclaratorIdentifier(); break; + case 311: { action. consumeQualifiedId(false); break; } // - // Rule 324: basic_direct_declarator ::= ( declarator ) + // Rule 312: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name // - case 324: { action. consumeDirectDeclaratorBracketed(); break; + case 312: { action. consumeQualifiedId(true); break; } // - // Rule 325: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt + // Rule 314: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name // - case 325: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; + case 314: { action. consumeTypeSpecifierElaborated(false); break; } // - // Rule 326: array_direct_declarator ::= array_direct_declarator array_modifier + // Rule 315: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name // - case 326: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + case 315: { action. consumeTypeSpecifierElaborated(true); break; } // - // Rule 327: array_direct_declarator ::= basic_direct_declarator array_modifier + // Rule 316: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name // - case 327: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + case 316: { action. consumeTypeSpecifierElaborated(false); break; } // - // Rule 328: array_modifier ::= [ constant_expression ] + // Rule 320: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt } // - case 328: { action. consumeDirectDeclaratorArrayModifier(true); break; + case 320: { action. consumeTypeSpecifierEnumeration(false); break; } // - // Rule 329: array_modifier ::= [ ] + // Rule 321: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt } // - case 329: { action. consumeDirectDeclaratorArrayModifier(false); break; + case 321: { action. consumeTypeSpecifierEnumeration(true); break; } // - // Rule 330: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt + // Rule 327: enumerator_definition ::= identifier_token // - case 330: { action. consumePointer(); break; + case 327: { action. consumeEnumerator(false); break; } // - // Rule 331: ptr_operator ::= pointer_hook & pointer_hook + // Rule 328: enumerator_definition ::= identifier_token = constant_expression // - case 331: { action. consumeReferenceOperator(); break; + case 328: { action. consumeEnumerator(true); break; } // - // Rule 332: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt + // Rule 330: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt } // - case 332: { action. consumePointerToMember(); break; + case 330: { action. consumeNamespaceDefinition(true); break; } // - // Rule 339: cv_qualifier ::= const + // Rule 331: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt } // - case 339: { action. consumeToken(); break; + case 331: { action. consumeNamespaceDefinition(false); break; } // - // Rule 340: cv_qualifier ::= volatile + // Rule 333: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; // - case 340: { action. consumeToken(); break; + case 333: { action. consumeNamespaceAliasDefinition(); break; } // - // Rule 342: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name + // Rule 334: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; // - case 342: { action. consumeQualifiedId(false); break; + case 334: { action. consumeUsingDeclaration(); break; } // - // Rule 343: type_id ::= type_specifier_seq + // Rule 335: typename_opt ::= typename // - case 343: { action. consumeTypeId(false); break; + case 335: { action. consumePlaceHolder(); break; } // - // Rule 344: type_id ::= type_specifier_seq abstract_declarator + // Rule 336: typename_opt ::= $Empty // - case 344: { action. consumeTypeId(true); break; + case 336: { action. consumeEmpty(); break; } // - // Rule 347: abstract_declarator ::= <openscope-ast> ptr_operator_seq + // Rule 337: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; // - case 347: { action. consumeDeclaratorWithPointer(false); break; + case 337: { action. consumeUsingDirective(); break; } // - // Rule 348: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator + // Rule 338: asm_definition ::= asm ( stringlit ) ; // - case 348: { action. consumeDeclaratorWithPointer(true); break; + case 338: { action. consumeDeclarationASM(); break; } // - // Rule 352: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // Rule 339: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt } // - case 352: { action. consumeDirectDeclaratorBracketed(); break; + case 339: { action. consumeLinkageSpecification(); break; } // - // Rule 353: basic_direct_abstract_declarator ::= ( ) + // Rule 340: linkage_specification ::= extern stringlit <openscope-ast> declaration // - case 353: { action. consumeAbstractDeclaratorEmpty(); break; + case 340: { action. consumeLinkageSpecification(); break; } // - // Rule 354: array_direct_abstract_declarator ::= array_modifier + // Rule 345: init_declarator_complete ::= init_declarator // - case 354: { action. consumeDirectDeclaratorArrayDeclarator(false); break; + case 345: { action. consumeInitDeclaratorComplete(); break; } // - // Rule 355: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier + // Rule 347: init_declarator ::= complete_declarator initializer // - case 355: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + case 347: { action. consumeDeclaratorWithInitializer(true); break; } // - // Rule 356: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // Rule 350: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // - case 356: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + case 350: { action. consumeDeclaratorWithPointer(true); break; } // - // Rule 357: 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 352: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // - case 357: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; + case 352: { action. consumeDeclaratorWithPointer(true); break; } // - // Rule 358: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt + // Rule 356: basic_direct_declarator ::= declarator_id_name // - case 358: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; + case 356: { action. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 359: parameter_declaration_clause ::= parameter_declaration_list_opt ... + // Rule 357: basic_direct_declarator ::= ( declarator ) // - case 359: { action. consumePlaceHolder(); break; + case 357: { action. consumeDirectDeclaratorBracketed(); break; } // - // Rule 360: parameter_declaration_clause ::= parameter_declaration_list_opt + // Rule 358: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // - case 360: { action. consumeEmpty(); break; + case 358: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 361: parameter_declaration_clause ::= parameter_declaration_list , ... + // Rule 359: array_direct_declarator ::= array_direct_declarator array_modifier // - case 361: { action. consumePlaceHolder(); break; + case 359: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 367: abstract_declarator_opt ::= $Empty + // Rule 360: array_direct_declarator ::= basic_direct_declarator array_modifier // - case 367: { action. consumeEmpty(); break; + case 360: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 368: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // Rule 361: array_modifier ::= [ constant_expression ] // - case 368: { action. consumeParameterDeclaration(); break; + case 361: { action. consumeDirectDeclaratorArrayModifier(true); break; } // - // Rule 369: parameter_declaration ::= declaration_specifiers + // Rule 362: array_modifier ::= [ ] // - case 369: { action. consumeParameterDeclarationWithoutDeclarator(); break; + case 362: { action. consumeDirectDeclaratorArrayModifier(false); break; } // - // Rule 371: parameter_init_declarator ::= declarator = parameter_initializer + // Rule 363: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt // - case 371: { action. consumeDeclaratorWithInitializer(true); break; + case 363: { action. consumePointer(); break; } // - // Rule 373: parameter_init_declarator ::= abstract_declarator = parameter_initializer + // Rule 364: ptr_operator ::= pointer_hook & pointer_hook // - case 373: { action. consumeDeclaratorWithInitializer(true); break; + case 364: { action. consumeReferenceOperator(); break; } // - // Rule 374: parameter_init_declarator ::= = parameter_initializer + // Rule 365: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt // - case 374: { action. consumeDeclaratorWithInitializer(false); break; + case 365: { action. consumePointerToMember(); break; } // - // Rule 375: parameter_initializer ::= assignment_expression + // Rule 372: cv_qualifier ::= const // - case 375: { action. consumeInitializer(); break; + case 372: { action. consumeToken(); break; } // - // Rule 376: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body + // Rule 373: cv_qualifier ::= volatile // - case 376: { action. consumeFunctionDefinition(false); break; + case 373: { action. consumeToken(); break; } // - // Rule 377: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq + // Rule 375: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name // - case 377: { action. consumeFunctionDefinition(true); break; + case 375: { action. consumeQualifiedId(false); break; } // - // Rule 380: initializer ::= ( expression_list ) + // Rule 376: type_id ::= type_specifier_seq // - case 380: { action. consumeInitializerConstructor(); break; + case 376: { action. consumeTypeId(false); break; } // - // Rule 381: initializer_clause ::= assignment_expression + // Rule 377: type_id ::= type_specifier_seq abstract_declarator // - case 381: { action. consumeInitializer(); break; + case 377: { action. consumeTypeId(true); break; } // - // Rule 382: initializer_clause ::= initializer_list + // Rule 380: abstract_declarator ::= <openscope-ast> ptr_operator_seq // - case 382: { action. consumeInitializer(); break; + case 380: { action. consumeDeclaratorWithPointer(false); break; } // - // Rule 383: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list + // Rule 381: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator // - case 383: { action. consumeInitializerList(); break; + case 381: { action. consumeDeclaratorWithPointer(true); break; } // - // Rule 384: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list + // Rule 385: basic_direct_abstract_declarator ::= ( abstract_declarator ) // - case 384: { action. consumeInitializerList(); break; + case 385: { action. consumeDirectDeclaratorBracketed(); break; } // - // Rule 385: initializer_list ::= { <openscope-ast> } + // Rule 386: basic_direct_abstract_declarator ::= ( ) // - case 385: { action. consumeInitializerList(); break; + case 386: { action. consumeAbstractDeclaratorEmpty(); break; } // - // Rule 386: start_initializer_list ::= $Empty + // Rule 387: array_direct_abstract_declarator ::= array_modifier // - case 386: { action. initializerListStart(); break; + case 387: { action. consumeDirectDeclaratorArrayDeclarator(false); break; } // - // Rule 387: end_initializer_list ::= $Empty + // Rule 388: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // - case 387: { action. initializerListEnd(); break; + case 388: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 392: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt } + // Rule 389: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // - case 392: { action. consumeClassSpecifier(); break; + case 389: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 393: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt + // Rule 390: 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 393: { action. consumeClassHead(false); break; + case 390: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; } // - // Rule 394: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt + // Rule 391: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // - case 394: { action. consumeClassHead(false); break; + case 391: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; } // - // Rule 395: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt + // Rule 392: parameter_declaration_clause ::= parameter_declaration_list_opt ... // - case 395: { action. consumeClassHead(true); break; + case 392: { action. consumePlaceHolder(); break; } // - // Rule 396: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt + // Rule 393: parameter_declaration_clause ::= parameter_declaration_list_opt // - case 396: { action. consumeClassHead(true); break; + case 393: { action. consumeEmpty(); break; } // - // Rule 400: identifier_name_opt ::= $Empty + // Rule 394: parameter_declaration_clause ::= parameter_declaration_list , ... + // + case 394: { action. consumePlaceHolder(); break; + } + + // + // Rule 400: abstract_declarator_opt ::= $Empty // case 400: { action. consumeEmpty(); break; + } + + // + // Rule 401: parameter_declaration ::= declaration_specifiers parameter_init_declarator + // + case 401: { action. consumeParameterDeclaration(); break; + } + + // + // Rule 402: parameter_declaration ::= declaration_specifiers + // + case 402: { action. consumeParameterDeclarationWithoutDeclarator(); break; + } + + // + // Rule 404: parameter_init_declarator ::= declarator = parameter_initializer + // + case 404: { action. consumeDeclaratorWithInitializer(true); break; + } + + // + // Rule 406: parameter_init_declarator ::= abstract_declarator = parameter_initializer + // + case 406: { action. consumeDeclaratorWithInitializer(true); break; + } + + // + // Rule 407: parameter_init_declarator ::= = parameter_initializer + // + case 407: { action. consumeDeclaratorWithInitializer(false); break; + } + + // + // Rule 408: parameter_initializer ::= assignment_expression + // + case 408: { action. consumeInitializer(); break; + } + + // + // Rule 409: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body + // + case 409: { action. consumeFunctionDefinition(false); break; + } + + // + // Rule 410: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq + // + case 410: { action. consumeFunctionDefinition(true); break; + } + + // + // Rule 413: initializer ::= ( expression_list ) + // + case 413: { action. consumeInitializerConstructor(); break; + } + + // + // Rule 414: initializer_clause ::= assignment_expression + // + case 414: { action. consumeInitializer(); break; + } + + // + // Rule 415: initializer_clause ::= initializer_list + // + case 415: { action. consumeInitializer(); break; + } + + // + // Rule 416: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq , } end_initializer_list + // + case 416: { action. consumeInitializerList(); break; + } + + // + // Rule 417: initializer_list ::= start_initializer_list { <openscope-ast> initializer_seq } end_initializer_list + // + case 417: { action. consumeInitializerList(); break; + } + + // + // Rule 418: initializer_list ::= { <openscope-ast> } + // + case 418: { action. consumeInitializerList(); break; + } + + // + // Rule 419: start_initializer_list ::= $Empty + // + case 419: { action. initializerListStart(); break; + } + + // + // Rule 420: end_initializer_list ::= $Empty + // + case 420: { action. initializerListEnd(); break; + } + + // + // Rule 425: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt } + // + case 425: { action. consumeClassSpecifier(); break; + } + + // + // Rule 426: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt + // + case 426: { action. consumeClassHead(false); break; + } + + // + // Rule 427: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt + // + case 427: { action. consumeClassHead(false); break; + } + + // + // Rule 428: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt + // + case 428: { action. consumeClassHead(true); break; + } + + // + // Rule 429: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt + // + case 429: { action. consumeClassHead(true); break; + } + + // + // Rule 433: identifier_name_opt ::= $Empty + // + case 433: { action. consumeEmpty(); break; } // - // Rule 404: visibility_label ::= access_specifier_keyword : + // Rule 437: visibility_label ::= access_specifier_keyword : + // + case 437: { action. consumeVisibilityLabel(); break; + } + + // + // Rule 438: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ; + // + case 438: { action. consumeDeclarationSimple(true); break; + } + + // + // Rule 439: member_declaration ::= declaration_specifiers_opt ; + // + case 439: { action. consumeDeclarationSimple(false); break; + } + + // + // Rule 442: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // + case 442: { action. consumeMemberDeclarationQualifiedId(); break; + } + + // + // Rule 448: member_declaration ::= ERROR_TOKEN + // + case 448: { action. consumeDeclarationProblem(); break; + } + + // + // Rule 457: member_declarator ::= declarator constant_initializer + // + case 457: { action. consumeMemberDeclaratorWithInitializer(); break; + } + + // + // Rule 458: member_declarator ::= bit_field_declarator : constant_expression + // + case 458: { action. consumeBitField(true); break; + } + + // + // Rule 459: member_declarator ::= : constant_expression + // + case 459: { action. consumeBitField(false); break; + } + + // + // Rule 460: bit_field_declarator ::= identifier_name + // + case 460: { action. consumeDirectDeclaratorIdentifier(); break; + } + + // + // Rule 461: constant_initializer ::= = constant_expression + // + case 461: { action. consumeInitializer(); break; + } + + // + // Rule 467: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name + // + case 467: { action. consumeBaseSpecifier(false, false); break; + } + + // + // Rule 468: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name + // + case 468: { action. consumeBaseSpecifier(true, true); break; + } + + // + // Rule 469: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name + // + case 469: { action. consumeBaseSpecifier(true, true); break; + } + + // + // Rule 470: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // + case 470: { action. consumeBaseSpecifier(true, false); break; + } + + // + // Rule 471: access_specifier_keyword ::= private + // + case 471: { action. consumeToken(); break; + } + + // + // Rule 472: access_specifier_keyword ::= protected // - case 404: { action. consumeVisibilityLabel(); break; + case 472: { action. consumeToken(); break; } // - // Rule 405: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ; + // Rule 473: access_specifier_keyword ::= public // - case 405: { action. consumeDeclarationSimple(true); break; + case 473: { action. consumeToken(); break; } // - // Rule 406: member_declaration ::= declaration_specifiers_opt ; + // Rule 475: access_specifier_keyword_opt ::= $Empty // - case 406: { action. consumeDeclarationSimple(false); break; + case 475: { action. consumeEmpty(); break; } // - // Rule 409: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; + // Rule 477: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt > // - case 409: { action. consumeMemberDeclarationQualifiedId(); break; + case 477: { action. consumeTemplateId(); break; } // - // Rule 415: member_declaration ::= ERROR_TOKEN + // Rule 478: conversion_function_id ::= operator conversion_type_id // - case 415: { action. consumeDeclarationProblem(); break; + case 478: { action. consumeConversionName(); break; } // - // Rule 424: member_declarator ::= declarator constant_initializer + // Rule 479: conversion_type_id ::= type_specifier_seq conversion_declarator // - case 424: { action. consumeMemberDeclaratorWithInitializer(); break; + case 479: { action. consumeTypeId(true); break; } // - // Rule 425: member_declarator ::= bit_field_declarator : constant_expression + // Rule 480: conversion_type_id ::= type_specifier_seq // - case 425: { action. consumeBitField(true); break; + case 480: { action. consumeTypeId(false); break; } // - // Rule 426: member_declarator ::= : constant_expression + // Rule 481: conversion_declarator ::= <openscope-ast> ptr_operator_seq // - case 426: { action. consumeBitField(false); break; + case 481: { action. consumeDeclaratorWithPointer(false); break; } // - // Rule 427: bit_field_declarator ::= identifier_name + // Rule 487: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // - case 427: { action. consumeDirectDeclaratorIdentifier(); break; + case 487: { action. consumeConstructorChainInitializer(); break; } // - // Rule 428: constant_initializer ::= = constant_expression + // Rule 488: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // - case 428: { action. consumeInitializer(); break; + case 488: { action. consumeQualifiedId(false); break; } // - // Rule 434: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 491: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt > // - case 434: { action. consumeBaseSpecifier(false, false); break; + case 491: { action. consumeTemplateId(); break; } // - // Rule 435: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name + // Rule 492: operator_id_name ::= operator overloadable_operator // - case 435: { action. consumeBaseSpecifier(true, true); break; + case 492: { action. consumeOperatorName(); break; } // - // Rule 436: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name + // Rule 535: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration // - case 436: { action. consumeBaseSpecifier(true, true); break; + case 535: { action. consumeTemplateDeclaration(); break; } // - // Rule 437: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name + // Rule 536: export_opt ::= export // - case 437: { action. consumeBaseSpecifier(true, false); break; + case 536: { action. consumePlaceHolder(); break; } // - // Rule 438: access_specifier_keyword ::= private + // Rule 537: export_opt ::= $Empty // - case 438: { action. consumeToken(); break; + case 537: { action. consumeEmpty(); break; } // - // Rule 439: access_specifier_keyword ::= protected + // Rule 541: template_parameter ::= parameter_declaration // - case 439: { action. consumeToken(); break; + case 541: { action. consumeTemplateParamterDeclaration(); break; } // - // Rule 440: access_specifier_keyword ::= public + // Rule 542: type_parameter ::= class identifier_name_opt // - case 440: { action. consumeToken(); break; + case 542: { action. consumeSimpleTypeTemplateParameter(false); break; } // - // Rule 442: access_specifier_keyword_opt ::= $Empty + // Rule 543: type_parameter ::= class identifier_name_opt = type_id // - case 442: { action. consumeEmpty(); break; + case 543: { action. consumeSimpleTypeTemplateParameter(true); break; } // - // Rule 444: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt > + // Rule 544: type_parameter ::= typename identifier_name_opt // - case 444: { action. consumeTemplateId(); break; + case 544: { action. consumeSimpleTypeTemplateParameter(false); break; } // - // Rule 445: conversion_function_id ::= operator conversion_type_id + // Rule 545: type_parameter ::= typename identifier_name_opt = type_id // - case 445: { action. consumeConversionName(); break; + case 545: { action. consumeSimpleTypeTemplateParameter(true); break; } // - // Rule 446: conversion_type_id ::= type_specifier_seq conversion_declarator + // Rule 546: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt // - case 446: { action. consumeTypeId(true); break; + case 546: { action. consumeTemplatedTypeTemplateParameter(false); break; } // - // Rule 447: conversion_type_id ::= type_specifier_seq + // Rule 547: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression // - case 447: { action. consumeTypeId(false); break; + case 547: { action. consumeTemplatedTypeTemplateParameter(true); break; } // - // Rule 448: conversion_declarator ::= <openscope-ast> ptr_operator_seq + // Rule 548: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt > // - case 448: { action. consumeDeclaratorWithPointer(false); break; + case 548: { action. consumeTemplateId(); break; } // - // Rule 454: mem_initializer ::= mem_initializer_name ( expression_list_opt ) + // Rule 555: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate // - case 454: { action. consumeConstructorChainInitializer(); break; + case 555: { action. consumeNestedNameSpecifier(true); break; } // - // Rule 455: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name + // Rule 556: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: // - case 455: { action. consumeQualifiedId(false); break; + case 556: { action. consumeNestedNameSpecifier(false); break; } // - // Rule 458: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt > + // Rule 557: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate // - case 458: { action. consumeTemplateId(); break; + case 557: { action. consumeNestedNameSpecifier(true); break; } // - // Rule 459: operator_id_name ::= operator overloadable_operator + // Rule 558: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: // - case 459: { action. consumeOperatorName(); break; + case 558: { action. consumeNestedNameSpecifier(false); break; } // - // Rule 502: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration + // Rule 559: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate // - case 502: { action. consumeTemplateDeclaration(); break; + case 559: { action. consumeNameWithTemplateKeyword(); break; } // - // Rule 503: export_opt ::= export + // Rule 561: nested_name_specifier_opt_inTemplate ::= $Empty // - case 503: { action. consumePlaceHolder(); break; + case 561: { action. consumeNestedNameSpecifierEmpty(); break; } // - // Rule 504: export_opt ::= $Empty + // Rule 564: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name // - case 504: { action. consumeEmpty(); break; + case 564: { action. consumeQualifiedId(false); break; } // - // Rule 508: template_parameter ::= parameter_declaration + // Rule 565: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name // - case 508: { action. consumeTemplateParamterDeclaration(); break; + case 565: { action. consumeQualifiedId(true); break; } // - // Rule 509: type_parameter ::= class identifier_name_opt + // Rule 570: declaration_specifiers_inTemplate ::= <openscope-ast> simple_declaration_specifiers // - case 509: { action. consumeSimpleTypeTemplateParameter(false); break; + case 570: { action. consumeDeclarationSpecifiersSimple(); break; } // - // Rule 510: type_parameter ::= class identifier_name_opt = type_id + // Rule 571: declaration_specifiers_inTemplate ::= <openscope-ast> class_declaration_specifiers // - case 510: { action. consumeSimpleTypeTemplateParameter(true); break; + case 571: { action. consumeDeclarationSpecifiersComposite(); break; } // - // Rule 511: type_parameter ::= typename identifier_name_opt + // Rule 572: declaration_specifiers_inTemplate ::= <openscope-ast> elaborated_declaration_specifiers // - case 511: { action. consumeSimpleTypeTemplateParameter(false); break; + case 572: { action. consumeDeclarationSpecifiersComposite(); break; } // - // Rule 512: type_parameter ::= typename identifier_name_opt = type_id + // Rule 573: declaration_specifiers_inTemplate ::= <openscope-ast> enum_declaration_specifiers // - case 512: { action. consumeSimpleTypeTemplateParameter(true); break; + case 573: { action. consumeDeclarationSpecifiersComposite(); break; } // - // Rule 513: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt + // Rule 574: declaration_specifiers_inTemplate ::= <openscope-ast> type_name_declaration_specifiers_inTemplate // - case 513: { action. consumeTemplatedTypeTemplateParameter(false); break; + case 574: { action. consumeDeclarationSpecifiersTypeName(); break; } // - // Rule 514: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression + // Rule 576: type_id_inTemplate ::= type_specifier_seq_inTemplate // - case 514: { action. consumeTemplatedTypeTemplateParameter(true); break; + case 576: { action. consumeTypeId(false); break; } // - // Rule 515: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt > + // Rule 577: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator // - case 515: { action. consumeTemplateId(); break; + case 577: { action. consumeTypeId(true); break; } // - // Rule 520: template_argument ::= assignment_expression + // Rule 578: template_argument ::= assignment_expression_inTemplate // - case 520: { action. consumeTemplateArgumentExpression(); break; + case 578: { action. consumeTemplateArgumentExpression(); break; } // - // Rule 521: template_argument ::= type_id + // Rule 579: template_argument ::= type_id_inTemplate // - case 521: { action. consumeTemplateArgumentTypeId(); break; + case 579: { action. consumeTemplateArgumentTypeId(); break; } // - // Rule 522: explicit_instantiation ::= template declaration + // Rule 580: explicit_instantiation ::= template declaration // - case 522: { action. consumeTemplateExplicitInstantiation(); break; + case 580: { action. consumeTemplateExplicitInstantiation(); break; } // - // Rule 523: explicit_specialization ::= template < > declaration + // Rule 581: explicit_specialization ::= template < > declaration // - case 523: { action. consumeTemplateExplicitSpecialization(); break; + case 581: { action. consumeTemplateExplicitSpecialization(); break; } // - // Rule 524: try_block ::= try compound_statement <openscope-ast> handler_seq + // Rule 582: try_block ::= try compound_statement <openscope-ast> handler_seq // - case 524: { action. consumeStatementTryBlock(true); break; + case 582: { action. consumeStatementTryBlock(true); break; } // - // Rule 525: try_block ::= try compound_statement + // Rule 583: try_block ::= try compound_statement // - case 525: { action. consumeStatementTryBlock(false); break; + case 583: { action. consumeStatementTryBlock(false); break; } // - // Rule 528: handler ::= catch ( exception_declaration ) compound_statement + // Rule 586: handler ::= catch ( exception_declaration ) compound_statement // - case 528: { action. consumeStatementCatchHandler(false); break; + case 586: { action. consumeStatementCatchHandler(false); break; } // - // Rule 529: handler ::= catch ( ... ) compound_statement + // Rule 587: handler ::= catch ( ... ) compound_statement // - case 529: { action. consumeStatementCatchHandler(true); break; + case 587: { action. consumeStatementCatchHandler(true); break; } // - // Rule 530: exception_declaration ::= type_specifier_seq <openscope-ast> declarator + // Rule 588: exception_declaration ::= type_specifier_seq <openscope-ast> declarator // - case 530: { action. consumeDeclarationSimple(true); break; + case 588: { action. consumeDeclarationSimple(true); break; } // - // Rule 531: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator + // Rule 589: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator // - case 531: { action. consumeDeclarationSimple(true); break; + case 589: { action. consumeDeclarationSimple(true); break; } // - // Rule 532: exception_declaration ::= type_specifier_seq + // Rule 590: exception_declaration ::= type_specifier_seq // - case 532: { action. consumeDeclarationSimple(false); break; + case 590: { action. consumeDeclarationSimple(false); break; } // - // Rule 534: exception_specification ::= throw ( ) + // Rule 592: exception_specification ::= throw ( ) // - case 534: { action. consumePlaceHolder(); break; + case 592: { action. consumePlaceHolder(); break; } // - // Rule 540: no_cast_start ::= ERROR_TOKEN + // Rule 598: no_cast_start ::= ERROR_TOKEN // - case 540: { action. consumeEmpty(); break; + case 598: { action. consumeEmpty(); break; } |