diff options
Diffstat (limited to 'lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java')
-rw-r--r-- | lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java | 678 |
1 files changed, 348 insertions, 330 deletions
diff --git a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java index 41b85c47625..b480dbab101 100644 --- a/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java +++ b/lrparser/org.eclipse.cdt.core.lrparser/src/org/eclipse/cdt/internal/core/dom/lrparser/c99/C99NoCastExpressionParser.java @@ -17,19 +17,28 @@ import lpg.lpgjavaruntime.*; import java.util.*; import org.eclipse.cdt.core.dom.ast.*; +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.IParserActionTokenProvider; +import org.eclipse.cdt.core.dom.lrparser.ITokenCollector; import org.eclipse.cdt.core.dom.lrparser.lpgextensions.FixedBacktrackingParser; import org.eclipse.cdt.core.dom.lrparser.action.ScopedStack; +import org.eclipse.cdt.core.parser.IScanner; +import org.eclipse.cdt.core.dom.parser.IBuiltinBindingsProvider; +import org.eclipse.cdt.core.index.IIndex; +import org.eclipse.cdt.core.dom.lrparser.action.ITokenStream; import org.eclipse.cdt.core.dom.lrparser.action.ITokenMap; import org.eclipse.cdt.core.dom.lrparser.action.TokenMap; +import org.eclipse.cdt.core.dom.lrparser.ISecondaryParser; import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory; import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction; import org.eclipse.cdt.core.dom.lrparser.action.c99.C99SecondaryParserFactory; -public class C99NoCastExpressionParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser< IASTExpression > +public class C99NoCastExpressionParser extends PrsStream implements RuleAction, ITokenStream, + ITokenCollector, IParser< IASTExpression > + , ISecondaryParser< IASTExpression > { private static ParseTable prs = new C99NoCastExpressionParserprs(); private FixedBacktrackingParser btParser; @@ -167,7 +176,11 @@ public class C99NoCastExpressionParser extends PrsStream implements RuleAction , private C99BuildASTParserAction action; private IASTCompletionNode compNode; -public C99NoCastExpressionParser() { // constructor + +public C99NoCastExpressionParser(IScanner scanner, IDOMTokenMap tokenMap, IBuiltinBindingsProvider builtinBindingsProvider, IIndex index, Set<IParser.Options> options) { + initActions(options); + action.initializeTranslationUnit(scanner, builtinBindingsProvider, index); + CPreprocessorAdapter.runCPreprocessor(scanner, this, tokenMap); } private void initActions(Set<IParser.Options> options) { @@ -186,10 +199,9 @@ public void addToken(IToken token) { } -public IASTExpression parse(Set<IParser.Options> options) { +public IASTExpression parse() { // this has to be done, or... kaboom! setStreamLength(getSize()); - initActions(options); final int errorRepairCount = -1; // -1 means full error handling parser(null, errorRepairCount); // do the actual parse @@ -232,12 +244,12 @@ public void setTokens(List<IToken> tokens) { addToken(new Token(null, 0, 0, C99NoCastExpressionParsersym.TK_EOF_TOKEN)); } -public C99NoCastExpressionParser(IParserActionTokenProvider parser) { // constructor +public C99NoCastExpressionParser(ITokenStream parser, Set<IParser.Options> options) { // constructor for creating secondary parser + initActions(options); tokenMap = new TokenMap(C99NoCastExpressionParsersym.orderedTerminalSymbols, parser.getOrderedTerminalSymbols()); } - public void ruleAction(int ruleNumber) { switch (ruleNumber) @@ -250,1005 +262,1011 @@ public C99NoCastExpressionParser(IParserActionTokenProvider parser) { // constr } // - // Rule 12: literal ::= integer + // Rule 2: <empty> ::= $Empty // - case 12: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant); break; + case 2: { action. consumeEmpty(); break; } // - // Rule 13: literal ::= floating + // Rule 13: literal ::= integer // - case 13: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant); break; + case 13: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant); break; } // - // Rule 14: literal ::= charconst + // Rule 14: literal ::= floating // - case 14: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant); break; + case 14: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant); break; } // - // Rule 15: literal ::= stringlit + // Rule 15: literal ::= charconst // - case 15: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal); break; + case 15: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant); break; } // - // Rule 17: primary_expression ::= primary_expression_id + // Rule 16: literal ::= stringlit // - case 17: { action. consumeExpressionID(); break; + case 16: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal); break; } // - // Rule 18: primary_expression ::= ( expression ) + // Rule 18: primary_expression ::= primary_expression_id // - case 18: { action. consumeExpressionBracketed(); break; + case 18: { action. consumeExpressionID(); break; } // - // Rule 21: postfix_expression ::= postfix_expression [ expression ] + // Rule 19: primary_expression ::= ( expression ) // - case 21: { action. consumeExpressionArraySubscript(); break; + case 19: { action. consumeExpressionBracketed(); break; } // - // Rule 22: postfix_expression ::= postfix_expression ( expression_list_opt ) + // Rule 22: postfix_expression ::= postfix_expression [ expression ] // - case 22: { action. consumeExpressionFunctionCall(); break; + case 22: { action. consumeExpressionArraySubscript(); break; } // - // Rule 23: postfix_expression ::= postfix_expression . member_name + // Rule 23: postfix_expression ::= postfix_expression ( expression_list_opt ) // - case 23: { action. consumeExpressionFieldReference(false); break; + case 23: { action. consumeExpressionFunctionCall(); break; } // - // Rule 24: postfix_expression ::= postfix_expression -> member_name + // Rule 24: postfix_expression ::= postfix_expression . member_name // - case 24: { action. consumeExpressionFieldReference(true); break; + case 24: { action. consumeExpressionFieldReference(false); break; } // - // Rule 25: postfix_expression ::= postfix_expression ++ + // Rule 25: postfix_expression ::= postfix_expression -> member_name // - case 25: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break; + case 25: { action. consumeExpressionFieldReference(true); break; } // - // Rule 26: postfix_expression ::= postfix_expression -- + // Rule 26: postfix_expression ::= postfix_expression ++ // - case 26: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break; + case 26: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break; } // - // Rule 27: postfix_expression ::= ( type_id ) { <openscope-ast> initializer_list comma_opt } + // Rule 27: postfix_expression ::= postfix_expression -- // - case 27: { action. consumeExpressionTypeIdInitializer(); break; + case 27: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break; } // - // Rule 32: unary_expression ::= ++ unary_expression + // Rule 28: postfix_expression ::= ( type_id ) { <openscope-ast> initializer_list comma_opt } // - case 32: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break; + case 28: { action. consumeExpressionTypeIdInitializer(); break; } // - // Rule 33: unary_expression ::= -- unary_expression + // Rule 33: unary_expression ::= ++ unary_expression // - case 33: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break; + case 33: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break; } // - // Rule 34: unary_expression ::= & cast_expression + // Rule 34: unary_expression ::= -- unary_expression // - case 34: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break; + case 34: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break; } // - // Rule 35: unary_expression ::= * cast_expression + // Rule 35: unary_expression ::= & cast_expression // - case 35: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break; + case 35: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break; } // - // Rule 36: unary_expression ::= + cast_expression + // Rule 36: unary_expression ::= * cast_expression // - case 36: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break; + case 36: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break; } // - // Rule 37: unary_expression ::= - cast_expression + // Rule 37: unary_expression ::= + cast_expression // - case 37: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break; + case 37: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break; } // - // Rule 38: unary_expression ::= ~ cast_expression + // Rule 38: unary_expression ::= - cast_expression // - case 38: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break; + case 38: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break; } // - // Rule 39: unary_expression ::= ! cast_expression + // Rule 39: unary_expression ::= ~ cast_expression // - case 39: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break; + case 39: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break; } // - // Rule 40: unary_expression ::= sizeof unary_expression + // Rule 40: unary_expression ::= ! cast_expression // - case 40: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break; + case 40: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break; } // - // Rule 41: unary_expression ::= sizeof ( type_id ) + // Rule 41: unary_expression ::= sizeof unary_expression // - case 41: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof); break; + case 41: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break; } // - // Rule 44: multiplicative_expression ::= multiplicative_expression * cast_expression + // Rule 42: unary_expression ::= sizeof ( type_id ) // - case 44: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); break; + case 42: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof); break; } // - // Rule 45: multiplicative_expression ::= multiplicative_expression / cast_expression + // Rule 45: multiplicative_expression ::= multiplicative_expression * cast_expression // - case 45: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); break; + case 45: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); break; } // - // Rule 46: multiplicative_expression ::= multiplicative_expression % cast_expression + // Rule 46: multiplicative_expression ::= multiplicative_expression / cast_expression // - case 46: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); break; + case 46: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); break; } // - // Rule 48: additive_expression ::= additive_expression + multiplicative_expression + // Rule 47: multiplicative_expression ::= multiplicative_expression % cast_expression // - case 48: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); break; + case 47: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); break; } // - // Rule 49: additive_expression ::= additive_expression - multiplicative_expression + // Rule 49: additive_expression ::= additive_expression + multiplicative_expression // - case 49: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); break; + case 49: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); break; } // - // Rule 51: shift_expression ::= shift_expression << additive_expression + // Rule 50: additive_expression ::= additive_expression - multiplicative_expression // - case 51: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); break; + case 50: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); break; } // - // Rule 52: shift_expression ::= shift_expression >> additive_expression + // Rule 52: shift_expression ::= shift_expression << additive_expression // - case 52: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); break; + case 52: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); break; } // - // Rule 54: relational_expression ::= relational_expression < shift_expression + // Rule 53: shift_expression ::= shift_expression >> additive_expression // - case 54: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); break; + case 53: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); break; } // - // Rule 55: relational_expression ::= relational_expression > shift_expression + // Rule 55: relational_expression ::= relational_expression < shift_expression // - case 55: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); break; + case 55: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); break; } // - // Rule 56: relational_expression ::= relational_expression <= shift_expression + // Rule 56: relational_expression ::= relational_expression > shift_expression // - case 56: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); break; + case 56: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); break; } // - // Rule 57: relational_expression ::= relational_expression >= shift_expression + // Rule 57: relational_expression ::= relational_expression <= shift_expression // - case 57: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); break; + case 57: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); break; } // - // Rule 59: equality_expression ::= equality_expression == relational_expression + // Rule 58: relational_expression ::= relational_expression >= shift_expression // - case 59: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); break; + case 58: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); break; } // - // Rule 60: equality_expression ::= equality_expression != relational_expression + // Rule 60: equality_expression ::= equality_expression == relational_expression // - case 60: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); break; + case 60: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); break; } // - // Rule 62: AND_expression ::= AND_expression & equality_expression + // Rule 61: equality_expression ::= equality_expression != relational_expression // - case 62: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); break; + case 61: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); break; } // - // Rule 64: exclusive_OR_expression ::= exclusive_OR_expression ^ AND_expression + // Rule 63: and_expression ::= and_expression & equality_expression // - case 64: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); break; + case 63: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); break; } // - // Rule 66: inclusive_OR_expression ::= inclusive_OR_expression | exclusive_OR_expression + // Rule 65: exclusive_or_expression ::= exclusive_or_expression ^ and_expression // - case 66: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); break; + case 65: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); break; } // - // Rule 68: logical_AND_expression ::= logical_AND_expression && inclusive_OR_expression + // Rule 67: inclusive_or_expression ::= inclusive_or_expression | exclusive_or_expression // - case 68: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); break; + case 67: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); break; } // - // Rule 70: logical_OR_expression ::= logical_OR_expression || logical_AND_expression + // Rule 69: logical_and_expression ::= logical_and_expression && inclusive_or_expression // - case 70: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); break; + case 69: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); break; } // - // Rule 72: conditional_expression ::= logical_OR_expression ? expression : conditional_expression + // Rule 71: logical_or_expression ::= logical_or_expression || logical_and_expression // - case 72: { action. consumeExpressionConditional(); break; + case 71: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); break; } // - // Rule 74: assignment_expression ::= unary_expression = assignment_expression + // Rule 73: conditional_expression ::= logical_or_expression ? expression : assignment_expression // - case 74: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break; + case 73: { action. consumeExpressionConditional(); break; } // - // Rule 75: assignment_expression ::= unary_expression *= assignment_expression + // Rule 75: assignment_expression ::= unary_expression = assignment_expression // - case 75: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); break; + case 75: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break; } // - // Rule 76: assignment_expression ::= unary_expression /= assignment_expression + // Rule 76: assignment_expression ::= unary_expression *= assignment_expression // - case 76: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); break; + case 76: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); break; } // - // Rule 77: assignment_expression ::= unary_expression %= assignment_expression + // Rule 77: assignment_expression ::= unary_expression /= assignment_expression // - case 77: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); break; + case 77: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); break; } // - // Rule 78: assignment_expression ::= unary_expression += assignment_expression + // Rule 78: assignment_expression ::= unary_expression %= assignment_expression // - case 78: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); break; + case 78: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); break; } // - // Rule 79: assignment_expression ::= unary_expression -= assignment_expression + // Rule 79: assignment_expression ::= unary_expression += assignment_expression // - case 79: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); break; + case 79: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); break; } // - // Rule 80: assignment_expression ::= unary_expression <<= assignment_expression + // Rule 80: assignment_expression ::= unary_expression -= assignment_expression // - case 80: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); break; + case 80: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); break; } // - // Rule 81: assignment_expression ::= unary_expression >>= assignment_expression + // Rule 81: assignment_expression ::= unary_expression <<= assignment_expression // - case 81: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); break; + case 81: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); break; } // - // Rule 82: assignment_expression ::= unary_expression &= assignment_expression + // Rule 82: assignment_expression ::= unary_expression >>= assignment_expression // - case 82: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); break; + case 82: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); break; } // - // Rule 83: assignment_expression ::= unary_expression ^= assignment_expression + // Rule 83: assignment_expression ::= unary_expression &= assignment_expression // - case 83: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); break; + case 83: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); break; } // - // Rule 84: assignment_expression ::= unary_expression |= assignment_expression + // Rule 84: assignment_expression ::= unary_expression ^= assignment_expression // - case 84: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); break; + case 84: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); break; } // - // Rule 87: expression_list ::= <openscope-ast> expression_list_actual + // Rule 85: assignment_expression ::= unary_expression |= assignment_expression // - case 87: { action. consumeExpressionList(); break; + case 85: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); break; } // - // Rule 89: expression_list_opt ::= $Empty + // Rule 88: expression_list ::= <openscope-ast> expression_list_actual // - case 89: { action. consumeEmpty(); break; + case 88: { action. consumeExpressionList(); break; } // - // Rule 99: statement ::= ERROR_TOKEN + // Rule 90: expression_list_opt ::= $Empty // - case 99: { action. consumeStatementProblem(); break; + case 90: { action. consumeEmpty(); break; } // - // Rule 100: labeled_statement ::= identifier_token : statement + // Rule 100: statement ::= ERROR_TOKEN // - case 100: { action. consumeStatementLabeled(); break; + case 100: { action. consumeStatementProblem(); break; } // - // Rule 101: labeled_statement ::= case constant_expression : statement + // Rule 101: labeled_statement ::= identifier_token : statement // - case 101: { action. consumeStatementCase(); break; + case 101: { action. consumeStatementLabeled(); break; } // - // Rule 102: labeled_statement ::= default : statement + // Rule 102: labeled_statement ::= case constant_expression : statement // - case 102: { action. consumeStatementDefault(); break; + case 102: { action. consumeStatementCase(); break; } // - // Rule 103: compound_statement ::= { } + // Rule 103: labeled_statement ::= default : statement // - case 103: { action. consumeStatementCompoundStatement(false); break; + case 103: { action. consumeStatementDefault(); break; } // - // Rule 104: compound_statement ::= { <openscope-ast> block_item_list } + // Rule 104: compound_statement ::= { } // - case 104: { action. consumeStatementCompoundStatement(true); break; + case 104: { action. consumeStatementCompoundStatement(false); break; } // - // Rule 108: block_item ::= declaration + // Rule 105: compound_statement ::= { <openscope-ast> block_item_list } // - case 108: { action. consumeStatementDeclarationWithDisambiguation(); break; + case 105: { action. consumeStatementCompoundStatement(true); break; } // - // Rule 109: expression_statement ::= ; + // Rule 109: block_item ::= declaration // - case 109: { action. consumeStatementNull(); break; + case 109: { action. consumeStatementDeclarationWithDisambiguation(); break; } // - // Rule 110: expression_statement ::= expression_in_statement ; + // Rule 110: expression_statement ::= ; // - case 110: { action. consumeStatementExpression(); break; + case 110: { action. consumeStatementNull(); break; } // - // Rule 111: selection_statement ::= if ( expression ) statement + // Rule 111: expression_statement ::= expression_in_statement ; // - case 111: { action. consumeStatementIf(false); break; + case 111: { action. consumeStatementExpression(); break; } // - // Rule 112: selection_statement ::= if ( expression ) statement else statement + // Rule 112: selection_statement ::= if ( expression ) statement // - case 112: { action. consumeStatementIf(true); break; + case 112: { action. consumeStatementIf(false); break; } // - // Rule 113: selection_statement ::= switch ( expression ) statement + // Rule 113: selection_statement ::= if ( expression ) statement else statement // - case 113: { action. consumeStatementSwitch(); break; + case 113: { action. consumeStatementIf(true); break; } // - // Rule 115: expression_opt ::= $Empty + // Rule 114: selection_statement ::= switch ( expression ) statement // - case 115: { action. consumeEmpty(); break; + case 114: { action. consumeStatementSwitch(); break; } // - // Rule 116: iteration_statement ::= do statement while ( expression ) ; + // Rule 116: expression_opt ::= $Empty // - case 116: { action. consumeStatementDoLoop(); break; + case 116: { action. consumeEmpty(); break; } // - // Rule 117: iteration_statement ::= while ( expression ) statement + // Rule 117: iteration_statement ::= do statement while ( expression ) ; // - case 117: { action. consumeStatementWhileLoop(); break; + case 117: { action. consumeStatementDoLoop(); break; } // - // Rule 118: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement + // Rule 118: iteration_statement ::= while ( expression ) statement // - case 118: { action. consumeStatementForLoop(); break; + case 118: { action. consumeStatementWhileLoop(); break; } // - // Rule 119: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement + // Rule 119: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement // case 119: { action. consumeStatementForLoop(); break; } // - // Rule 120: jump_statement ::= goto identifier_token ; + // Rule 120: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement // - case 120: { action. consumeStatementGoto(); break; + case 120: { action. consumeStatementForLoop(); break; } // - // Rule 121: jump_statement ::= continue ; + // Rule 121: jump_statement ::= goto identifier_token ; // - case 121: { action. consumeStatementContinue(); break; + case 121: { action. consumeStatementGoto(); break; } // - // Rule 122: jump_statement ::= break ; + // Rule 122: jump_statement ::= continue ; // - case 122: { action. consumeStatementBreak(); break; + case 122: { action. consumeStatementContinue(); break; } // - // Rule 123: jump_statement ::= return ; + // Rule 123: jump_statement ::= break ; // - case 123: { action. consumeStatementReturn(false); break; + case 123: { action. consumeStatementBreak(); break; } // - // Rule 124: jump_statement ::= return expression ; + // Rule 124: jump_statement ::= return ; // - case 124: { action. consumeStatementReturn(true); break; + case 124: { action. consumeStatementReturn(false); break; } // - // Rule 125: declaration ::= declaration_specifiers ; + // Rule 125: jump_statement ::= return expression ; // - case 125: { action. consumeDeclarationSimple(false); break; + case 125: { action. consumeStatementReturn(true); break; } // - // Rule 126: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ; + // Rule 126: declaration ::= declaration_specifiers ; // - case 126: { action. consumeDeclarationSimple(true); break; + case 126: { action. consumeDeclarationSimple(false); break; } // - // Rule 127: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers + // Rule 127: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ; // - case 127: { action. consumeDeclarationSpecifiersSimple(); break; + case 127: { action. consumeDeclarationSimple(true); break; } // - // Rule 128: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers + // Rule 128: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers // - case 128: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; + case 128: { action. consumeDeclarationSpecifiersSimple(); break; } // - // Rule 129: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers + // Rule 129: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers // case 129: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; } // - // Rule 130: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers + // Rule 130: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers // case 130: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; } // - // Rule 131: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers + // Rule 131: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers // - case 131: { action. consumeDeclarationSpecifiersTypedefName(); break; + case 131: { action. consumeDeclarationSpecifiersStructUnionEnum(); break; } // - // Rule 156: init_declarator ::= complete_declarator = initializer + // Rule 132: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers // - case 156: { action. consumeDeclaratorWithInitializer(true); break; + case 132: { action. consumeDeclarationSpecifiersTypedefName(); break; } // - // Rule 158: storage_class_specifier ::= storage_class_specifier_token + // Rule 157: init_declarator ::= complete_declarator = initializer // - case 158: { action. consumeToken(); break; + case 157: { action. consumeDeclaratorWithInitializer(true); break; } // - // Rule 164: simple_type_specifier ::= simple_type_specifier_token + // Rule 159: storage_class_specifier ::= storage_class_specifier_token // - case 164: { action. consumeToken(); break; + case 159: { action. consumeToken(); break; } // - // Rule 177: type_name_specifier ::= identifier_token + // Rule 165: simple_type_specifier ::= simple_type_specifier_token // - case 177: { action. consumeToken(); break; + case 165: { action. consumeToken(); break; } // - // Rule 178: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt } + // Rule 178: type_name_specifier ::= identifier_token // - case 178: { action. consumeTypeSpecifierComposite(false); break; + case 178: { action. consumeToken(); break; } // - // Rule 179: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt } + // Rule 179: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt } // - case 179: { action. consumeTypeSpecifierComposite(true); break; + case 179: { action. consumeTypeSpecifierComposite(false); break; } // - // Rule 184: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token + // Rule 180: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook { <openscope-ast> struct_declaration_list_opt } // - case 184: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break; + case 180: { action. consumeTypeSpecifierComposite(true); break; } // - // Rule 185: elaborated_specifier ::= union elaborated_specifier_hook identifier_token + // Rule 185: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token // - case 185: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break; + case 185: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break; } // - // Rule 186: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token + // Rule 186: elaborated_specifier ::= union elaborated_specifier_hook identifier_token // - case 186: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break; + case 186: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break; } // - // Rule 192: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ; + // Rule 187: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token // - case 192: { action. consumeStructDeclaration(true); break; + case 187: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break; } // - // Rule 193: struct_declaration ::= specifier_qualifier_list ; + // Rule 193: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ; // - case 193: { action. consumeStructDeclaration(false); break; + case 193: { action. consumeStructDeclaration(true); break; } // - // Rule 194: struct_declaration ::= ERROR_TOKEN + // Rule 194: struct_declaration ::= specifier_qualifier_list ; // - case 194: { action. consumeDeclarationProblem(); break; + case 194: { action. consumeStructDeclaration(false); break; } // - // Rule 200: struct_declarator ::= : constant_expression + // Rule 195: struct_declaration ::= ERROR_TOKEN // - case 200: { action. consumeBitField(false); break; + case 195: { action. consumeDeclarationProblem(); break; } // - // Rule 201: struct_declarator ::= declarator : constant_expression + // Rule 201: struct_declarator ::= : constant_expression // - case 201: { action. consumeBitField(true); break; + case 201: { action. consumeBitField(false); break; } // - // Rule 202: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt } + // Rule 202: struct_declarator ::= declarator : constant_expression // - case 202: { action. consumeTypeSpecifierEnumeration(false); break; + case 202: { action. consumeBitField(true); break; } // - // Rule 203: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt } + // Rule 203: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt } // - case 203: { action. consumeTypeSpecifierEnumeration(true); break; + case 203: { action. consumeTypeSpecifierEnumeration(false); break; } // - // Rule 209: enumerator ::= identifier_token + // Rule 204: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt } // - case 209: { action. consumeEnumerator(false); break; + case 204: { action. consumeTypeSpecifierEnumeration(true); break; } // - // Rule 210: enumerator ::= identifier_token = constant_expression + // Rule 210: enumerator ::= identifier_token // - case 210: { action. consumeEnumerator(true); break; + case 210: { action. consumeEnumerator(false); break; } // - // Rule 211: type_qualifier ::= type_qualifier_token + // Rule 211: enumerator ::= identifier_token = constant_expression // - case 211: { action. consumeToken(); break; + case 211: { action. consumeEnumerator(true); break; } // - // Rule 215: function_specifier ::= inline + // Rule 212: type_qualifier ::= type_qualifier_token // - case 215: { action. consumeToken(); break; + case 212: { action. consumeToken(); break; } // - // Rule 217: declarator ::= <openscope-ast> pointer_seq direct_declarator + // Rule 216: function_specifier ::= inline // - case 217: { action. consumeDeclaratorWithPointer(true); break; + case 216: { action. consumeToken(); break; } // - // Rule 222: basic_direct_declarator ::= declarator_id_name + // Rule 218: declarator ::= <openscope-ast> pointer_seq direct_declarator // - case 222: { action. consumeDirectDeclaratorIdentifier(); break; + case 218: { action. consumeDeclaratorWithPointer(true); break; } // - // Rule 223: basic_direct_declarator ::= ( declarator ) + // Rule 223: basic_direct_declarator ::= declarator_id_name // - case 223: { action. consumeDirectDeclaratorBracketed(); break; + case 223: { action. consumeDirectDeclaratorIdentifier(); break; } // - // Rule 224: declarator_id_name ::= identifier + // Rule 224: basic_direct_declarator ::= ( declarator ) // - case 224: { action. consumeIdentifierName(); break; + case 224: { action. consumeDirectDeclaratorBracketed(); break; } // - // Rule 225: array_direct_declarator ::= basic_direct_declarator array_modifier + // Rule 225: declarator_id_name ::= identifier // - case 225: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + case 225: { action. consumeIdentifierName(); break; } // - // Rule 226: array_direct_declarator ::= array_direct_declarator array_modifier + // Rule 226: array_direct_declarator ::= basic_direct_declarator array_modifier // case 226: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 228: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list ) + // Rule 227: array_direct_declarator ::= array_direct_declarator array_modifier // - case 228: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; + case 227: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 229: function_direct_declarator ::= basic_direct_declarator ( ) + // Rule 229: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list ) // - case 229: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; + case 229: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; } // - // Rule 231: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator + // Rule 230: function_direct_declarator ::= basic_direct_declarator ( ) // - case 231: { action. consumeDeclaratorWithPointer(true); break; + case 230: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; } // - // Rule 232: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list ) + // Rule 232: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator // - case 232: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break; + case 232: { action. consumeDeclaratorWithPointer(true); break; } // - // Rule 234: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator + // Rule 233: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list ) // - case 234: { action. consumeDeclaratorWithPointer(true); break; + case 233: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break; } // - // Rule 235: identifier_list ::= identifier + // Rule 235: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator // - case 235: { action. consumeIdentifierKnR(); break; + case 235: { action. consumeDeclaratorWithPointer(true); break; } // - // Rule 236: identifier_list ::= identifier_list , identifier + // Rule 236: identifier_list ::= identifier // case 236: { action. consumeIdentifierKnR(); break; } // - // Rule 237: array_modifier ::= [ ] + // Rule 237: identifier_list ::= identifier_list , identifier // - case 237: { action. consumeDirectDeclaratorArrayModifier(false); break; + case 237: { action. consumeIdentifierKnR(); break; } // - // Rule 238: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ] + // Rule 238: array_modifier ::= [ ] // - case 238: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; + case 238: { action. consumeDirectDeclaratorArrayModifier(false); break; } // - // Rule 239: array_modifier ::= [ assignment_expression ] + // Rule 239: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ] // - case 239: { action. consumeDirectDeclaratorArrayModifier(true); break; + case 239: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; } // - // Rule 240: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ] + // Rule 240: array_modifier ::= [ assignment_expression ] // - case 240: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; + case 240: { action. consumeDirectDeclaratorArrayModifier(true); break; } // - // Rule 241: array_modifier ::= [ static assignment_expression ] + // Rule 241: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ] // - case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; + case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; } // - // Rule 242: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ] + // Rule 242: array_modifier ::= [ static assignment_expression ] // - case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; + case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; } // - // Rule 243: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ] + // Rule 243: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ] // case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; } // - // Rule 244: array_modifier ::= [ * ] + // Rule 244: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ] // - case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; + case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; } // - // Rule 245: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ] + // Rule 245: array_modifier ::= [ * ] // - case 245: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; + case 245: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; } // - // Rule 247: pointer_seq ::= pointer_hook * + // Rule 246: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ] // - case 247: { action. consumePointer(); break; + case 246: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; } // - // Rule 248: pointer_seq ::= pointer_seq pointer_hook * + // Rule 248: pointer_seq ::= pointer_hook * pointer_hook // case 248: { action. consumePointer(); break; } // - // Rule 249: pointer_seq ::= pointer_hook * <openscope-ast> type_qualifier_list + // Rule 249: pointer_seq ::= pointer_seq pointer_hook * pointer_hook // - case 249: { action. consumePointerTypeQualifierList(); break; + case 249: { action. consumePointer(); break; } // - // Rule 250: pointer_seq ::= pointer_seq pointer_hook * <openscope-ast> type_qualifier_list + // Rule 250: pointer_seq ::= pointer_hook * pointer_hook <openscope-ast> type_qualifier_list // case 250: { action. consumePointerTypeQualifierList(); break; } // - // Rule 254: parameter_type_list ::= parameter_list + // Rule 251: pointer_seq ::= pointer_seq pointer_hook * pointer_hook <openscope-ast> type_qualifier_list // - case 254: { action. consumeEmpty(); break; + case 251: { action. consumePointerTypeQualifierList(); break; } // - // Rule 255: parameter_type_list ::= parameter_list , ... + // Rule 255: parameter_type_list ::= parameter_list // - case 255: { action. consumePlaceHolder(); break; + case 255: { action. consumeEmpty(); break; } // - // Rule 256: parameter_type_list ::= ... + // Rule 256: parameter_type_list ::= parameter_list , ... // case 256: { action. consumePlaceHolder(); break; } // - // Rule 259: parameter_declaration ::= declaration_specifiers complete_parameter_declarator + // Rule 257: parameter_type_list ::= ... // - case 259: { action. consumeParameterDeclaration(); break; + case 257: { action. consumePlaceHolder(); break; } // - // Rule 260: parameter_declaration ::= declaration_specifiers + // Rule 260: parameter_declaration ::= declaration_specifiers complete_parameter_declarator // - case 260: { action. consumeParameterDeclarationWithoutDeclarator(); break; + case 260: { action. consumeParameterDeclaration(); break; } // - // Rule 263: type_id ::= specifier_qualifier_list + // Rule 261: parameter_declaration ::= declaration_specifiers // - case 263: { action. consumeTypeId(false); break; + case 261: { action. consumeParameterDeclarationWithoutDeclarator(); break; } // - // Rule 264: type_id ::= specifier_qualifier_list abstract_declarator + // Rule 264: type_id ::= specifier_qualifier_list // - case 264: { action. consumeTypeId(true); break; + case 264: { action. consumeTypeId(false); break; } // - // Rule 266: abstract_declarator ::= <openscope-ast> pointer_seq + // Rule 265: type_id ::= specifier_qualifier_list abstract_declarator // - case 266: { action. consumeDeclaratorWithPointer(false); break; + case 265: { action. consumeTypeId(true); break; } // - // Rule 267: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator + // Rule 267: abstract_declarator ::= <openscope-ast> pointer_seq // case 267: { action. consumeDeclaratorWithPointer(false); break; } // - // Rule 271: basic_direct_abstract_declarator ::= ( abstract_declarator ) + // Rule 268: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator // - case 271: { action. consumeDirectDeclaratorBracketed(); break; + case 268: { action. consumeDeclaratorWithPointer(false); break; } // - // Rule 272: array_direct_abstract_declarator ::= array_modifier + // Rule 272: basic_direct_abstract_declarator ::= ( abstract_declarator ) // - case 272: { action. consumeDirectDeclaratorArrayDeclarator(false); break; + case 272: { action. consumeDirectDeclaratorBracketed(); break; } // - // Rule 273: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier + // Rule 273: array_direct_abstract_declarator ::= array_modifier // - case 273: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + case 273: { action. consumeDirectDeclaratorArrayDeclarator(false); break; } // - // Rule 274: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier + // Rule 274: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // case 274: { action. consumeDirectDeclaratorArrayDeclarator(true); break; } // - // Rule 275: function_direct_abstract_declarator ::= ( ) + // Rule 275: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // - case 275: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break; + case 275: { action. consumeDirectDeclaratorArrayDeclarator(true); break; + } + + // + // Rule 276: function_direct_abstract_declarator ::= ( ) + // + case 276: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break; } // - // Rule 276: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( ) + // Rule 277: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( ) // - case 276: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; + case 277: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; } // - // Rule 277: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list ) + // Rule 278: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list ) // - case 277: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break; + case 278: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break; } // - // Rule 278: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list ) + // Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list ) // - case 278: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; + case 279: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; } // - // Rule 279: initializer ::= assignment_expression + // Rule 280: initializer ::= assignment_expression // - case 279: { action. consumeInitializer(); break; + case 280: { action. consumeInitializer(); break; } // - // Rule 280: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list + // Rule 281: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list // - case 280: { action. consumeInitializerList(); break; + case 281: { action. consumeInitializerList(); break; } // - // Rule 281: initializer ::= { <openscope-ast> } + // Rule 282: initializer ::= { <openscope-ast> } // - case 281: { action. consumeInitializerList(); break; + case 282: { action. consumeInitializerList(); break; } // - // Rule 282: start_initializer_list ::= $Empty + // Rule 283: start_initializer_list ::= $Empty // - case 282: { action. initializerListStart(); break; + case 283: { action. initializerListStart(); break; } // - // Rule 283: end_initializer_list ::= $Empty + // Rule 284: end_initializer_list ::= $Empty // - case 283: { action. initializerListEnd(); break; + case 284: { action. initializerListEnd(); break; } // - // Rule 288: designated_initializer ::= <openscope-ast> designation = initializer + // Rule 289: designated_initializer ::= <openscope-ast> designation = initializer // - case 288: { action. consumeInitializerDesignated(); break; + case 289: { action. consumeInitializerDesignated(); break; } // - // Rule 292: designator_base ::= [ constant_expression ] + // Rule 293: designator_base ::= [ constant_expression ] // - case 292: { action. consumeDesignatorArray(); break; + case 293: { action. consumeDesignatorArray(); break; } // - // Rule 293: designator_base ::= . identifier_token + // Rule 294: designator_base ::= . identifier_token // - case 293: { action. consumeDesignatorField(); break; + case 294: { action. consumeDesignatorField(); break; } // - // Rule 294: designator ::= [ constant_expression ] + // Rule 295: designator ::= [ constant_expression ] // - case 294: { action. consumeDesignatorArray(); break; + case 295: { action. consumeDesignatorArray(); break; } // - // Rule 295: designator ::= . identifier_token + // Rule 296: designator ::= . identifier_token // - case 295: { action. consumeDesignatorField(); break; + case 296: { action. consumeDesignatorField(); break; } // - // Rule 296: translation_unit ::= external_declaration_list + // Rule 297: translation_unit ::= external_declaration_list // - case 296: { action. consumeTranslationUnit(); break; + case 297: { action. consumeTranslationUnit(); break; } // - // Rule 297: translation_unit ::= $Empty + // Rule 298: translation_unit ::= $Empty // - case 297: { action. consumeTranslationUnit(); break; + case 298: { action. consumeTranslationUnit(); break; } // - // Rule 302: external_declaration ::= ; + // Rule 303: external_declaration ::= ; // - case 302: { action. consumeDeclarationEmpty(); break; + case 303: { action. consumeDeclarationEmpty(); break; } // - // Rule 303: external_declaration ::= ERROR_TOKEN + // Rule 304: external_declaration ::= ERROR_TOKEN // - case 303: { action. consumeDeclarationProblem(); break; + case 304: { action. consumeDeclarationProblem(); break; } // - // Rule 306: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body + // Rule 307: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body // - case 306: { action. consumeFunctionDefinition(true); break; + case 307: { action. consumeFunctionDefinition(true); break; } // - // Rule 307: function_definition ::= <openscope-ast> function_declarator function_body + // Rule 308: function_definition ::= <openscope-ast> function_declarator function_body // - case 307: { action. consumeFunctionDefinition(false); break; + case 308: { action. consumeFunctionDefinition(false); break; } // - // Rule 308: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement + // Rule 309: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement // - case 308: { action. consumeFunctionDefinitionKnR(); break; + case 309: { action. consumeFunctionDefinitionKnR(); break; } // - // Rule 309: function_body ::= { } + // Rule 310: function_body ::= { } // - case 309: { action. consumeStatementCompoundStatement(false); break; + case 310: { action. consumeStatementCompoundStatement(false); break; } // - // Rule 310: function_body ::= { <openscope-ast> block_item_list } + // Rule 311: function_body ::= { <openscope-ast> block_item_list } // - case 310: { action. consumeStatementCompoundStatement(true); break; + case 311: { action. consumeStatementCompoundStatement(true); break; } // - // Rule 312: no_cast_start ::= ERROR_TOKEN + // Rule 313: no_cast_start ::= ERROR_TOKEN // - case 312: { action. consumeEmpty(); break; + case 313: { action. consumeEmpty(); break; } |