Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java')
-rw-r--r--lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java5180
1 files changed, 2933 insertions, 2247 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java
index 09ae1814ddd..bd89af415e4 100644
--- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java
+++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/gpp/GPPParser.java
@@ -42,2267 +42,2953 @@ import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
import org.eclipse.cdt.core.dom.ast.gnu.cpp.*;
-public class GPPParser extends PrsStream implements RuleAction, ITokenStream,
- ITokenCollector, IParser< IASTTranslationUnit >
-
+public class GPPParser extends PrsStream
+ implements RuleAction, ITokenStream, ITokenCollector, IParser<IASTTranslationUnit>
+
{
- private static ParseTable prs = new GPPParserprs();
- private FixedBacktrackingParser btParser;
-
- public FixedBacktrackingParser getParser() { return btParser; }
- private void setResult(Object object) { btParser.setSym1(object); }
- public Object getRhsSym(int i) { return btParser.getSym(i); }
-
- public int getRhsTokenIndex(int i) { return btParser.getToken(i); }
- public IToken getRhsIToken(int i) { return super.getIToken(getRhsTokenIndex(i)); }
-
- public int getRhsFirstTokenIndex(int i) { return btParser.getFirstToken(i); }
- public IToken getRhsFirstIToken(int i) { return super.getIToken(getRhsFirstTokenIndex(i)); }
-
- public int getRhsLastTokenIndex(int i) { return btParser.getLastToken(i); }
- public IToken getRhsLastIToken(int i) { return super.getIToken(getRhsLastTokenIndex(i)); }
-
- public int getLeftSpan() { return btParser.getFirstToken(); }
- @Override
- public IToken getLeftIToken() { return super.getIToken(getLeftSpan()); }
-
- public int getRightSpan() { return btParser.getLastToken(); }
- @Override
- public IToken getRightIToken() { return super.getIToken(getRightSpan()); }
-
- public int getRhsErrorTokenIndex(int i)
- {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (err instanceof ErrorToken ? index : 0);
- }
- public ErrorToken getRhsErrorIToken(int i)
- {
- int index = btParser.getToken(i);
- IToken err = super.getIToken(index);
- return (ErrorToken) (err instanceof ErrorToken ? err : null);
- }
-
- public GPPParser(LexStream lexStream)
- {
- super(lexStream);
-
- try
- {
- super.remapTerminalSymbols(orderedTerminalSymbols(), GPPParserprs.EOFT_SYMBOL);
- }
- catch(NullExportedSymbolsException e) {
- }
- catch(NullTerminalSymbolsException e) {
- }
- catch(UnimplementedTerminalsException e)
- {
- java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");
- for (int i = 0; i < unimplemented_symbols.size(); i++)
- {
- Integer id = (Integer) unimplemented_symbols.get(i);
- System.out.println(" " + GPPParsersym.orderedTerminalSymbols[id.intValue()]);
- }
- System.out.println();
- }
- catch(UndefinedEofSymbolException e)
- {
- throw new Error(new UndefinedEofSymbolException
- ("The Lexer does not implement the Eof symbol " +
- GPPParsersym.orderedTerminalSymbols[GPPParserprs.EOFT_SYMBOL]));
- }
- }
-
- @Override
- public String[] orderedTerminalSymbols() { return GPPParsersym.orderedTerminalSymbols; }
- public String getTokenKindName(int kind) { return GPPParsersym.orderedTerminalSymbols[kind]; }
- public int getEOFTokenKind() { return GPPParserprs.EOFT_SYMBOL; }
- public PrsStream getParseStream() { return this; }
-
- //
- // Report error message for given error_token.
- //
- public final void reportErrorTokenMessage(int error_token, String msg)
- {
- int firsttok = super.getFirstErrorToken(error_token),
- lasttok = super.getLastErrorToken(error_token);
- String location = super.getFileName() + ':' +
- (firsttok > lasttok
- ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
- : (super.getLine(error_token) + ":" +
- super.getColumn(error_token) + ":" +
- super.getEndLine(error_token) + ":" +
- super.getEndColumn(error_token)))
- + ": ";
- super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg);
- }
-
- public void parser()
- {
- parser(null, 0);
- }
-
- public void parser(Monitor monitor)
- {
- parser(monitor, 0);
- }
-
- public void parser(int error_repair_count)
- {
- parser(null, error_repair_count);
- }
-
- public void parser(Monitor monitor, int error_repair_count)
- {
- try
- {
- btParser = new FixedBacktrackingParser(monitor, this, prs, this);
- }
- catch (NotBacktrackParseTableException e)
- {
- throw new Error(new NotBacktrackParseTableException
- ("Regenerate GPPParserprs.java with -BACKTRACK option"));
- }
- catch (BadParseSymFileException e)
- {
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- GPPParsersym.java"));
- }
-
- try
- {
- btParser.parse(error_repair_count);
- }
- catch (BadParseException e)
- {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
-
-
-private GPPBuildASTParserAction action;
-private IASTCompletionNode compNode;
-
-
-public GPPParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Map<String,String> properties) {
- initActions(properties);
- action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
- CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
-}
+ private static ParseTable prs = new GPPParserprs();
+ private FixedBacktrackingParser btParser;
-private void initActions(Map<String,String> properties) {
- ScopedStack<Object> astStack = new ScopedStack<Object>();
-
- action = new GPPBuildASTParserAction (this, astStack, CPPNodeFactory.getDefault() , GPPSecondaryParserFactory.getDefault() );
- action.setParserProperties(properties);
-
-
+ public FixedBacktrackingParser getParser() {
+ return btParser;
+ }
- gnuAction = new GNUBuildASTParserAction (this, astStack, CPPNodeFactory.getDefault() );
- gnuAction.setParserProperties(properties);
+ private void setResult(Object object) {
+ btParser.setSym1(object);
+ }
-}
+ public Object getRhsSym(int i) {
+ return btParser.getSym(i);
+ }
+ public int getRhsTokenIndex(int i) {
+ return btParser.getToken(i);
+ }
-@Override
-public void addToken(IToken token) {
- token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
- super.addToken(token);
-}
+ public IToken getRhsIToken(int i) {
+ return super.getIToken(getRhsTokenIndex(i));
+ }
+ public int getRhsFirstTokenIndex(int i) {
+ return btParser.getFirstToken(i);
+ }
-@Override
-public IASTTranslationUnit parse() {
- // this has to be done, or... kaboom!
- setStreamLength(getSize());
-
- final int errorRepairCount = -1; // -1 means full error handling
- parser(null, errorRepairCount); // do the actual parse
- super.resetTokenStream(); // allow tokens to be garbage collected
+ public IToken getRhsFirstIToken(int i) {
+ return super.getIToken(getRhsFirstTokenIndex(i));
+ }
- compNode = action.getASTCompletionNode(); // the completion node may be null
- return ( IASTTranslationUnit ) action.getParseResult();
-}
+ public int getRhsLastTokenIndex(int i) {
+ return btParser.getLastToken(i);
+ }
+ public IToken getRhsLastIToken(int i) {
+ return super.getIToken(getRhsLastTokenIndex(i));
+ }
-@Override
-public IASTCompletionNode getCompletionNode() {
- return compNode;
-}
+ public int getLeftSpan() {
+ return btParser.getFirstToken();
+ }
-// uncomment this method to use with backtracking parser
-@Override
-public List<IToken> getRuleTokens() {
- return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
-}
+ @Override
+ public IToken getLeftIToken() {
+ return super.getIToken(getLeftSpan());
+ }
-@Override
-public String[] getOrderedTerminalSymbols() {
- return GPPParsersym.orderedTerminalSymbols;
-}
+ public int getRightSpan() {
+ return btParser.getLastToken();
+ }
-@Override
-@SuppressWarnings("nls")
-public String getName() {
- return "GPPParser";
-}
+ @Override
+ public IToken getRightIToken() {
+ return super.getIToken(getRightSpan());
+ }
+ public int getRhsErrorTokenIndex(int i) {
+ int index = btParser.getToken(i);
+ IToken err = super.getIToken(index);
+ return (err instanceof ErrorToken ? index : 0);
+ }
-private GNUBuildASTParserAction gnuAction;
-
- @Override
- public void ruleAction(int ruleNumber)
- {
- switch (ruleNumber)
- {
-
- //
- // Rule 1: <openscope-ast> ::= $Empty
- //
- case 1: { action. openASTScope(); break;
- }
-
- //
- // Rule 2: <empty> ::= $Empty
- //
- case 2: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 13: translation_unit ::= declaration_seq_opt
- //
- case 13: { action. consumeTranslationUnit(); break;
- }
-
- //
- // Rule 16: literal ::= integer
- //
- case 16: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant); break;
- }
-
- //
- // Rule 17: literal ::= floating
- //
- case 17: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant); break;
- }
-
- //
- // Rule 18: literal ::= charconst
- //
- case 18: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant); break;
- }
-
- //
- // Rule 19: literal ::= stringlit
- //
- case 19: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal); break;
- }
-
- //
- // Rule 20: literal ::= true
- //
- case 20: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true); break;
- }
-
- //
- // Rule 21: literal ::= false
- //
- case 21: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false); break;
- }
-
- //
- // Rule 22: literal ::= this
- //
- case 22: { action. consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this); break;
- }
-
- //
- // Rule 24: primary_expression ::= ( expression )
- //
- case 24: { action. consumeExpressionBracketed(); break;
- }
-
- //
- // Rule 26: id_expression ::= qualified_or_unqualified_name
- //
- case 26: { action. consumeExpressionName(); break;
- }
-
- //
- // Rule 33: unqualified_id_name ::= ~ identifier_token
- //
- case 33: { action. consumeDestructorName(); break;
- }
-
- //
- // Rule 34: unqualified_id_name ::= ~ template_id_name
- //
- case 34: { action. consumeDestructorNameTemplateId(); break;
- }
-
- //
- // Rule 35: identifier_name ::= identifier_token
- //
- case 35: { action. consumeIdentifierName(); break;
- }
-
- //
- // Rule 36: template_opt ::= template
- //
- case 36: { action. consumePlaceHolder(); break;
- }
-
- //
- // Rule 37: template_opt ::= $Empty
- //
- case 37: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 38: dcolon_opt ::= ::
- //
- case 38: { action. consumeToken(); break;
- }
-
- //
- // Rule 39: dcolon_opt ::= $Empty
- //
- case 39: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
- //
- case 40: { action. consumeQualifiedId(true); break;
- }
-
- //
- // Rule 41: qualified_id_name ::= :: unqualified_id_name
- //
- case 41: { action. consumeGlobalQualifiedId(); break;
- }
-
- //
- // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
- //
- case 42: { action. consumeNestedNameSpecifier(true); break;
- }
-
- //
- // Rule 43: nested_name_specifier ::= class_or_namespace_name ::
- //
- case 43: { action. consumeNestedNameSpecifier(false); break;
- }
-
- //
- // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
- //
- case 44: { action. consumeNestedNameSpecifier(true); break;
- }
-
- //
- // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
- //
- case 45: { action. consumeNestedNameSpecifier(false); break;
- }
-
- //
- // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
- //
- case 46: { action. consumeNameWithTemplateKeyword(); break;
- }
-
- //
- // Rule 48: nested_name_specifier_opt ::= $Empty
- //
- case 48: { action. consumeNestedNameSpecifierEmpty(); break;
- }
-
- //
- // Rule 51: postfix_expression ::= postfix_expression [ expression ]
- //
- case 51: { action. consumeExpressionArraySubscript(); break;
- }
-
- //
- // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt )
- //
- case 52: { action. consumeExpressionFunctionCall(); break;
- }
-
- //
- // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt )
- //
- case 53: { action. consumeExpressionSimpleTypeConstructor(); break;
- }
-
- //
- // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
- //
- case 54: { action. consumeExpressionTypeName(); break;
- }
-
- //
- // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
- //
- case 55: { action. consumeExpressionTypeName(); break;
- }
-
- //
- // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
- //
- case 56: { action. consumeExpressionFieldReference(false, false); break;
- }
-
- //
- // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
- //
- case 57: { action. consumeExpressionFieldReference(true, false); break;
- }
-
- //
- // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
- //
- case 58: { action. consumeExpressionFieldReference(false, true); break;
- }
-
- //
- // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
- //
- case 59: { action. consumeExpressionFieldReference(true, true); break;
- }
-
- //
- // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name
- //
- case 60: { action. consumeExpressionFieldReference(false, false); break;
- }
-
- //
- // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name
- //
- case 61: { action. consumeExpressionFieldReference(true, false); break;
- }
-
- //
- // Rule 62: postfix_expression ::= postfix_expression ++
- //
- case 62: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break;
- }
-
- //
- // Rule 63: postfix_expression ::= postfix_expression --
- //
- case 63: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break;
- }
-
- //
- // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression )
- //
- case 64: { action. consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast); break;
- }
-
- //
- // Rule 65: postfix_expression ::= static_cast < type_id > ( expression )
- //
- case 65: { action. consumeExpressionCast(ICPPASTCastExpression.op_static_cast); break;
- }
-
- //
- // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression )
- //
- case 66: { action. consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast); break;
- }
-
- //
- // Rule 67: postfix_expression ::= const_cast < type_id > ( expression )
- //
- case 67: { action. consumeExpressionCast(ICPPASTCastExpression.op_const_cast); break;
- }
-
- //
- // Rule 68: postfix_expression ::= typeid ( expression )
- //
- case 68: { action. consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid); break;
- }
-
- //
- // Rule 69: postfix_expression ::= typeid ( type_id )
- //
- case 69: { action. consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid); break;
- }
-
- //
- // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name
- //
- case 70: { action. consumePsudoDestructorName(true); break;
- }
-
- //
- // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name
- //
- case 71: { action. consumePsudoDestructorName(true); break;
- }
-
- //
- // Rule 72: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name
- //
- case 72: { action. consumePsudoDestructorName(false); break;
- }
-
- //
- // Rule 73: destructor_type_name ::= ~ identifier_token
- //
- case 73: { action. consumeDestructorName(); break;
- }
-
- //
- // Rule 74: destructor_type_name ::= ~ template_id_name
- //
- case 74: { action. consumeDestructorNameTemplateId(); break;
- }
-
- //
- // Rule 78: unary_expression ::= ++ cast_expression
- //
- case 78: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break;
- }
-
- //
- // Rule 79: unary_expression ::= -- cast_expression
- //
- case 79: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break;
- }
-
- //
- // Rule 80: unary_expression ::= & cast_expression
- //
- case 80: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break;
- }
-
- //
- // Rule 81: unary_expression ::= * cast_expression
- //
- case 81: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break;
- }
-
- //
- // Rule 82: unary_expression ::= + cast_expression
- //
- case 82: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break;
- }
-
- //
- // Rule 83: unary_expression ::= - cast_expression
- //
- case 83: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break;
- }
-
- //
- // Rule 84: unary_expression ::= ~ cast_expression
- //
- case 84: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break;
- }
-
- //
- // Rule 85: unary_expression ::= ! cast_expression
- //
- case 85: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break;
- }
-
- //
- // Rule 86: unary_expression ::= sizeof unary_expression
- //
- case 86: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break;
- }
-
- //
- // Rule 87: unary_expression ::= sizeof ( type_id )
- //
- case 87: { action. consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof); break;
- }
-
- //
- // Rule 88: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 88: { action. consumeExpressionNew(true); break;
- }
-
- //
- // Rule 89: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt
- //
- case 89: { action. consumeExpressionNew(false); break;
- }
-
- //
- // Rule 91: new_placement_opt ::= $Empty
- //
- case 91: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 92: new_type_id ::= type_specifier_seq
- //
- case 92: { action. consumeTypeId(false); break;
- }
-
- //
- // Rule 93: new_type_id ::= type_specifier_seq new_declarator
- //
- case 93: { action. consumeTypeId(true); break;
- }
-
- //
- // Rule 94: new_declarator ::= <openscope-ast> new_pointer_operators
- //
- case 94: { action. consumeNewDeclarator(); break;
- }
-
- //
- // Rule 101: new_initializer ::= ( expression_list_opt )
- //
- case 101: { action. consumeNewInitializer(); break;
- }
-
- //
- // Rule 103: new_initializer_opt ::= $Empty
- //
- case 103: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 104: delete_expression ::= dcolon_opt delete cast_expression
- //
- case 104: { action. consumeExpressionDelete(false); break;
- }
-
- //
- // Rule 105: delete_expression ::= dcolon_opt delete [ ] cast_expression
- //
- case 105: { action. consumeExpressionDelete(true); break;
- }
-
- //
- // Rule 107: cast_expression ::= ( type_id ) cast_expression
- //
- case 107: { action. consumeExpressionCast(ICPPASTCastExpression.op_cast); break;
- }
-
- //
- // Rule 109: pm_expression ::= pm_expression .* cast_expression
- //
- case 109: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot); break;
- }
-
- //
- // Rule 110: pm_expression ::= pm_expression ->* cast_expression
- //
- case 110: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow); break;
- }
-
- //
- // Rule 112: multiplicative_expression ::= multiplicative_expression * pm_expression
- //
- case 112: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply); break;
- }
-
- //
- // Rule 113: multiplicative_expression ::= multiplicative_expression / pm_expression
- //
- case 113: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide); break;
- }
-
- //
- // Rule 114: multiplicative_expression ::= multiplicative_expression % pm_expression
- //
- case 114: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo); break;
- }
-
- //
- // Rule 116: additive_expression ::= additive_expression + multiplicative_expression
- //
- case 116: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus); break;
- }
-
- //
- // Rule 117: additive_expression ::= additive_expression - multiplicative_expression
- //
- case 117: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus); break;
- }
-
- //
- // Rule 119: shift_expression ::= shift_expression << additive_expression
- //
- case 119: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft); break;
- }
-
- //
- // Rule 120: shift_expression ::= shift_expression >> additive_expression
- //
- case 120: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight); break;
- }
-
- //
- // Rule 122: relational_expression ::= relational_expression < shift_expression
- //
- case 122: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan); break;
- }
-
- //
- // Rule 123: relational_expression ::= relational_expression > shift_expression
- //
- case 123: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan); break;
- }
-
- //
- // Rule 124: relational_expression ::= relational_expression <= shift_expression
- //
- case 124: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual); break;
- }
-
- //
- // Rule 125: relational_expression ::= relational_expression >= shift_expression
- //
- case 125: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual); break;
- }
-
- //
- // Rule 127: equality_expression ::= equality_expression == relational_expression
- //
- case 127: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals); break;
- }
-
- //
- // Rule 128: equality_expression ::= equality_expression != relational_expression
- //
- case 128: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals); break;
- }
-
- //
- // Rule 130: and_expression ::= and_expression & equality_expression
- //
- case 130: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd); break;
- }
-
- //
- // Rule 132: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
- //
- case 132: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor); break;
- }
-
- //
- // Rule 134: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
- //
- case 134: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr); break;
- }
-
- //
- // Rule 136: logical_and_expression ::= logical_and_expression && inclusive_or_expression
- //
- case 136: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd); break;
- }
-
- //
- // Rule 138: logical_or_expression ::= logical_or_expression || logical_and_expression
- //
- case 138: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr); break;
- }
-
- //
- // Rule 140: conditional_expression ::= logical_or_expression ? expression : assignment_expression
- //
- case 140: { action. consumeExpressionConditional(); break;
- }
-
- //
- // Rule 142: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression
- //
- case 142: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan); break;
- }
-
- //
- // Rule 143: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression )
- //
- case 143: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan); break;
- }
-
- //
- // Rule 144: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression
- //
- case 144: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual); break;
- }
-
- //
- // Rule 145: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression
- //
- case 145: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual); break;
- }
-
- //
- // Rule 147: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate
- //
- case 147: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals); break;
- }
-
- //
- // Rule 148: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate
- //
- case 148: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals); break;
- }
-
- //
- // Rule 150: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate
- //
- case 150: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd); break;
- }
-
- //
- // Rule 152: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate
- //
- case 152: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor); break;
- }
-
- //
- // Rule 154: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate
- //
- case 154: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr); break;
- }
-
- //
- // Rule 156: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate
- //
- case 156: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd); break;
- }
-
- //
- // Rule 158: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate
- //
- case 158: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr); break;
- }
-
- //
- // Rule 160: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate
- //
- case 160: { action. consumeExpressionConditional(); break;
- }
-
- //
- // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate
- //
- case 163: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); break;
- }
-
- //
- // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate
- //
- case 164: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); break;
- }
-
- //
- // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate
- //
- case 165: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); break;
- }
-
- //
- // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate
- //
- case 166: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); break;
- }
-
- //
- // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate
- //
- case 167: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); break;
- }
-
- //
- // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate
- //
- case 168: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); break;
- }
-
- //
- // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate
- //
- case 169: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); break;
- }
-
- //
- // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate
- //
- case 170: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); break;
- }
-
- //
- // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate
- //
- case 171: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); break;
- }
-
- //
- // Rule 172: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate
- //
- case 172: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); break;
- }
-
- //
- // Rule 173: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate
- //
- case 173: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); break;
- }
-
- //
- // Rule 174: throw_expression ::= throw
- //
- case 174: { action. consumeExpressionThrow(false); break;
- }
-
- //
- // Rule 175: throw_expression ::= throw assignment_expression
- //
- case 175: { action. consumeExpressionThrow(true); break;
- }
-
- //
- // Rule 178: assignment_expression ::= logical_or_expression = assignment_expression
- //
- case 178: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign); break;
- }
-
- //
- // Rule 179: assignment_expression ::= logical_or_expression *= assignment_expression
- //
- case 179: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign); break;
- }
-
- //
- // Rule 180: assignment_expression ::= logical_or_expression /= assignment_expression
- //
- case 180: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign); break;
- }
-
- //
- // Rule 181: assignment_expression ::= logical_or_expression %= assignment_expression
- //
- case 181: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign); break;
- }
-
- //
- // Rule 182: assignment_expression ::= logical_or_expression += assignment_expression
- //
- case 182: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign); break;
- }
-
- //
- // Rule 183: assignment_expression ::= logical_or_expression -= assignment_expression
- //
- case 183: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign); break;
- }
-
- //
- // Rule 184: assignment_expression ::= logical_or_expression >>= assignment_expression
- //
- case 184: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign); break;
- }
-
- //
- // Rule 185: assignment_expression ::= logical_or_expression <<= assignment_expression
- //
- case 185: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign); break;
- }
-
- //
- // Rule 186: assignment_expression ::= logical_or_expression &= assignment_expression
- //
- case 186: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign); break;
- }
-
- //
- // Rule 187: assignment_expression ::= logical_or_expression ^= assignment_expression
- //
- case 187: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign); break;
- }
-
- //
- // Rule 188: assignment_expression ::= logical_or_expression |= assignment_expression
- //
- case 188: { action. consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign); break;
- }
-
- //
- // Rule 190: expression_list ::= <openscope-ast> expression_list_actual
- //
- case 190: { action. consumeExpressionList(); break;
- }
-
- //
- // Rule 194: expression_list_opt ::= $Empty
- //
- case 194: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 196: expression_opt ::= $Empty
- //
- case 196: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 199: constant_expression_opt ::= $Empty
- //
- case 199: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 208: statement ::= ERROR_TOKEN
- //
- case 208: { action. consumeStatementProblem(); break;
- }
-
- //
- // Rule 209: labeled_statement ::= identifier : statement
- //
- case 209: { action. consumeStatementLabeled(); break;
- }
-
- //
- // Rule 210: labeled_statement ::= case constant_expression : statement
- //
- case 210: { action. consumeStatementCase(); break;
- }
-
- //
- // Rule 211: labeled_statement ::= default : statement
- //
- case 211: { action. consumeStatementDefault(); break;
- }
-
- //
- // Rule 212: expression_statement ::= expression ;
- //
- case 212: { action. consumeStatementExpression(); break;
- }
-
- //
- // Rule 213: expression_statement ::= ;
- //
- case 213: { action. consumeStatementNull(); break;
- }
-
- //
- // Rule 214: compound_statement ::= { <openscope-ast> statement_seq }
- //
- case 214: { action. consumeStatementCompoundStatement(true); break;
- }
-
- //
- // Rule 215: compound_statement ::= { }
- //
- case 215: { action. consumeStatementCompoundStatement(false); break;
- }
-
- //
- // Rule 218: selection_statement ::= if ( condition ) statement
- //
- case 218: { action. consumeStatementIf(false); break;
- }
-
- //
- // Rule 219: selection_statement ::= if ( condition ) statement else statement
- //
- case 219: { action. consumeStatementIf(true); break;
- }
-
- //
- // Rule 220: selection_statement ::= switch ( condition ) statement
- //
- case 220: { action. consumeStatementSwitch(); break;
- }
-
- //
- // Rule 222: condition ::= type_specifier_seq declarator = assignment_expression
- //
- case 222: { action. consumeConditionDeclaration(); break;
- }
-
- //
- // Rule 224: condition_opt ::= $Empty
- //
- case 224: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 225: iteration_statement ::= while ( condition ) statement
- //
- case 225: { action. consumeStatementWhileLoop(); break;
- }
-
- //
- // Rule 226: iteration_statement ::= do statement while ( expression ) ;
- //
- case 226: { action. consumeStatementDoLoop(true); break;
- }
-
- //
- // Rule 227: iteration_statement ::= do statement
- //
- case 227: { action. consumeStatementDoLoop(false); break;
- }
-
- //
- // Rule 228: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement
- //
- case 228: { action. consumeStatementForLoop(); break;
- }
-
- //
- // Rule 230: for_init_statement ::= simple_declaration_with_declspec
- //
- case 230: { action. consumeStatementDeclaration(); break;
- }
-
- //
- // Rule 231: jump_statement ::= break ;
- //
- case 231: { action. consumeStatementBreak(); break;
- }
-
- //
- // Rule 232: jump_statement ::= continue ;
- //
- case 232: { action. consumeStatementContinue(); break;
- }
-
- //
- // Rule 233: jump_statement ::= return expression ;
- //
- case 233: { action. consumeStatementReturn(true); break;
- }
-
- //
- // Rule 234: jump_statement ::= return ;
- //
- case 234: { action. consumeStatementReturn(false); break;
- }
-
- //
- // Rule 235: jump_statement ::= goto identifier_token ;
- //
- case 235: { action. consumeStatementGoto(); break;
- }
-
- //
- // Rule 236: declaration_statement ::= block_declaration
- //
- case 236: { action. consumeStatementDeclarationWithDisambiguation(); break;
- }
-
- //
- // Rule 237: declaration_statement ::= function_definition
- //
- case 237: { action. consumeStatementDeclaration(); break;
- }
-
- //
- // Rule 245: declaration ::= ERROR_TOKEN
- //
- case 245: { action. consumeDeclarationProblem(); break;
- }
-
- //
- // Rule 255: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
- //
- case 255: { action. consumeDeclarationSimple(true); break;
- }
-
- //
- // Rule 256: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;
- //
- case 256: { action. consumeDeclarationSimple(true); break;
- }
-
- //
- // Rule 257: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
- //
- case 257: { action. consumeDeclarationSpecifiersSimple(); break;
- }
-
- //
- // Rule 258: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
- //
- case 258: { action. consumeDeclarationSpecifiersComposite(); break;
- }
-
- //
- // Rule 259: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 259: { action. consumeDeclarationSpecifiersComposite(); break;
- }
-
- //
- // Rule 260: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
- //
- case 260: { action. consumeDeclarationSpecifiersComposite(); break;
- }
-
- //
- // Rule 261: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
- //
- case 261: { action. consumeDeclarationSpecifiersTypeName(); break;
- }
-
- //
- // Rule 263: declaration_specifiers_opt ::= $Empty
- //
- case 263: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 267: no_type_declaration_specifier ::= friend
- //
- case 267: { action. consumeToken(); break;
- }
-
- //
- // Rule 268: no_type_declaration_specifier ::= typedef
- //
- case 268: { action. consumeToken(); break;
- }
-
- //
- // Rule 288: storage_class_specifier ::= auto
- //
- case 288: { action. consumeToken(); break;
- }
-
- //
- // Rule 289: storage_class_specifier ::= register
- //
- case 289: { action. consumeToken(); break;
- }
-
- //
- // Rule 290: storage_class_specifier ::= static
- //
- case 290: { action. consumeToken(); break;
- }
-
- //
- // Rule 291: storage_class_specifier ::= extern
- //
- case 291: { action. consumeToken(); break;
- }
-
- //
- // Rule 292: storage_class_specifier ::= mutable
- //
- case 292: { action. consumeToken(); break;
- }
-
- //
- // Rule 293: function_specifier ::= inline
- //
- case 293: { action. consumeToken(); break;
- }
-
- //
- // Rule 294: function_specifier ::= virtual
- //
- case 294: { action. consumeToken(); break;
- }
-
- //
- // Rule 295: function_specifier ::= explicit
- //
- case 295: { action. consumeToken(); break;
- }
-
- //
- // Rule 296: simple_type_specifier ::= simple_type_specifier_token
- //
- case 296: { action. consumeToken(); break;
- }
-
- //
- // Rule 310: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 310: { action. consumeQualifiedId(false); break;
- }
-
- //
- // Rule 311: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
- //
- case 311: { action. consumeQualifiedId(false); break;
- }
-
- //
- // Rule 312: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 312: { action. consumeQualifiedId(false); break;
- }
-
- //
- // Rule 313: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 313: { action. consumeQualifiedId(true); break;
- }
-
- //
- // Rule 315: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 315: { action. consumeTypeSpecifierElaborated(false); break;
- }
-
- //
- // Rule 316: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
- //
- case 316: { action. consumeTypeSpecifierElaborated(true); break;
- }
-
- //
- // Rule 317: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
- //
- case 317: { action. consumeTypeSpecifierElaborated(false); break;
- }
-
- //
- // Rule 321: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 321: { action. consumeTypeSpecifierEnumeration(false); break;
- }
-
- //
- // Rule 322: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
- //
- case 322: { action. consumeTypeSpecifierEnumeration(true); break;
- }
-
- //
- // Rule 328: enumerator_definition ::= identifier_token
- //
- case 328: { action. consumeEnumerator(false); break;
- }
-
- //
- // Rule 329: enumerator_definition ::= identifier_token = constant_expression
- //
- case 329: { action. consumeEnumerator(true); break;
- }
-
- //
- // Rule 331: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 331: { action. consumeNamespaceDefinition(true); break;
- }
-
- //
- // Rule 332: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
- //
- case 332: { action. consumeNamespaceDefinition(false); break;
- }
-
- //
- // Rule 334: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 334: { action. consumeNamespaceAliasDefinition(); break;
- }
-
- //
- // Rule 335: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
- //
- case 335: { action. consumeUsingDeclaration(); break;
- }
-
- //
- // Rule 336: typename_opt ::= typename
- //
- case 336: { action. consumePlaceHolder(); break;
- }
-
- //
- // Rule 337: typename_opt ::= $Empty
- //
- case 337: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 338: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
- //
- case 338: { action. consumeUsingDirective(); break;
- }
-
- //
- // Rule 339: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
- //
- case 339: { action. consumeLinkageSpecification(); break;
- }
-
- //
- // Rule 340: linkage_specification ::= extern stringlit <openscope-ast> declaration
- //
- case 340: { action. consumeLinkageSpecification(); break;
- }
-
- //
- // Rule 345: init_declarator_complete ::= init_declarator
- //
- case 345: { action. consumeInitDeclaratorComplete(); break;
- }
-
- //
- // Rule 347: init_declarator ::= complete_declarator initializer
- //
- case 347: { action. consumeDeclaratorWithInitializer(true); break;
- }
-
- //
- // Rule 350: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 350: { action. consumeDeclaratorWithPointer(true); break;
- }
-
- //
- // Rule 352: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
- //
- case 352: { action. consumeDeclaratorWithPointer(true); break;
- }
-
- //
- // Rule 356: basic_direct_declarator ::= declarator_id_name
- //
- case 356: { action. consumeDirectDeclaratorIdentifier(); break;
- }
-
- //
- // Rule 357: basic_direct_declarator ::= ( declarator )
- //
- case 357: { action. consumeDirectDeclaratorBracketed(); break;
- }
-
- //
- // 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 358: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
- }
-
- //
- // Rule 359: array_direct_declarator ::= array_direct_declarator array_modifier
- //
- case 359: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
- }
-
- //
- // Rule 360: array_direct_declarator ::= basic_direct_declarator array_modifier
- //
- case 360: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
- }
-
- //
- // Rule 361: array_modifier ::= [ constant_expression ]
- //
- case 361: { action. consumeDirectDeclaratorArrayModifier(true); break;
- }
-
- //
- // Rule 362: array_modifier ::= [ ]
- //
- case 362: { action. consumeDirectDeclaratorArrayModifier(false); break;
- }
-
- //
- // Rule 363: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 363: { action. consumePointer(); break;
- }
-
- //
- // Rule 364: ptr_operator ::= pointer_hook & pointer_hook
- //
- case 364: { action. consumeReferenceOperator(); break;
- }
-
- //
- // Rule 365: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
- //
- case 365: { action. consumePointerToMember(); break;
- }
-
- //
- // Rule 372: cv_qualifier ::= const
- //
- case 372: { action. consumeToken(); break;
- }
-
- //
- // Rule 373: cv_qualifier ::= volatile
- //
- case 373: { action. consumeToken(); break;
- }
-
- //
- // Rule 375: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
- //
- case 375: { action. consumeQualifiedId(false); break;
- }
-
- //
- // Rule 376: type_id ::= type_specifier_seq
- //
- case 376: { action. consumeTypeId(false); break;
- }
-
- //
- // Rule 377: type_id ::= type_specifier_seq abstract_declarator
- //
- case 377: { action. consumeTypeId(true); break;
- }
-
- //
- // Rule 380: abstract_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 380: { action. consumeDeclaratorWithPointer(false); break;
- }
-
- //
- // Rule 381: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
- //
- case 381: { action. consumeDeclaratorWithPointer(true); break;
- }
-
- //
- // Rule 385: basic_direct_abstract_declarator ::= ( abstract_declarator )
- //
- case 385: { action. consumeDirectDeclaratorBracketed(); break;
- }
-
- //
- // Rule 386: basic_direct_abstract_declarator ::= ( )
- //
- case 386: { action. consumeAbstractDeclaratorEmpty(); break;
- }
-
- //
- // Rule 387: array_direct_abstract_declarator ::= array_modifier
- //
- case 387: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
- }
-
- //
- // Rule 388: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
- //
- case 388: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
- }
-
- //
- // Rule 389: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
- //
- case 389: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
- }
-
- //
- // 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 390: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
- }
-
- //
- // Rule 391: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
- //
- case 391: { action. consumeDirectDeclaratorFunctionDeclarator(false); break;
- }
-
- //
- // Rule 392: parameter_declaration_clause ::= parameter_declaration_list_opt ...
- //
- case 392: { action. consumePlaceHolder(); break;
- }
-
- //
- // Rule 393: parameter_declaration_clause ::= parameter_declaration_list_opt
- //
- case 393: { action. consumeEmpty(); break;
- }
-
- //
- // 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 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 472: { action. consumeToken(); break;
- }
-
- //
- // Rule 473: access_specifier_keyword ::= public
- //
- case 473: { action. consumeToken(); break;
- }
-
- //
- // Rule 475: access_specifier_keyword_opt ::= $Empty
- //
- case 475: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 477: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
- //
- case 477: { action. consumeTemplateId(); break;
- }
-
- //
- // Rule 478: conversion_function_id ::= operator conversion_type_id
- //
- case 478: { action. consumeConversionName(); break;
- }
-
- //
- // Rule 479: conversion_type_id ::= type_specifier_seq conversion_declarator
- //
- case 479: { action. consumeTypeId(true); break;
- }
-
- //
- // Rule 480: conversion_type_id ::= type_specifier_seq
- //
- case 480: { action. consumeTypeId(false); break;
- }
-
- //
- // Rule 481: conversion_declarator ::= <openscope-ast> ptr_operator_seq
- //
- case 481: { action. consumeDeclaratorWithPointer(false); break;
- }
-
- //
- // Rule 487: mem_initializer ::= mem_initializer_name ( expression_list_opt )
- //
- case 487: { action. consumeConstructorChainInitializer(); break;
- }
-
- //
- // Rule 488: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
- //
- case 488: { action. consumeQualifiedId(false); break;
- }
-
- //
- // Rule 491: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
- //
- case 491: { action. consumeTemplateId(); break;
- }
-
- //
- // Rule 492: operator_id_name ::= operator overloadable_operator
- //
- case 492: { action. consumeOperatorName(); break;
- }
-
- //
- // Rule 535: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
- //
- case 535: { action. consumeTemplateDeclaration(); break;
- }
-
- //
- // Rule 536: export_opt ::= export
- //
- case 536: { action. consumePlaceHolder(); break;
- }
-
- //
- // Rule 537: export_opt ::= $Empty
- //
- case 537: { action. consumeEmpty(); break;
- }
-
- //
- // Rule 541: template_parameter ::= parameter_declaration
- //
- case 541: { action. consumeTemplateParamterDeclaration(); break;
- }
-
- //
- // Rule 542: type_parameter ::= class identifier_name_opt
- //
- case 542: { action. consumeSimpleTypeTemplateParameter(false); break;
- }
-
- //
- // Rule 543: type_parameter ::= class identifier_name_opt = type_id
- //
- case 543: { action. consumeSimpleTypeTemplateParameter(true); break;
- }
-
- //
- // Rule 544: type_parameter ::= typename identifier_name_opt
- //
- case 544: { action. consumeSimpleTypeTemplateParameter(false); break;
- }
-
- //
- // Rule 545: type_parameter ::= typename identifier_name_opt = type_id
- //
- case 545: { action. consumeSimpleTypeTemplateParameter(true); break;
- }
-
- //
- // Rule 546: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
- //
- case 546: { action. consumeTemplatedTypeTemplateParameter(false); break;
- }
-
- //
- // Rule 547: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
- //
- case 547: { action. consumeTemplatedTypeTemplateParameter(true); break;
- }
-
- //
- // Rule 548: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
- //
- case 548: { action. consumeTemplateId(); break;
- }
-
- //
- // Rule 555: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 555: { action. consumeNestedNameSpecifier(true); break;
- }
-
- //
- // Rule 556: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate ::
- //
- case 556: { action. consumeNestedNameSpecifier(false); break;
- }
-
- //
- // Rule 557: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate
- //
- case 557: { action. consumeNestedNameSpecifier(true); break;
- }
-
- //
- // Rule 558: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate ::
- //
- case 558: { action. consumeNestedNameSpecifier(false); break;
- }
-
- //
- // Rule 559: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate
- //
- case 559: { action. consumeNameWithTemplateKeyword(); break;
- }
-
- //
- // Rule 561: nested_name_specifier_opt_inTemplate ::= $Empty
- //
- case 561: { action. consumeNestedNameSpecifierEmpty(); break;
- }
-
- //
- // Rule 564: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name
- //
- case 564: { action. consumeQualifiedId(false); break;
- }
-
- //
- // Rule 565: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
- //
- case 565: { action. consumeQualifiedId(true); break;
- }
-
- //
- // Rule 570: declaration_specifiers_inTemplate ::= <openscope-ast> simple_declaration_specifiers
- //
- case 570: { action. consumeDeclarationSpecifiersSimple(); break;
- }
-
- //
- // Rule 571: declaration_specifiers_inTemplate ::= <openscope-ast> class_declaration_specifiers
- //
- case 571: { action. consumeDeclarationSpecifiersComposite(); break;
- }
-
- //
- // Rule 572: declaration_specifiers_inTemplate ::= <openscope-ast> elaborated_declaration_specifiers
- //
- case 572: { action. consumeDeclarationSpecifiersComposite(); break;
- }
-
- //
- // Rule 573: declaration_specifiers_inTemplate ::= <openscope-ast> enum_declaration_specifiers
- //
- case 573: { action. consumeDeclarationSpecifiersComposite(); break;
- }
-
- //
- // Rule 574: declaration_specifiers_inTemplate ::= <openscope-ast> type_name_declaration_specifiers_inTemplate
- //
- case 574: { action. consumeDeclarationSpecifiersTypeName(); break;
- }
-
- //
- // Rule 576: type_id_inTemplate ::= type_specifier_seq_inTemplate
- //
- case 576: { action. consumeTypeId(false); break;
- }
-
- //
- // Rule 577: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator
- //
- case 577: { action. consumeTypeId(true); break;
- }
-
- //
- // Rule 578: template_argument ::= assignment_expression_inTemplate
- //
- case 578: { action. consumeTemplateArgumentExpression(); break;
- }
-
- //
- // Rule 579: template_argument ::= type_id_inTemplate
- //
- case 579: { action. consumeTemplateArgumentTypeId(); break;
- }
-
- //
- // Rule 580: explicit_instantiation ::= template declaration
- //
- case 580: { action. consumeTemplateExplicitInstantiation(); break;
- }
-
- //
- // Rule 581: explicit_specialization ::= template < > declaration
- //
- case 581: { action. consumeTemplateExplicitSpecialization(); break;
- }
-
- //
- // Rule 582: try_block ::= try compound_statement <openscope-ast> handler_seq
- //
- case 582: { action. consumeStatementTryBlock(true); break;
- }
-
- //
- // Rule 583: try_block ::= try compound_statement
- //
- case 583: { action. consumeStatementTryBlock(false); break;
- }
-
- //
- // Rule 586: handler ::= catch ( exception_declaration ) compound_statement
- //
- case 586: { action. consumeStatementCatchHandler(false); break;
- }
-
- //
- // Rule 587: handler ::= catch ( ... ) compound_statement
- //
- case 587: { action. consumeStatementCatchHandler(true); break;
- }
-
- //
- // Rule 588: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
- //
- case 588: { action. consumeDeclarationSimple(true); break;
- }
-
- //
- // Rule 589: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
- //
- case 589: { action. consumeDeclarationSimple(true); break;
- }
-
- //
- // Rule 590: exception_declaration ::= type_specifier_seq
- //
- case 590: { action. consumeDeclarationSimple(false); break;
- }
-
- //
- // Rule 592: exception_specification ::= throw ( )
- //
- case 592: { action. consumePlaceHolder(); break;
- }
-
- //
- // Rule 613: attribute_parameter ::= assignment_expression
- //
- case 613: { action. consumeIgnore(); break;
- }
-
- //
- // Rule 624: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ;
- //
- case 624: { gnuAction.consumeDeclarationASM(); break;
- }
-
- //
- // Rule 635: unary_expression ::= __alignof__ unary_expression
- //
- case 635: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf); break;
- }
-
- //
- // Rule 636: unary_expression ::= __alignof__ ( type_id )
- //
- case 636: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_alignof); break;
- }
-
- //
- // Rule 637: unary_expression ::= typeof unary_expression
- //
- case 637: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
- }
-
- //
- // Rule 638: unary_expression ::= typeof ( type_id )
- //
- case 638: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
- }
-
- //
- // Rule 639: relational_expression ::= relational_expression >? shift_expression
- //
- case 639: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_max); break;
- }
-
- //
- // Rule 640: relational_expression ::= relational_expression <? shift_expression
- //
- case 640: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_min); break;
- }
-
- //
- // Rule 641: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
- //
- case 641: { action. consumeExpressionConditional(); break;
- }
-
- //
- // Rule 642: primary_expression ::= ( compound_statement )
- //
- case 642: { gnuAction.consumeCompoundStatementExpression(); break;
- }
-
- //
- // Rule 643: labeled_statement ::= case case_range_expression : statement
- //
- case 643: { action. consumeStatementCase(); break;
- }
-
- //
- // Rule 644: case_range_expression ::= constant_expression ... constant_expression
- //
- case 644: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break;
- }
-
- //
- // Rule 648: typeof_type_specifier ::= typeof unary_expression
- //
- case 648: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof); break;
- }
-
- //
- // Rule 649: typeof_type_specifier ::= typeof ( type_id )
- //
- case 649: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_typeof); break;
- }
-
- //
- // Rule 650: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
- //
- case 650: { action. consumeDeclarationSpecifiersTypeof(); break;
- }
-
- //
- // Rule 663: declarator ::= <openscope-ast> ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator
- //
- case 663: { action. consumeDeclaratorWithPointer(true); break;
- }
-
- //
- // Rule 666: simple_type_specifier ::= _Complex
- //
- case 666: { action. consumeToken(); break;
- }
-
- //
- // Rule 667: simple_type_specifier ::= _Imaginary
- //
- case 667: { action. consumeToken(); break;
- }
-
- //
- // Rule 668: cv_qualifier ::= restrict
- //
- case 668: { action. consumeToken(); break;
- }
-
- //
- // Rule 669: explicit_instantiation ::= extern template declaration
- //
- case 669: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern); break;
- }
-
- //
- // Rule 670: explicit_instantiation ::= static template declaration
- //
- case 670: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static); break;
- }
-
- //
- // Rule 671: explicit_instantiation ::= inline template declaration
- //
- case 671: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline); break;
- }
-
- //
- // Rule 672: postfix_expression ::= ( type_id ) initializer_list
- //
- case 672: { action. consumeExpressionTypeIdInitializer(); break;
- }
-
-
- default:
- break;
- }
- return;
- }
-}
+ public ErrorToken getRhsErrorIToken(int i) {
+ int index = btParser.getToken(i);
+ IToken err = super.getIToken(index);
+ return (ErrorToken) (err instanceof ErrorToken ? err : null);
+ }
+
+ public GPPParser(LexStream lexStream) {
+ super(lexStream);
+
+ try {
+ super.remapTerminalSymbols(orderedTerminalSymbols(), GPPParserprs.EOFT_SYMBOL);
+ } catch (NullExportedSymbolsException e) {
+ } catch (NullTerminalSymbolsException e) {
+ } catch (UnimplementedTerminalsException e) {
+ java.util.ArrayList unimplemented_symbols = e.getSymbols();
+ System.out.println("The Lexer will not scan the following token(s):");
+ for (int i = 0; i < unimplemented_symbols.size(); i++) {
+ Integer id = (Integer) unimplemented_symbols.get(i);
+ System.out.println(" " + GPPParsersym.orderedTerminalSymbols[id.intValue()]);
+ }
+ System.out.println();
+ } catch (UndefinedEofSymbolException e) {
+ throw new Error(new UndefinedEofSymbolException("The Lexer does not implement the Eof symbol "
+ + GPPParsersym.orderedTerminalSymbols[GPPParserprs.EOFT_SYMBOL]));
+ }
+ }
+
+ @Override
+ public String[] orderedTerminalSymbols() {
+ return GPPParsersym.orderedTerminalSymbols;
+ }
+
+ public String getTokenKindName(int kind) {
+ return GPPParsersym.orderedTerminalSymbols[kind];
+ }
+
+ public int getEOFTokenKind() {
+ return GPPParserprs.EOFT_SYMBOL;
+ }
+
+ public PrsStream getParseStream() {
+ return this;
+ }
+
+ //
+ // Report error message for given error_token.
+ //
+ public final void reportErrorTokenMessage(int error_token, String msg) {
+ int firsttok = super.getFirstErrorToken(error_token), lasttok = super.getLastErrorToken(error_token);
+ String location = super.getFileName() + ':'
+ + (firsttok > lasttok ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
+ : (super.getLine(error_token) + ":" + super.getColumn(error_token) + ":"
+ + super.getEndLine(error_token) + ":" + super.getEndColumn(error_token)))
+ + ": ";
+ super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE),
+ location, msg);
+ }
+
+ public void parser() {
+ parser(null, 0);
+ }
+
+ public void parser(Monitor monitor) {
+ parser(monitor, 0);
+ }
+
+ public void parser(int error_repair_count) {
+ parser(null, error_repair_count);
+ }
+
+ public void parser(Monitor monitor, int error_repair_count) {
+ try {
+ btParser = new FixedBacktrackingParser(monitor, this, prs, this);
+ } catch (NotBacktrackParseTableException e) {
+ throw new Error(new NotBacktrackParseTableException("Regenerate GPPParserprs.java with -BACKTRACK option"));
+ } catch (BadParseSymFileException e) {
+ throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- GPPParsersym.java"));
+ }
+
+ try {
+ btParser.parse(error_repair_count);
+ } catch (BadParseException e) {
+ reset(e.error_token); // point to error token
+ DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
+ diagnoseParser.diagnose(e.error_token);
+ }
+ }
+
+ private GPPBuildASTParserAction action;
+ private IASTCompletionNode compNode;
+
+ public GPPParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider,
+ IIndex index, Map<String, String> properties) {
+ initActions(properties);
+ action.initializeTranslationUnit(scanner, builtinBindingsProvider, index);
+ CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap);
+ }
+
+ private void initActions(Map<String, String> properties) {
+ ScopedStack<Object> astStack = new ScopedStack<Object>();
+
+ action = new GPPBuildASTParserAction(this, astStack, CPPNodeFactory.getDefault(),
+ GPPSecondaryParserFactory.getDefault());
+ action.setParserProperties(properties);
+
+ gnuAction = new GNUBuildASTParserAction(this, astStack, CPPNodeFactory.getDefault());
+ gnuAction.setParserProperties(properties);
+
+ }
+
+ @Override
+ public void addToken(IToken token) {
+ token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
+ super.addToken(token);
+ }
+
+ @Override
+ public IASTTranslationUnit parse() {
+ // this has to be done, or... kaboom!
+ setStreamLength(getSize());
+
+ final int errorRepairCount = -1; // -1 means full error handling
+ parser(null, errorRepairCount); // do the actual parse
+ super.resetTokenStream(); // allow tokens to be garbage collected
+
+ compNode = action.getASTCompletionNode(); // the completion node may be null
+ return (IASTTranslationUnit) action.getParseResult();
+ }
+
+ @Override
+ public IASTCompletionNode getCompletionNode() {
+ return compNode;
+ }
+
+ // uncomment this method to use with backtracking parser
+ @Override
+ public List<IToken> getRuleTokens() {
+ return getTokens().subList(getLeftSpan(), getRightSpan() + 1);
+ }
+
+ @Override
+ public String[] getOrderedTerminalSymbols() {
+ return GPPParsersym.orderedTerminalSymbols;
+ }
+
+ @Override
+ @SuppressWarnings("nls")
+ public String getName() {
+ return "GPPParser";
+ }
+
+ private GNUBuildASTParserAction gnuAction;
+
+ @Override
+ public void ruleAction(int ruleNumber) {
+ switch (ruleNumber) {
+
+ //
+ // Rule 1: <openscope-ast> ::= $Empty
+ //
+ case 1: {
+ action.openASTScope();
+ break;
+ }
+
+ //
+ // Rule 2: <empty> ::= $Empty
+ //
+ case 2: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 13: translation_unit ::= declaration_seq_opt
+ //
+ case 13: {
+ action.consumeTranslationUnit();
+ break;
+ }
+
+ //
+ // Rule 16: literal ::= integer
+ //
+ case 16: {
+ action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_integer_constant);
+ break;
+ }
+
+ //
+ // Rule 17: literal ::= floating
+ //
+ case 17: {
+ action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_float_constant);
+ break;
+ }
+
+ //
+ // Rule 18: literal ::= charconst
+ //
+ case 18: {
+ action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_char_constant);
+ break;
+ }
+
+ //
+ // Rule 19: literal ::= stringlit
+ //
+ case 19: {
+ action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_string_literal);
+ break;
+ }
+
+ //
+ // Rule 20: literal ::= true
+ //
+ case 20: {
+ action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_true);
+ break;
+ }
+
+ //
+ // Rule 21: literal ::= false
+ //
+ case 21: {
+ action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_false);
+ break;
+ }
+
+ //
+ // Rule 22: literal ::= this
+ //
+ case 22: {
+ action.consumeExpressionLiteral(ICPPASTLiteralExpression.lk_this);
+ break;
+ }
+
+ //
+ // Rule 24: primary_expression ::= ( expression )
+ //
+ case 24: {
+ action.consumeExpressionBracketed();
+ break;
+ }
+
+ //
+ // Rule 26: id_expression ::= qualified_or_unqualified_name
+ //
+ case 26: {
+ action.consumeExpressionName();
+ break;
+ }
+
+ //
+ // Rule 33: unqualified_id_name ::= ~ identifier_token
+ //
+ case 33: {
+ action.consumeDestructorName();
+ break;
+ }
+
+ //
+ // Rule 34: unqualified_id_name ::= ~ template_id_name
+ //
+ case 34: {
+ action.consumeDestructorNameTemplateId();
+ break;
+ }
+
+ //
+ // Rule 35: identifier_name ::= identifier_token
+ //
+ case 35: {
+ action.consumeIdentifierName();
+ break;
+ }
+
+ //
+ // Rule 36: template_opt ::= template
+ //
+ case 36: {
+ action.consumePlaceHolder();
+ break;
+ }
+
+ //
+ // Rule 37: template_opt ::= $Empty
+ //
+ case 37: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 38: dcolon_opt ::= ::
+ //
+ case 38: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 39: dcolon_opt ::= $Empty
+ //
+ case 39: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 40: qualified_id_name ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name
+ //
+ case 40: {
+ action.consumeQualifiedId(true);
+ break;
+ }
+
+ //
+ // Rule 41: qualified_id_name ::= :: unqualified_id_name
+ //
+ case 41: {
+ action.consumeGlobalQualifiedId();
+ break;
+ }
+
+ //
+ // Rule 42: nested_name_specifier ::= class_or_namespace_name :: nested_name_specifier_with_template
+ //
+ case 42: {
+ action.consumeNestedNameSpecifier(true);
+ break;
+ }
+
+ //
+ // Rule 43: nested_name_specifier ::= class_or_namespace_name ::
+ //
+ case 43: {
+ action.consumeNestedNameSpecifier(false);
+ break;
+ }
+
+ //
+ // Rule 44: nested_name_specifier_with_template ::= class_or_namespace_name_with_template :: nested_name_specifier_with_template
+ //
+ case 44: {
+ action.consumeNestedNameSpecifier(true);
+ break;
+ }
+
+ //
+ // Rule 45: nested_name_specifier_with_template ::= class_or_namespace_name_with_template ::
+ //
+ case 45: {
+ action.consumeNestedNameSpecifier(false);
+ break;
+ }
+
+ //
+ // Rule 46: class_or_namespace_name_with_template ::= template_opt class_or_namespace_name
+ //
+ case 46: {
+ action.consumeNameWithTemplateKeyword();
+ break;
+ }
+
+ //
+ // Rule 48: nested_name_specifier_opt ::= $Empty
+ //
+ case 48: {
+ action.consumeNestedNameSpecifierEmpty();
+ break;
+ }
+
+ //
+ // Rule 51: postfix_expression ::= postfix_expression [ expression ]
+ //
+ case 51: {
+ action.consumeExpressionArraySubscript();
+ break;
+ }
+
+ //
+ // Rule 52: postfix_expression ::= postfix_expression ( expression_list_opt )
+ //
+ case 52: {
+ action.consumeExpressionFunctionCall();
+ break;
+ }
+
+ //
+ // Rule 53: postfix_expression ::= simple_type_specifier ( expression_list_opt )
+ //
+ case 53: {
+ action.consumeExpressionSimpleTypeConstructor();
+ break;
+ }
+
+ //
+ // Rule 54: postfix_expression ::= typename dcolon_opt nested_name_specifier <empty> identifier_name ( expression_list_opt )
+ //
+ case 54: {
+ action.consumeExpressionTypeName();
+ break;
+ }
+
+ //
+ // Rule 55: postfix_expression ::= typename dcolon_opt nested_name_specifier template_opt template_id_name ( expression_list_opt )
+ //
+ case 55: {
+ action.consumeExpressionTypeName();
+ break;
+ }
+
+ //
+ // Rule 56: postfix_expression ::= postfix_expression . qualified_or_unqualified_name
+ //
+ case 56: {
+ action.consumeExpressionFieldReference(false, false);
+ break;
+ }
+
+ //
+ // Rule 57: postfix_expression ::= postfix_expression -> qualified_or_unqualified_name
+ //
+ case 57: {
+ action.consumeExpressionFieldReference(true, false);
+ break;
+ }
+
+ //
+ // Rule 58: postfix_expression ::= postfix_expression . template qualified_or_unqualified_name
+ //
+ case 58: {
+ action.consumeExpressionFieldReference(false, true);
+ break;
+ }
+
+ //
+ // Rule 59: postfix_expression ::= postfix_expression -> template qualified_or_unqualified_name
+ //
+ case 59: {
+ action.consumeExpressionFieldReference(true, true);
+ break;
+ }
+
+ //
+ // Rule 60: postfix_expression ::= postfix_expression . pseudo_destructor_name
+ //
+ case 60: {
+ action.consumeExpressionFieldReference(false, false);
+ break;
+ }
+
+ //
+ // Rule 61: postfix_expression ::= postfix_expression -> pseudo_destructor_name
+ //
+ case 61: {
+ action.consumeExpressionFieldReference(true, false);
+ break;
+ }
+
+ //
+ // Rule 62: postfix_expression ::= postfix_expression ++
+ //
+ case 62: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr);
+ break;
+ }
+
+ //
+ // Rule 63: postfix_expression ::= postfix_expression --
+ //
+ case 63: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr);
+ break;
+ }
+
+ //
+ // Rule 64: postfix_expression ::= dynamic_cast < type_id > ( expression )
+ //
+ case 64: {
+ action.consumeExpressionCast(ICPPASTCastExpression.op_dynamic_cast);
+ break;
+ }
+
+ //
+ // Rule 65: postfix_expression ::= static_cast < type_id > ( expression )
+ //
+ case 65: {
+ action.consumeExpressionCast(ICPPASTCastExpression.op_static_cast);
+ break;
+ }
+
+ //
+ // Rule 66: postfix_expression ::= reinterpret_cast < type_id > ( expression )
+ //
+ case 66: {
+ action.consumeExpressionCast(ICPPASTCastExpression.op_reinterpret_cast);
+ break;
+ }
+
+ //
+ // Rule 67: postfix_expression ::= const_cast < type_id > ( expression )
+ //
+ case 67: {
+ action.consumeExpressionCast(ICPPASTCastExpression.op_const_cast);
+ break;
+ }
+
+ //
+ // Rule 68: postfix_expression ::= typeid ( expression )
+ //
+ case 68: {
+ action.consumeExpressionUnaryOperator(ICPPASTUnaryExpression.op_typeid);
+ break;
+ }
+
+ //
+ // Rule 69: postfix_expression ::= typeid ( type_id )
+ //
+ case 69: {
+ action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_typeid);
+ break;
+ }
+
+ //
+ // Rule 70: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt type_name :: destructor_type_name
+ //
+ case 70: {
+ action.consumePsudoDestructorName(true);
+ break;
+ }
+
+ //
+ // Rule 71: pseudo_destructor_name ::= dcolon_opt nested_name_specifier template template_id_name :: destructor_type_name
+ //
+ case 71: {
+ action.consumePsudoDestructorName(true);
+ break;
+ }
+
+ //
+ // Rule 72: pseudo_destructor_name ::= dcolon_opt nested_name_specifier_opt destructor_type_name
+ //
+ case 72: {
+ action.consumePsudoDestructorName(false);
+ break;
+ }
+
+ //
+ // Rule 73: destructor_type_name ::= ~ identifier_token
+ //
+ case 73: {
+ action.consumeDestructorName();
+ break;
+ }
+
+ //
+ // Rule 74: destructor_type_name ::= ~ template_id_name
+ //
+ case 74: {
+ action.consumeDestructorNameTemplateId();
+ break;
+ }
+
+ //
+ // Rule 78: unary_expression ::= ++ cast_expression
+ //
+ case 78: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr);
+ break;
+ }
+
+ //
+ // Rule 79: unary_expression ::= -- cast_expression
+ //
+ case 79: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr);
+ break;
+ }
+
+ //
+ // Rule 80: unary_expression ::= & cast_expression
+ //
+ case 80: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper);
+ break;
+ }
+
+ //
+ // Rule 81: unary_expression ::= * cast_expression
+ //
+ case 81: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_star);
+ break;
+ }
+
+ //
+ // Rule 82: unary_expression ::= + cast_expression
+ //
+ case 82: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus);
+ break;
+ }
+
+ //
+ // Rule 83: unary_expression ::= - cast_expression
+ //
+ case 83: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus);
+ break;
+ }
+
+ //
+ // Rule 84: unary_expression ::= ~ cast_expression
+ //
+ case 84: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde);
+ break;
+ }
+
+ //
+ // Rule 85: unary_expression ::= ! cast_expression
+ //
+ case 85: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_not);
+ break;
+ }
+
+ //
+ // Rule 86: unary_expression ::= sizeof unary_expression
+ //
+ case 86: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof);
+ break;
+ }
+
+ //
+ // Rule 87: unary_expression ::= sizeof ( type_id )
+ //
+ case 87: {
+ action.consumeExpressionTypeId(ICPPASTTypeIdExpression.op_sizeof);
+ break;
+ }
+
+ //
+ // Rule 88: new_expression ::= dcolon_opt new new_placement_opt new_type_id <openscope-ast> new_array_expressions_opt new_initializer_opt
+ //
+ case 88: {
+ action.consumeExpressionNew(true);
+ break;
+ }
+
+ //
+ // Rule 89: new_expression ::= dcolon_opt new new_placement_opt ( type_id ) <openscope-ast> new_array_expressions_opt new_initializer_opt
+ //
+ case 89: {
+ action.consumeExpressionNew(false);
+ break;
+ }
+
+ //
+ // Rule 91: new_placement_opt ::= $Empty
+ //
+ case 91: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 92: new_type_id ::= type_specifier_seq
+ //
+ case 92: {
+ action.consumeTypeId(false);
+ break;
+ }
+
+ //
+ // Rule 93: new_type_id ::= type_specifier_seq new_declarator
+ //
+ case 93: {
+ action.consumeTypeId(true);
+ break;
+ }
+
+ //
+ // Rule 94: new_declarator ::= <openscope-ast> new_pointer_operators
+ //
+ case 94: {
+ action.consumeNewDeclarator();
+ break;
+ }
+
+ //
+ // Rule 101: new_initializer ::= ( expression_list_opt )
+ //
+ case 101: {
+ action.consumeNewInitializer();
+ break;
+ }
+
+ //
+ // Rule 103: new_initializer_opt ::= $Empty
+ //
+ case 103: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 104: delete_expression ::= dcolon_opt delete cast_expression
+ //
+ case 104: {
+ action.consumeExpressionDelete(false);
+ break;
+ }
+
+ //
+ // Rule 105: delete_expression ::= dcolon_opt delete [ ] cast_expression
+ //
+ case 105: {
+ action.consumeExpressionDelete(true);
+ break;
+ }
+
+ //
+ // Rule 107: cast_expression ::= ( type_id ) cast_expression
+ //
+ case 107: {
+ action.consumeExpressionCast(ICPPASTCastExpression.op_cast);
+ break;
+ }
+
+ //
+ // Rule 109: pm_expression ::= pm_expression .* cast_expression
+ //
+ case 109: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmdot);
+ break;
+ }
+
+ //
+ // Rule 110: pm_expression ::= pm_expression ->* cast_expression
+ //
+ case 110: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_pmarrow);
+ break;
+ }
+
+ //
+ // Rule 112: multiplicative_expression ::= multiplicative_expression * pm_expression
+ //
+ case 112: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiply);
+ break;
+ }
+
+ //
+ // Rule 113: multiplicative_expression ::= multiplicative_expression / pm_expression
+ //
+ case 113: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divide);
+ break;
+ }
+
+ //
+ // Rule 114: multiplicative_expression ::= multiplicative_expression % pm_expression
+ //
+ case 114: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_modulo);
+ break;
+ }
+
+ //
+ // Rule 116: additive_expression ::= additive_expression + multiplicative_expression
+ //
+ case 116: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plus);
+ break;
+ }
+
+ //
+ // Rule 117: additive_expression ::= additive_expression - multiplicative_expression
+ //
+ case 117: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minus);
+ break;
+ }
+
+ //
+ // Rule 119: shift_expression ::= shift_expression << additive_expression
+ //
+ case 119: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeft);
+ break;
+ }
+
+ //
+ // Rule 120: shift_expression ::= shift_expression >> additive_expression
+ //
+ case 120: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRight);
+ break;
+ }
+
+ //
+ // Rule 122: relational_expression ::= relational_expression < shift_expression
+ //
+ case 122: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
+ break;
+ }
+
+ //
+ // Rule 123: relational_expression ::= relational_expression > shift_expression
+ //
+ case 123: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
+ break;
+ }
+
+ //
+ // Rule 124: relational_expression ::= relational_expression <= shift_expression
+ //
+ case 124: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
+ break;
+ }
+
+ //
+ // Rule 125: relational_expression ::= relational_expression >= shift_expression
+ //
+ case 125: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
+ break;
+ }
+
+ //
+ // Rule 127: equality_expression ::= equality_expression == relational_expression
+ //
+ case 127: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
+ break;
+ }
+
+ //
+ // Rule 128: equality_expression ::= equality_expression != relational_expression
+ //
+ case 128: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
+ break;
+ }
+
+ //
+ // Rule 130: and_expression ::= and_expression & equality_expression
+ //
+ case 130: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
+ break;
+ }
+
+ //
+ // Rule 132: exclusive_or_expression ::= exclusive_or_expression ^ and_expression
+ //
+ case 132: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
+ break;
+ }
+
+ //
+ // Rule 134: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression
+ //
+ case 134: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
+ break;
+ }
+
+ //
+ // Rule 136: logical_and_expression ::= logical_and_expression && inclusive_or_expression
+ //
+ case 136: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
+ break;
+ }
+
+ //
+ // Rule 138: logical_or_expression ::= logical_or_expression || logical_and_expression
+ //
+ case 138: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
+ break;
+ }
+
+ //
+ // Rule 140: conditional_expression ::= logical_or_expression ? expression : assignment_expression
+ //
+ case 140: {
+ action.consumeExpressionConditional();
+ break;
+ }
+
+ //
+ // Rule 142: relational_expression_inTemplate ::= relational_expression_inTemplate < shift_expression
+ //
+ case 142: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessThan);
+ break;
+ }
+
+ //
+ // Rule 143: relational_expression_inTemplate ::= ( relational_expression_inTemplate > shift_expression )
+ //
+ case 143: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterThan);
+ break;
+ }
+
+ //
+ // Rule 144: relational_expression_inTemplate ::= relational_expression_inTemplate <= shift_expression
+ //
+ case 144: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_lessEqual);
+ break;
+ }
+
+ //
+ // Rule 145: relational_expression_inTemplate ::= relational_expression_inTemplate >= shift_expression
+ //
+ case 145: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_greaterEqual);
+ break;
+ }
+
+ //
+ // Rule 147: equality_expression_inTemplate ::= equality_expression_inTemplate == relational_expression_inTemplate
+ //
+ case 147: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_equals);
+ break;
+ }
+
+ //
+ // Rule 148: equality_expression_inTemplate ::= equality_expression_inTemplate != relational_expression_inTemplate
+ //
+ case 148: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_notequals);
+ break;
+ }
+
+ //
+ // Rule 150: and_expression_inTemplate ::= and_expression_inTemplate & equality_expression_inTemplate
+ //
+ case 150: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAnd);
+ break;
+ }
+
+ //
+ // Rule 152: exclusive_or_expression_inTemplate ::= exclusive_or_expression_inTemplate ^ and_expression_inTemplate
+ //
+ case 152: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXor);
+ break;
+ }
+
+ //
+ // Rule 154: inclusive_or_expression_inTemplate ::= inclusive_or_expression_inTemplate | exclusive_or_expression_inTemplate
+ //
+ case 154: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOr);
+ break;
+ }
+
+ //
+ // Rule 156: logical_and_expression_inTemplate ::= logical_and_expression_inTemplate && inclusive_or_expression_inTemplate
+ //
+ case 156: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalAnd);
+ break;
+ }
+
+ //
+ // Rule 158: logical_or_expression_inTemplate ::= logical_or_expression_inTemplate || logical_and_expression_inTemplate
+ //
+ case 158: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_logicalOr);
+ break;
+ }
+
+ //
+ // Rule 160: conditional_expression_inTemplate ::= logical_or_expression_inTemplate ? expression : assignment_expression_inTemplate
+ //
+ case 160: {
+ action.consumeExpressionConditional();
+ break;
+ }
+
+ //
+ // Rule 163: assignment_expression_inTemplate ::= logical_or_expression_inTemplate = assignment_expression_inTemplate
+ //
+ case 163: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
+ break;
+ }
+
+ //
+ // Rule 164: assignment_expression_inTemplate ::= logical_or_expression_inTemplate *= assignment_expression_inTemplate
+ //
+ case 164: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
+ break;
+ }
+
+ //
+ // Rule 165: assignment_expression_inTemplate ::= logical_or_expression_inTemplate /= assignment_expression_inTemplate
+ //
+ case 165: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
+ break;
+ }
+
+ //
+ // Rule 166: assignment_expression_inTemplate ::= logical_or_expression_inTemplate %= assignment_expression_inTemplate
+ //
+ case 166: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
+ break;
+ }
+
+ //
+ // Rule 167: assignment_expression_inTemplate ::= logical_or_expression_inTemplate += assignment_expression_inTemplate
+ //
+ case 167: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
+ break;
+ }
+
+ //
+ // Rule 168: assignment_expression_inTemplate ::= logical_or_expression_inTemplate -= assignment_expression_inTemplate
+ //
+ case 168: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
+ break;
+ }
+
+ //
+ // Rule 169: assignment_expression_inTemplate ::= logical_or_expression_inTemplate >>= assignment_expression_inTemplate
+ //
+ case 169: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
+ break;
+ }
+
+ //
+ // Rule 170: assignment_expression_inTemplate ::= logical_or_expression_inTemplate <<= assignment_expression_inTemplate
+ //
+ case 170: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
+ break;
+ }
+
+ //
+ // Rule 171: assignment_expression_inTemplate ::= logical_or_expression_inTemplate &= assignment_expression_inTemplate
+ //
+ case 171: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
+ break;
+ }
+
+ //
+ // Rule 172: assignment_expression_inTemplate ::= logical_or_expression_inTemplate ^= assignment_expression_inTemplate
+ //
+ case 172: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
+ break;
+ }
+
+ //
+ // Rule 173: assignment_expression_inTemplate ::= logical_or_expression_inTemplate |= assignment_expression_inTemplate
+ //
+ case 173: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
+ break;
+ }
+
+ //
+ // Rule 174: throw_expression ::= throw
+ //
+ case 174: {
+ action.consumeExpressionThrow(false);
+ break;
+ }
+
+ //
+ // Rule 175: throw_expression ::= throw assignment_expression
+ //
+ case 175: {
+ action.consumeExpressionThrow(true);
+ break;
+ }
+
+ //
+ // Rule 178: assignment_expression ::= logical_or_expression = assignment_expression
+ //
+ case 178: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_assign);
+ break;
+ }
+
+ //
+ // Rule 179: assignment_expression ::= logical_or_expression *= assignment_expression
+ //
+ case 179: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_multiplyAssign);
+ break;
+ }
+
+ //
+ // Rule 180: assignment_expression ::= logical_or_expression /= assignment_expression
+ //
+ case 180: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_divideAssign);
+ break;
+ }
+
+ //
+ // Rule 181: assignment_expression ::= logical_or_expression %= assignment_expression
+ //
+ case 181: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_moduloAssign);
+ break;
+ }
+
+ //
+ // Rule 182: assignment_expression ::= logical_or_expression += assignment_expression
+ //
+ case 182: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_plusAssign);
+ break;
+ }
+
+ //
+ // Rule 183: assignment_expression ::= logical_or_expression -= assignment_expression
+ //
+ case 183: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_minusAssign);
+ break;
+ }
+
+ //
+ // Rule 184: assignment_expression ::= logical_or_expression >>= assignment_expression
+ //
+ case 184: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftRightAssign);
+ break;
+ }
+
+ //
+ // Rule 185: assignment_expression ::= logical_or_expression <<= assignment_expression
+ //
+ case 185: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_shiftLeftAssign);
+ break;
+ }
+
+ //
+ // Rule 186: assignment_expression ::= logical_or_expression &= assignment_expression
+ //
+ case 186: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryAndAssign);
+ break;
+ }
+
+ //
+ // Rule 187: assignment_expression ::= logical_or_expression ^= assignment_expression
+ //
+ case 187: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryXorAssign);
+ break;
+ }
+
+ //
+ // Rule 188: assignment_expression ::= logical_or_expression |= assignment_expression
+ //
+ case 188: {
+ action.consumeExpressionBinaryOperator(ICPPASTBinaryExpression.op_binaryOrAssign);
+ break;
+ }
+
+ //
+ // Rule 190: expression_list ::= <openscope-ast> expression_list_actual
+ //
+ case 190: {
+ action.consumeExpressionList();
+ break;
+ }
+
+ //
+ // Rule 194: expression_list_opt ::= $Empty
+ //
+ case 194: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 196: expression_opt ::= $Empty
+ //
+ case 196: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 199: constant_expression_opt ::= $Empty
+ //
+ case 199: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 208: statement ::= ERROR_TOKEN
+ //
+ case 208: {
+ action.consumeStatementProblem();
+ break;
+ }
+
+ //
+ // Rule 209: labeled_statement ::= identifier : statement
+ //
+ case 209: {
+ action.consumeStatementLabeled();
+ break;
+ }
+
+ //
+ // Rule 210: labeled_statement ::= case constant_expression : statement
+ //
+ case 210: {
+ action.consumeStatementCase();
+ break;
+ }
+
+ //
+ // Rule 211: labeled_statement ::= default : statement
+ //
+ case 211: {
+ action.consumeStatementDefault();
+ break;
+ }
+
+ //
+ // Rule 212: expression_statement ::= expression ;
+ //
+ case 212: {
+ action.consumeStatementExpression();
+ break;
+ }
+
+ //
+ // Rule 213: expression_statement ::= ;
+ //
+ case 213: {
+ action.consumeStatementNull();
+ break;
+ }
+
+ //
+ // Rule 214: compound_statement ::= { <openscope-ast> statement_seq }
+ //
+ case 214: {
+ action.consumeStatementCompoundStatement(true);
+ break;
+ }
+
+ //
+ // Rule 215: compound_statement ::= { }
+ //
+ case 215: {
+ action.consumeStatementCompoundStatement(false);
+ break;
+ }
+
+ //
+ // Rule 218: selection_statement ::= if ( condition ) statement
+ //
+ case 218: {
+ action.consumeStatementIf(false);
+ break;
+ }
+
+ //
+ // Rule 219: selection_statement ::= if ( condition ) statement else statement
+ //
+ case 219: {
+ action.consumeStatementIf(true);
+ break;
+ }
+
+ //
+ // Rule 220: selection_statement ::= switch ( condition ) statement
+ //
+ case 220: {
+ action.consumeStatementSwitch();
+ break;
+ }
+
+ //
+ // Rule 222: condition ::= type_specifier_seq declarator = assignment_expression
+ //
+ case 222: {
+ action.consumeConditionDeclaration();
+ break;
+ }
+
+ //
+ // Rule 224: condition_opt ::= $Empty
+ //
+ case 224: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 225: iteration_statement ::= while ( condition ) statement
+ //
+ case 225: {
+ action.consumeStatementWhileLoop();
+ break;
+ }
+
+ //
+ // Rule 226: iteration_statement ::= do statement while ( expression ) ;
+ //
+ case 226: {
+ action.consumeStatementDoLoop(true);
+ break;
+ }
+
+ //
+ // Rule 227: iteration_statement ::= do statement
+ //
+ case 227: {
+ action.consumeStatementDoLoop(false);
+ break;
+ }
+
+ //
+ // Rule 228: iteration_statement ::= for ( for_init_statement condition_opt ; expression_opt ) statement
+ //
+ case 228: {
+ action.consumeStatementForLoop();
+ break;
+ }
+
+ //
+ // Rule 230: for_init_statement ::= simple_declaration_with_declspec
+ //
+ case 230: {
+ action.consumeStatementDeclaration();
+ break;
+ }
+
+ //
+ // Rule 231: jump_statement ::= break ;
+ //
+ case 231: {
+ action.consumeStatementBreak();
+ break;
+ }
+ //
+ // Rule 232: jump_statement ::= continue ;
+ //
+ case 232: {
+ action.consumeStatementContinue();
+ break;
+ }
+
+ //
+ // Rule 233: jump_statement ::= return expression ;
+ //
+ case 233: {
+ action.consumeStatementReturn(true);
+ break;
+ }
+
+ //
+ // Rule 234: jump_statement ::= return ;
+ //
+ case 234: {
+ action.consumeStatementReturn(false);
+ break;
+ }
+
+ //
+ // Rule 235: jump_statement ::= goto identifier_token ;
+ //
+ case 235: {
+ action.consumeStatementGoto();
+ break;
+ }
+
+ //
+ // Rule 236: declaration_statement ::= block_declaration
+ //
+ case 236: {
+ action.consumeStatementDeclarationWithDisambiguation();
+ break;
+ }
+
+ //
+ // Rule 237: declaration_statement ::= function_definition
+ //
+ case 237: {
+ action.consumeStatementDeclaration();
+ break;
+ }
+
+ //
+ // Rule 245: declaration ::= ERROR_TOKEN
+ //
+ case 245: {
+ action.consumeDeclarationProblem();
+ break;
+ }
+
+ //
+ // Rule 255: simple_declaration ::= declaration_specifiers_opt <openscope-ast> init_declarator_list_opt ;
+ //
+ case 255: {
+ action.consumeDeclarationSimple(true);
+ break;
+ }
+
+ //
+ // Rule 256: simple_declaration_with_declspec ::= declaration_specifiers <openscope-ast> init_declarator_list_opt ;
+ //
+ case 256: {
+ action.consumeDeclarationSimple(true);
+ break;
+ }
+
+ //
+ // Rule 257: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
+ //
+ case 257: {
+ action.consumeDeclarationSpecifiersSimple();
+ break;
+ }
+
+ //
+ // Rule 258: declaration_specifiers ::= <openscope-ast> class_declaration_specifiers
+ //
+ case 258: {
+ action.consumeDeclarationSpecifiersComposite();
+ break;
+ }
+
+ //
+ // Rule 259: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
+ //
+ case 259: {
+ action.consumeDeclarationSpecifiersComposite();
+ break;
+ }
+
+ //
+ // Rule 260: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
+ //
+ case 260: {
+ action.consumeDeclarationSpecifiersComposite();
+ break;
+ }
+
+ //
+ // Rule 261: declaration_specifiers ::= <openscope-ast> type_name_declaration_specifiers
+ //
+ case 261: {
+ action.consumeDeclarationSpecifiersTypeName();
+ break;
+ }
+
+ //
+ // Rule 263: declaration_specifiers_opt ::= $Empty
+ //
+ case 263: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 267: no_type_declaration_specifier ::= friend
+ //
+ case 267: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 268: no_type_declaration_specifier ::= typedef
+ //
+ case 268: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 288: storage_class_specifier ::= auto
+ //
+ case 288: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 289: storage_class_specifier ::= register
+ //
+ case 289: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 290: storage_class_specifier ::= static
+ //
+ case 290: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 291: storage_class_specifier ::= extern
+ //
+ case 291: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 292: storage_class_specifier ::= mutable
+ //
+ case 292: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 293: function_specifier ::= inline
+ //
+ case 293: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 294: function_specifier ::= virtual
+ //
+ case 294: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 295: function_specifier ::= explicit
+ //
+ case 295: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 296: simple_type_specifier ::= simple_type_specifier_token
+ //
+ case 296: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 310: type_name_specifier ::= dcolon_opt nested_name_specifier_opt type_name
+ //
+ case 310: {
+ action.consumeQualifiedId(false);
+ break;
+ }
+
+ //
+ // Rule 311: type_name_specifier ::= dcolon_opt nested_name_specifier template template_id_name
+ //
+ case 311: {
+ action.consumeQualifiedId(false);
+ break;
+ }
+
+ //
+ // Rule 312: type_name_specifier ::= typename dcolon_opt nested_name_specifier identifier_name
+ //
+ case 312: {
+ action.consumeQualifiedId(false);
+ break;
+ }
+
+ //
+ // Rule 313: type_name_specifier ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
+ //
+ case 313: {
+ action.consumeQualifiedId(true);
+ break;
+ }
+
+ //
+ // Rule 315: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
+ //
+ case 315: {
+ action.consumeTypeSpecifierElaborated(false);
+ break;
+ }
+
+ //
+ // Rule 316: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
+ //
+ case 316: {
+ action.consumeTypeSpecifierElaborated(true);
+ break;
+ }
+
+ //
+ // Rule 317: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
+ //
+ case 317: {
+ action.consumeTypeSpecifierElaborated(false);
+ break;
+ }
+
+ //
+ // Rule 321: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
+ //
+ case 321: {
+ action.consumeTypeSpecifierEnumeration(false);
+ break;
+ }
+
+ //
+ // Rule 322: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
+ //
+ case 322: {
+ action.consumeTypeSpecifierEnumeration(true);
+ break;
+ }
+
+ //
+ // Rule 328: enumerator_definition ::= identifier_token
+ //
+ case 328: {
+ action.consumeEnumerator(false);
+ break;
+ }
+
+ //
+ // Rule 329: enumerator_definition ::= identifier_token = constant_expression
+ //
+ case 329: {
+ action.consumeEnumerator(true);
+ break;
+ }
+
+ //
+ // Rule 331: namespace_definition ::= namespace namespace_name namespace_definition_hook { <openscope-ast> declaration_seq_opt }
+ //
+ case 331: {
+ action.consumeNamespaceDefinition(true);
+ break;
+ }
+
+ //
+ // Rule 332: namespace_definition ::= namespace namespace_definition_hook { <openscope-ast> declaration_seq_opt }
+ //
+ case 332: {
+ action.consumeNamespaceDefinition(false);
+ break;
+ }
+
+ //
+ // Rule 334: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
+ //
+ case 334: {
+ action.consumeNamespaceAliasDefinition();
+ break;
+ }
+
+ //
+ // Rule 335: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
+ //
+ case 335: {
+ action.consumeUsingDeclaration();
+ break;
+ }
+
+ //
+ // Rule 336: typename_opt ::= typename
+ //
+ case 336: {
+ action.consumePlaceHolder();
+ break;
+ }
+
+ //
+ // Rule 337: typename_opt ::= $Empty
+ //
+ case 337: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 338: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
+ //
+ case 338: {
+ action.consumeUsingDirective();
+ break;
+ }
+
+ //
+ // Rule 339: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
+ //
+ case 339: {
+ action.consumeLinkageSpecification();
+ break;
+ }
+
+ //
+ // Rule 340: linkage_specification ::= extern stringlit <openscope-ast> declaration
+ //
+ case 340: {
+ action.consumeLinkageSpecification();
+ break;
+ }
+
+ //
+ // Rule 345: init_declarator_complete ::= init_declarator
+ //
+ case 345: {
+ action.consumeInitDeclaratorComplete();
+ break;
+ }
+
+ //
+ // Rule 347: init_declarator ::= complete_declarator initializer
+ //
+ case 347: {
+ action.consumeDeclaratorWithInitializer(true);
+ break;
+ }
+
+ //
+ // Rule 350: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
+ //
+ case 350: {
+ action.consumeDeclaratorWithPointer(true);
+ break;
+ }
+
+ //
+ // Rule 352: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
+ //
+ case 352: {
+ action.consumeDeclaratorWithPointer(true);
+ break;
+ }
+
+ //
+ // Rule 356: basic_direct_declarator ::= declarator_id_name
+ //
+ case 356: {
+ action.consumeDirectDeclaratorIdentifier();
+ break;
+ }
+
+ //
+ // Rule 357: basic_direct_declarator ::= ( declarator )
+ //
+ case 357: {
+ action.consumeDirectDeclaratorBracketed();
+ break;
+ }
+
+ //
+ // 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 358: {
+ action.consumeDirectDeclaratorFunctionDeclarator(true);
+ break;
+ }
+
+ //
+ // Rule 359: array_direct_declarator ::= array_direct_declarator array_modifier
+ //
+ case 359: {
+ action.consumeDirectDeclaratorArrayDeclarator(true);
+ break;
+ }
+
+ //
+ // Rule 360: array_direct_declarator ::= basic_direct_declarator array_modifier
+ //
+ case 360: {
+ action.consumeDirectDeclaratorArrayDeclarator(true);
+ break;
+ }
+
+ //
+ // Rule 361: array_modifier ::= [ constant_expression ]
+ //
+ case 361: {
+ action.consumeDirectDeclaratorArrayModifier(true);
+ break;
+ }
+
+ //
+ // Rule 362: array_modifier ::= [ ]
+ //
+ case 362: {
+ action.consumeDirectDeclaratorArrayModifier(false);
+ break;
+ }
+
+ //
+ // Rule 363: ptr_operator ::= pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
+ //
+ case 363: {
+ action.consumePointer();
+ break;
+ }
+
+ //
+ // Rule 364: ptr_operator ::= pointer_hook & pointer_hook
+ //
+ case 364: {
+ action.consumeReferenceOperator();
+ break;
+ }
+
+ //
+ // Rule 365: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * pointer_hook <openscope-ast> cv_qualifier_seq_opt
+ //
+ case 365: {
+ action.consumePointerToMember();
+ break;
+ }
+
+ //
+ // Rule 372: cv_qualifier ::= const
+ //
+ case 372: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 373: cv_qualifier ::= volatile
+ //
+ case 373: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 375: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
+ //
+ case 375: {
+ action.consumeQualifiedId(false);
+ break;
+ }
+
+ //
+ // Rule 376: type_id ::= type_specifier_seq
+ //
+ case 376: {
+ action.consumeTypeId(false);
+ break;
+ }
+
+ //
+ // Rule 377: type_id ::= type_specifier_seq abstract_declarator
+ //
+ case 377: {
+ action.consumeTypeId(true);
+ break;
+ }
+
+ //
+ // Rule 380: abstract_declarator ::= <openscope-ast> ptr_operator_seq
+ //
+ case 380: {
+ action.consumeDeclaratorWithPointer(false);
+ break;
+ }
+
+ //
+ // Rule 381: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
+ //
+ case 381: {
+ action.consumeDeclaratorWithPointer(true);
+ break;
+ }
+
+ //
+ // Rule 385: basic_direct_abstract_declarator ::= ( abstract_declarator )
+ //
+ case 385: {
+ action.consumeDirectDeclaratorBracketed();
+ break;
+ }
+
+ //
+ // Rule 386: basic_direct_abstract_declarator ::= ( )
+ //
+ case 386: {
+ action.consumeAbstractDeclaratorEmpty();
+ break;
+ }
+
+ //
+ // Rule 387: array_direct_abstract_declarator ::= array_modifier
+ //
+ case 387: {
+ action.consumeDirectDeclaratorArrayDeclarator(false);
+ break;
+ }
+
+ //
+ // Rule 388: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
+ //
+ case 388: {
+ action.consumeDirectDeclaratorArrayDeclarator(true);
+ break;
+ }
+
+ //
+ // Rule 389: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
+ //
+ case 389: {
+ action.consumeDirectDeclaratorArrayDeclarator(true);
+ break;
+ }
+
+ //
+ // 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 390: {
+ action.consumeDirectDeclaratorFunctionDeclarator(true);
+ break;
+ }
+
+ //
+ // Rule 391: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
+ //
+ case 391: {
+ action.consumeDirectDeclaratorFunctionDeclarator(false);
+ break;
+ }
+
+ //
+ // Rule 392: parameter_declaration_clause ::= parameter_declaration_list_opt ...
+ //
+ case 392: {
+ action.consumePlaceHolder();
+ break;
+ }
+
+ //
+ // Rule 393: parameter_declaration_clause ::= parameter_declaration_list_opt
+ //
+ case 393: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // 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 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 472: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 473: access_specifier_keyword ::= public
+ //
+ case 473: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 475: access_specifier_keyword_opt ::= $Empty
+ //
+ case 475: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 477: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
+ //
+ case 477: {
+ action.consumeTemplateId();
+ break;
+ }
+
+ //
+ // Rule 478: conversion_function_id ::= operator conversion_type_id
+ //
+ case 478: {
+ action.consumeConversionName();
+ break;
+ }
+
+ //
+ // Rule 479: conversion_type_id ::= type_specifier_seq conversion_declarator
+ //
+ case 479: {
+ action.consumeTypeId(true);
+ break;
+ }
+
+ //
+ // Rule 480: conversion_type_id ::= type_specifier_seq
+ //
+ case 480: {
+ action.consumeTypeId(false);
+ break;
+ }
+
+ //
+ // Rule 481: conversion_declarator ::= <openscope-ast> ptr_operator_seq
+ //
+ case 481: {
+ action.consumeDeclaratorWithPointer(false);
+ break;
+ }
+
+ //
+ // Rule 487: mem_initializer ::= mem_initializer_name ( expression_list_opt )
+ //
+ case 487: {
+ action.consumeConstructorChainInitializer();
+ break;
+ }
+
+ //
+ // Rule 488: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
+ //
+ case 488: {
+ action.consumeQualifiedId(false);
+ break;
+ }
+
+ //
+ // Rule 491: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
+ //
+ case 491: {
+ action.consumeTemplateId();
+ break;
+ }
+
+ //
+ // Rule 492: operator_id_name ::= operator overloadable_operator
+ //
+ case 492: {
+ action.consumeOperatorName();
+ break;
+ }
+
+ //
+ // Rule 535: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
+ //
+ case 535: {
+ action.consumeTemplateDeclaration();
+ break;
+ }
+
+ //
+ // Rule 536: export_opt ::= export
+ //
+ case 536: {
+ action.consumePlaceHolder();
+ break;
+ }
+
+ //
+ // Rule 537: export_opt ::= $Empty
+ //
+ case 537: {
+ action.consumeEmpty();
+ break;
+ }
+
+ //
+ // Rule 541: template_parameter ::= parameter_declaration
+ //
+ case 541: {
+ action.consumeTemplateParamterDeclaration();
+ break;
+ }
+
+ //
+ // Rule 542: type_parameter ::= class identifier_name_opt
+ //
+ case 542: {
+ action.consumeSimpleTypeTemplateParameter(false);
+ break;
+ }
+
+ //
+ // Rule 543: type_parameter ::= class identifier_name_opt = type_id
+ //
+ case 543: {
+ action.consumeSimpleTypeTemplateParameter(true);
+ break;
+ }
+
+ //
+ // Rule 544: type_parameter ::= typename identifier_name_opt
+ //
+ case 544: {
+ action.consumeSimpleTypeTemplateParameter(false);
+ break;
+ }
+
+ //
+ // Rule 545: type_parameter ::= typename identifier_name_opt = type_id
+ //
+ case 545: {
+ action.consumeSimpleTypeTemplateParameter(true);
+ break;
+ }
+
+ //
+ // Rule 546: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
+ //
+ case 546: {
+ action.consumeTemplatedTypeTemplateParameter(false);
+ break;
+ }
+
+ //
+ // Rule 547: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
+ //
+ case 547: {
+ action.consumeTemplatedTypeTemplateParameter(true);
+ break;
+ }
+
+ //
+ // Rule 548: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
+ //
+ case 548: {
+ action.consumeTemplateId();
+ break;
+ }
+
+ //
+ // Rule 555: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate :: nested_name_specifier_with_template_inTemplate
+ //
+ case 555: {
+ action.consumeNestedNameSpecifier(true);
+ break;
+ }
+
+ //
+ // Rule 556: nested_name_specifier_inTemplate ::= class_or_namespace_name_inTemplate ::
+ //
+ case 556: {
+ action.consumeNestedNameSpecifier(false);
+ break;
+ }
+
+ //
+ // Rule 557: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate :: nested_name_specifier_with_template_inTemplate
+ //
+ case 557: {
+ action.consumeNestedNameSpecifier(true);
+ break;
+ }
+
+ //
+ // Rule 558: nested_name_specifier_with_template_inTemplate ::= class_or_namespace_name_with_template_inTemplate ::
+ //
+ case 558: {
+ action.consumeNestedNameSpecifier(false);
+ break;
+ }
+
+ //
+ // Rule 559: class_or_namespace_name_with_template_inTemplate ::= template_opt class_or_namespace_name_inTemplate
+ //
+ case 559: {
+ action.consumeNameWithTemplateKeyword();
+ break;
+ }
+
+ //
+ // Rule 561: nested_name_specifier_opt_inTemplate ::= $Empty
+ //
+ case 561: {
+ action.consumeNestedNameSpecifierEmpty();
+ break;
+ }
+
+ //
+ // Rule 564: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier identifier_name
+ //
+ case 564: {
+ action.consumeQualifiedId(false);
+ break;
+ }
+
+ //
+ // Rule 565: type_name_specifier_inTemplate ::= typename dcolon_opt nested_name_specifier template_opt template_id_name
+ //
+ case 565: {
+ action.consumeQualifiedId(true);
+ break;
+ }
+
+ //
+ // Rule 570: declaration_specifiers_inTemplate ::= <openscope-ast> simple_declaration_specifiers
+ //
+ case 570: {
+ action.consumeDeclarationSpecifiersSimple();
+ break;
+ }
+
+ //
+ // Rule 571: declaration_specifiers_inTemplate ::= <openscope-ast> class_declaration_specifiers
+ //
+ case 571: {
+ action.consumeDeclarationSpecifiersComposite();
+ break;
+ }
+
+ //
+ // Rule 572: declaration_specifiers_inTemplate ::= <openscope-ast> elaborated_declaration_specifiers
+ //
+ case 572: {
+ action.consumeDeclarationSpecifiersComposite();
+ break;
+ }
+
+ //
+ // Rule 573: declaration_specifiers_inTemplate ::= <openscope-ast> enum_declaration_specifiers
+ //
+ case 573: {
+ action.consumeDeclarationSpecifiersComposite();
+ break;
+ }
+
+ //
+ // Rule 574: declaration_specifiers_inTemplate ::= <openscope-ast> type_name_declaration_specifiers_inTemplate
+ //
+ case 574: {
+ action.consumeDeclarationSpecifiersTypeName();
+ break;
+ }
+
+ //
+ // Rule 576: type_id_inTemplate ::= type_specifier_seq_inTemplate
+ //
+ case 576: {
+ action.consumeTypeId(false);
+ break;
+ }
+
+ //
+ // Rule 577: type_id_inTemplate ::= type_specifier_seq_inTemplate abstract_declarator
+ //
+ case 577: {
+ action.consumeTypeId(true);
+ break;
+ }
+
+ //
+ // Rule 578: template_argument ::= assignment_expression_inTemplate
+ //
+ case 578: {
+ action.consumeTemplateArgumentExpression();
+ break;
+ }
+
+ //
+ // Rule 579: template_argument ::= type_id_inTemplate
+ //
+ case 579: {
+ action.consumeTemplateArgumentTypeId();
+ break;
+ }
+
+ //
+ // Rule 580: explicit_instantiation ::= template declaration
+ //
+ case 580: {
+ action.consumeTemplateExplicitInstantiation();
+ break;
+ }
+
+ //
+ // Rule 581: explicit_specialization ::= template < > declaration
+ //
+ case 581: {
+ action.consumeTemplateExplicitSpecialization();
+ break;
+ }
+
+ //
+ // Rule 582: try_block ::= try compound_statement <openscope-ast> handler_seq
+ //
+ case 582: {
+ action.consumeStatementTryBlock(true);
+ break;
+ }
+
+ //
+ // Rule 583: try_block ::= try compound_statement
+ //
+ case 583: {
+ action.consumeStatementTryBlock(false);
+ break;
+ }
+
+ //
+ // Rule 586: handler ::= catch ( exception_declaration ) compound_statement
+ //
+ case 586: {
+ action.consumeStatementCatchHandler(false);
+ break;
+ }
+
+ //
+ // Rule 587: handler ::= catch ( ... ) compound_statement
+ //
+ case 587: {
+ action.consumeStatementCatchHandler(true);
+ break;
+ }
+
+ //
+ // Rule 588: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
+ //
+ case 588: {
+ action.consumeDeclarationSimple(true);
+ break;
+ }
+
+ //
+ // Rule 589: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
+ //
+ case 589: {
+ action.consumeDeclarationSimple(true);
+ break;
+ }
+
+ //
+ // Rule 590: exception_declaration ::= type_specifier_seq
+ //
+ case 590: {
+ action.consumeDeclarationSimple(false);
+ break;
+ }
+
+ //
+ // Rule 592: exception_specification ::= throw ( )
+ //
+ case 592: {
+ action.consumePlaceHolder();
+ break;
+ }
+
+ //
+ // Rule 613: attribute_parameter ::= assignment_expression
+ //
+ case 613: {
+ action.consumeIgnore();
+ break;
+ }
+
+ //
+ // Rule 624: extended_asm_declaration ::= asm volatile_opt ( extended_asm_param_seq ) ;
+ //
+ case 624: {
+ gnuAction.consumeDeclarationASM();
+ break;
+ }
+
+ //
+ // Rule 635: unary_expression ::= __alignof__ unary_expression
+ //
+ case 635: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_alignOf);
+ break;
+ }
+
+ //
+ // Rule 636: unary_expression ::= __alignof__ ( type_id )
+ //
+ case 636: {
+ action.consumeExpressionTypeId(IASTTypeIdExpression.op_alignof);
+ break;
+ }
+
+ //
+ // Rule 637: unary_expression ::= typeof unary_expression
+ //
+ case 637: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
+ break;
+ }
+
+ //
+ // Rule 638: unary_expression ::= typeof ( type_id )
+ //
+ case 638: {
+ action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof);
+ break;
+ }
+
+ //
+ // Rule 639: relational_expression ::= relational_expression >? shift_expression
+ //
+ case 639: {
+ action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_max);
+ break;
+ }
+
+ //
+ // Rule 640: relational_expression ::= relational_expression <? shift_expression
+ //
+ case 640: {
+ action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_min);
+ break;
+ }
+
+ //
+ // Rule 641: conditional_expression ::= logical_or_expression ? <empty> : assignment_expression
+ //
+ case 641: {
+ action.consumeExpressionConditional();
+ break;
+ }
+
+ //
+ // Rule 642: primary_expression ::= ( compound_statement )
+ //
+ case 642: {
+ gnuAction.consumeCompoundStatementExpression();
+ break;
+ }
+
+ //
+ // Rule 643: labeled_statement ::= case case_range_expression : statement
+ //
+ case 643: {
+ action.consumeStatementCase();
+ break;
+ }
+
+ //
+ // Rule 644: case_range_expression ::= constant_expression ... constant_expression
+ //
+ case 644: {
+ action.consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign);
+ break;
+ }
+
+ //
+ // Rule 648: typeof_type_specifier ::= typeof unary_expression
+ //
+ case 648: {
+ action.consumeExpressionUnaryOperator(IASTUnaryExpression.op_typeof);
+ break;
+ }
+
+ //
+ // Rule 649: typeof_type_specifier ::= typeof ( type_id )
+ //
+ case 649: {
+ action.consumeExpressionTypeId(IASTTypeIdExpression.op_typeof);
+ break;
+ }
+
+ //
+ // Rule 650: declaration_specifiers ::= <openscope-ast> typeof_declaration_specifiers
+ //
+ case 650: {
+ action.consumeDeclarationSpecifiersTypeof();
+ break;
+ }
+
+ //
+ // Rule 663: declarator ::= <openscope-ast> ptr_operator_seq attribute_or_decl_specifier_seq direct_declarator
+ //
+ case 663: {
+ action.consumeDeclaratorWithPointer(true);
+ break;
+ }
+
+ //
+ // Rule 666: simple_type_specifier ::= _Complex
+ //
+ case 666: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 667: simple_type_specifier ::= _Imaginary
+ //
+ case 667: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 668: cv_qualifier ::= restrict
+ //
+ case 668: {
+ action.consumeToken();
+ break;
+ }
+
+ //
+ // Rule 669: explicit_instantiation ::= extern template declaration
+ //
+ case 669: {
+ action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern);
+ break;
+ }
+
+ //
+ // Rule 670: explicit_instantiation ::= static template declaration
+ //
+ case 670: {
+ action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static);
+ break;
+ }
+
+ //
+ // Rule 671: explicit_instantiation ::= inline template declaration
+ //
+ case 671: {
+ action.consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline);
+ break;
+ }
+
+ //
+ // Rule 672: postfix_expression ::= ( type_id ) initializer_list
+ //
+ case 672: {
+ action.consumeExpressionTypeIdInitializer();
+ break;
+ }
+
+ default:
+ break;
+ }
+ return;
+ }
+}

Back to the top