blob: 6a6f413383262a0a7368e5d3eedbd0497d190f16 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2015 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*********************************************************************************/
// This file was generated by LPG
package org.eclipse.cdt.internal.core.dom.lrparser.gpp;
import java.util.List;
import java.util.Map;
import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLiteralExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeIdExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTExplicitTemplateInstantiation;
import org.eclipse.cdt.core.dom.lrparser.CPreprocessorAdapter;
import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
import org.eclipse.cdt.core.dom.lrparser.IParser;
import org.eclipse.cdt.core.dom.lrparser.ITokenCollector;
import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream;
import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack;
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
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.lrparser.lpgextensions.FixedBacktrackingParser;
import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
import lpg.lpgjavaruntime.BadParseException;
import lpg.lpgjavaruntime.BadParseSymFileException;
import lpg.lpgjavaruntime.DiagnoseParser;
import lpg.lpgjavaruntime.ErrorToken;
import lpg.lpgjavaruntime.IToken;
import lpg.lpgjavaruntime.LexStream;
import lpg.lpgjavaruntime.Monitor;
import lpg.lpgjavaruntime.NotBacktrackParseTableException;
import lpg.lpgjavaruntime.NullExportedSymbolsException;
import lpg.lpgjavaruntime.NullTerminalSymbolsException;
import lpg.lpgjavaruntime.ParseErrorCodes;
import lpg.lpgjavaruntime.ParseTable;
import lpg.lpgjavaruntime.PrsStream;
import lpg.lpgjavaruntime.RuleAction;
import lpg.lpgjavaruntime.UndefinedEofSymbolException;
import lpg.lpgjavaruntime.UnimplementedTerminalsException;
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 void initActions(Map<String, String> properties) {
ScopedStack<Object> astStack = new ScopedStack<>();
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;
}
}