Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Kucera2008-04-08 22:01:21 +0000
committerMike Kucera2008-04-08 22:01:21 +0000
commit2ae1a301ef89a1a194ddb2a8d2986da4e2cf71d3 (patch)
treea7bbf61440b82f7a0ca282280d4c25e3d175a6b1 /upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java
parent1ca857981f6093615295f66ad67264c18b0559e5 (diff)
downloadorg.eclipse.cdt-2ae1a301ef89a1a194ddb2a8d2986da4e2cf71d3.tar.gz
org.eclipse.cdt-2ae1a301ef89a1a194ddb2a8d2986da4e2cf71d3.tar.xz
org.eclipse.cdt-2ae1a301ef89a1a194ddb2a8d2986da4e2cf71d3.zip
working on porting the UPC plugin
Diffstat (limited to 'upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java')
-rw-r--r--upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java2046
1 files changed, 925 insertions, 1121 deletions
diff --git a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java
index 53944bae9b5..928741d83bd 100644
--- a/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java
+++ b/upc/org.eclipse.cdt.core.parser.upc/src/org/eclipse/cdt/internal/core/dom/parser/upc/UPCParser.java
@@ -1,5 +1,5 @@
/*******************************************************************************
-* Copyright (c) 2006, 2007 IBM Corporation and others.
+* Copyright (c) 2006, 2008 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -13,45 +13,26 @@
package org.eclipse.cdt.internal.core.dom.parser.upc;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import lpg.lpgjavaruntime.*;
-import lpg.lpgjavaruntime.BacktrackingParser;
-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.TokenStream;
-import lpg.lpgjavaruntime.UndefinedEofSymbolException;
-import lpg.lpgjavaruntime.UnimplementedTerminalsException;
-
-import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
-import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
-import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.dom.ast.IASTLiteralExpression;
-import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
-import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
+import java.util.*;
+import org.eclipse.cdt.core.dom.ast.*;
import org.eclipse.cdt.core.dom.lrparser.IParser;
import org.eclipse.cdt.core.dom.lrparser.IParserActionTokenProvider;
-import org.eclipse.cdt.core.dom.parser.upc.DOMToUPCTokenMap;
+
+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.action.c99.C99ASTNodeFactory;
+import org.eclipse.cdt.core.dom.lrparser.action.c99.C99BuildASTParserAction;
+
+import org.eclipse.cdt.core.dom.parser.upc.UPCASTNodeFactory;
import org.eclipse.cdt.core.dom.parser.upc.UPCParserAction;
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTKeywordExpression;
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTSynchronizationStatement;
import org.eclipse.cdt.core.dom.upc.ast.IUPCASTUnaryExpression;
-public class UPCParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser, IPreprocessorTokenCollector<IToken>
+public class UPCParser extends PrsStream implements RuleAction , IParserActionTokenProvider, IParser
{
private static ParseTable prs = new UPCParserprs();
private BacktrackingParser btParser;
@@ -103,18 +84,18 @@ public class UPCParser extends PrsStream implements RuleAction , IParserActionTo
catch(UnimplementedTerminalsException e)
{
java.util.ArrayList unimplemented_symbols = e.getSymbols();
- System.out.println("The Lexer will not scan the following token(s):");//$NON-NLS-1$
+ 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(" " + UPCParsersym.orderedTerminalSymbols[id.intValue()]);//$NON-NLS-1$
+ System.out.println(" " + UPCParsersym.orderedTerminalSymbols[id.intValue()]);
}
System.out.println();
}
catch(UndefinedEofSymbolException e)
{
throw new Error(new UndefinedEofSymbolException
- ("The Lexer does not implement the Eof symbol " +//$NON-NLS-1$
+ ("The Lexer does not implement the Eof symbol " +
UPCParsersym.orderedTerminalSymbols[UPCParserprs.EOFT_SYMBOL]));
}
}
@@ -133,12 +114,12 @@ public class UPCParser extends PrsStream implements RuleAction , IParserActionTo
lasttok = super.getLastErrorToken(error_token);
String location = super.getFileName() + ':' +
(firsttok > lasttok
- ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))//$NON-NLS-1$
- : (super.getLine(error_token) + ":" +//$NON-NLS-1$
- super.getColumn(error_token) + ":" +//$NON-NLS-1$
- super.getEndLine(error_token) + ":" +//$NON-NLS-1$
+ ? (super.getEndLine(lasttok) + ":" + super.getEndColumn(lasttok))
+ : (super.getLine(error_token) + ":" +
+ super.getColumn(error_token) + ":" +
+ super.getEndLine(error_token) + ":" +
super.getEndColumn(error_token)))
- + ": ";//$NON-NLS-1$
+ + ": ";
super.reportError((firsttok > lasttok ? ParseErrorCodes.INSERTION_CODE : ParseErrorCodes.SUBSTITUTION_CODE), location, msg);
}
@@ -166,11 +147,11 @@ public class UPCParser extends PrsStream implements RuleAction , IParserActionTo
catch (NotBacktrackParseTableException e)
{
throw new Error(new NotBacktrackParseTableException
- ("Regenerate UPCParserprs.java with -BACKTRACK option"));//$NON-NLS-1$
+ ("Regenerate UPCParserprs.java with -BACKTRACK option"));
}
catch (BadParseSymFileException e)
{
- throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- UPCParsersym.java"));//$NON-NLS-1$
+ throw new Error(new BadParseSymFileException("Bad Parser Symbol File -- UPCParsersym.java"));
}
try
@@ -188,1548 +169,1371 @@ public class UPCParser extends PrsStream implements RuleAction , IParserActionTo
}
-private UPCParserAction action = new UPCParserAction (this);
-private List commentTokens = new ArrayList();
-private IKeywordMap keywordMap = new DOMToUPCTokenMap ();
+private UPCParserAction action;
public UPCParser() { // constructor
- this(new UPCLexer ());
}
-public void addToken(IToken token) {
- int newKind = mapKind(token.getKind());
- if(newKind == UPCParserprs.TK_identifier) {
- Integer keywordKind = keywordMap.getKeywordKind(token.toString());
- if(keywordKind != null) {
- newKind = keywordKind.intValue();
- }
- }
- token.setKind(newKind);
- super.addToken(token);
+private void initActions(IASTTranslationUnit tu) {
+ action = new UPCParserAction ( UPCASTNodeFactory.DEFAULT_INSTANCE , this, tu);
}
-public void addCommentToken(IToken token) {
- commentTokens.add(token);
-}
-public List getCommentTokens() {
- return commentTokens;
-}
-
-public void resetTokenStream() {
- super.resetTokenStream();
- action = new UPCParserAction (this);
- commentTokens = new ArrayList();
+public void addToken(IToken token) {
+ token.setKind(mapKind(token.getKind())); // TODO does mapKind need to be called?
+ super.addToken(token);
}
-public IParseResult parse() {
+public IASTCompletionNode parse(IASTTranslationUnit tu) {
// this has to be done, or... kaboom!
setStreamLength(getSize());
+ initActions(tu);
final int errorRepairCount = -1; // -1 means full error handling
-
- if(btParser == null) {
- parser(null, errorRepairCount);
- }
- else {
- try
- {
- // reuse the same btParser object for speed
- // (creating an new instance for every translation unit is dirt slow)
- btParser.parse(errorRepairCount);
- }
- catch (BadParseException e)
- {
- reset(e.error_token); // point to error token
- DiagnoseParser diagnoseParser = new DiagnoseParser(this, prs);
- diagnoseParser.diagnose(e.error_token);
- }
- }
+ parser(null, errorRepairCount); // do the actual parse
+ super.resetTokenStream(); // allow tokens to be garbage collected
- IASTTranslationUnit tu = action.getAST();
- boolean encounteredError = action.encounteredError();
+ // the completion node may be null
IASTCompletionNode compNode = action.getASTCompletionNode();
- resetTokenStream(); // important, allows memory to be reclaimed
- return new C99ParseResult(tu, compNode, encounteredError);
+ //action = null;
+ //parserAction = null;
+ return compNode;
+}
+
+// uncomment this method to use with backtracking parser
+public List getRuleTokens() {
+ return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1));
}
-// implements IParserActionTokenProvider.getEOFToken()
-public IToken getEOFToken() {
- List tokens = getTokens();
- IToken eof = (IToken) tokens.get(tokens.size() - 1);
- return eof;
+public IASTNode getSecondaryParseResult() {
+ return action.getSecondaryParseResult();
}
+public String[] getOrderedTerminalSymbols() {
+ return UPCParsersym.orderedTerminalSymbols;
+}
-// implements IParserActionTokenProvider.getRuleTokenCount()
-public int getRuleTokenCount() {
- return (getRightSpan() - getLeftSpan()) + 1;
+public String getName() {
+ return "UPCParser"; //$NON-NLS-1$
}
-public List getRuleTokens() {
- return Collections.unmodifiableList(getTokens().subList(getLeftSpan(), getRightSpan() + 1));
+
+
+private ITokenMap tokenMap = null;
+
+public void setTokens(List<IToken> tokens) {
+ resetTokenStream();
+ addToken(new Token(null, 0, 0, 0)); // dummy token
+ for(IToken token : tokens) {
+ token.setKind(tokenMap.mapKind(token.getKind()));
+ addToken(token);
+ }
+ addToken(new Token(null, 0, 0, UPCParsersym.TK_EOF_TOKEN));
}
+public UPCParser(String[] mapFrom) { // constructor
+ tokenMap = new TokenMap(UPCParsersym.orderedTerminalSymbols, mapFrom);
+}
+
+
public void ruleAction(int ruleNumber)
{
switch (ruleNumber)
{
-
+
//
- // Rule 1: <openscope> ::= $Empty
+ // Rule 1: <openscope-ast> ::= $Empty
//
- case 1: { action.beforeConsume(); action. openASTScope(); break;
- }
-
+ case 1: { action. openASTScope(); break;
+ }
+
//
- // Rule 12: constant ::= integer
+ // Rule 10: literal ::= integer
//
- case 12: { action.beforeConsume(); action. consumeExpressionConstant(IASTLiteralExpression.lk_integer_constant); break;
- }
-
+ case 10: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_integer_constant); break;
+ }
+
//
- // Rule 13: constant ::= floating
+ // Rule 11: literal ::= floating
//
- case 13: { action.beforeConsume(); action. consumeExpressionConstant(IASTLiteralExpression.lk_float_constant); break;
- }
-
+ case 11: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_float_constant); break;
+ }
+
//
- // Rule 14: constant ::= charconst
+ // Rule 12: literal ::= charconst
//
- case 14: { action.beforeConsume(); action. consumeExpressionConstant(IASTLiteralExpression.lk_char_constant); break;
- }
-
+ case 12: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_char_constant); break;
+ }
+
//
- // Rule 15: constant ::= stringlit
+ // Rule 13: literal ::= stringlit
//
- case 15: { action.beforeConsume(); action. consumeExpressionConstant(IASTLiteralExpression.lk_string_literal); break;
- }
-
+ case 13: { action. consumeExpressionLiteral(IASTLiteralExpression.lk_string_literal); break;
+ }
+
//
- // Rule 17: primary_expression ::= identifier_or_completion
+ // Rule 15: primary_expression ::= primary_expression_id
//
- case 17: { action.beforeConsume(); action. consumeExpressionID(); break;
- }
-
+ case 15: { action. consumeExpressionID(); break;
+ }
+
//
- // Rule 18: primary_expression ::= ( expression )
+ // Rule 16: primary_expression ::= ( expression )
//
- case 18: { action.beforeConsume(); action. consumeExpressionBracketed(); break;
- }
-
+ case 16: { action. consumeExpressionBracketed(); break;
+ }
+
//
// Rule 20: postfix_expression ::= postfix_expression [ expression ]
//
- case 20: { action.beforeConsume(); action. consumeExpressionArraySubscript(); break;
- }
-
+ case 20: { action. consumeExpressionArraySubscript(); break;
+ }
+
//
- // Rule 21: postfix_expression ::= postfix_expression ( )
+ // Rule 21: postfix_expression ::= postfix_expression ( expression_list_opt )
//
- case 21: { action.beforeConsume(); action. consumeExpressionFunctionCall(false); break;
- }
-
+ case 21: { action. consumeExpressionFunctionCall(); break;
+ }
+
//
- // Rule 22: postfix_expression ::= postfix_expression ( argument_expression_list )
+ // Rule 22: postfix_expression ::= postfix_expression . member_name
//
- case 22: { action.beforeConsume(); action. consumeExpressionFunctionCall(true); break;
- }
-
+ case 22: { action. consumeExpressionFieldReference(false); break;
+ }
+
//
- // Rule 23: postfix_expression ::= postfix_expression . member_name
+ // Rule 23: postfix_expression ::= postfix_expression -> member_name
//
- case 23: { action.beforeConsume(); action. consumeExpressionFieldReference(false); break;
- }
-
+ case 23: { action. consumeExpressionFieldReference(true); break;
+ }
+
//
- // Rule 24: postfix_expression ::= postfix_expression -> member_name
+ // Rule 24: postfix_expression ::= postfix_expression ++
//
- case 24: { action.beforeConsume(); action. consumeExpressionFieldReference(true); break;
- }
-
+ case 24: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break;
+ }
+
//
- // Rule 25: postfix_expression ::= postfix_expression ++
+ // Rule 25: postfix_expression ::= postfix_expression --
//
- case 25: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixIncr); break;
- }
-
+ case 25: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break;
+ }
+
//
- // Rule 26: postfix_expression ::= postfix_expression --
+ // Rule 26: postfix_expression ::= ( type_name ) { <openscope-ast> initializer_list comma_opt }
//
- case 26: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_postFixDecr); break;
- }
-
+ case 26: { action. consumeExpressionTypeIdInitializer(); break;
+ }
+
//
- // Rule 27: postfix_expression ::= ( type_name ) { <openscope> initializer_list }
+ // Rule 32: unary_expression ::= ++ unary_expression
//
- case 27: { action.beforeConsume(); action. consumeExpressionTypeIdInitializer(); break;
- }
-
+ case 32: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break;
+ }
+
//
- // Rule 28: postfix_expression ::= ( type_name ) { <openscope> initializer_list , }
+ // Rule 33: unary_expression ::= -- unary_expression
//
- case 28: { action.beforeConsume(); action. consumeExpressionTypeIdInitializer(); break;
- }
-
+ case 33: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break;
+ }
+
//
- // Rule 30: argument_expression_list ::= assignment_expression
+ // Rule 34: unary_expression ::= & cast_expression
//
- case 30: { action.beforeConsume(); action. consumeExpressionList(true); break;
- }
-
+ case 34: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break;
+ }
+
//
- // Rule 31: argument_expression_list ::= argument_expression_list , assignment_expression
+ // Rule 35: unary_expression ::= * cast_expression
//
- case 31: { action.beforeConsume(); action. consumeExpressionList(false); break;
- }
-
+ case 35: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break;
+ }
+
//
- // Rule 33: unary_expression ::= ++ unary_expression
+ // Rule 36: unary_expression ::= + cast_expression
//
- case 33: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixIncr); break;
- }
-
+ case 36: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break;
+ }
+
//
- // Rule 34: unary_expression ::= -- unary_expression
+ // Rule 37: unary_expression ::= - cast_expression
//
- case 34: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_prefixDecr); break;
- }
-
+ case 37: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break;
+ }
+
//
- // Rule 35: unary_expression ::= & cast_expression
+ // Rule 38: unary_expression ::= ~ cast_expression
//
- case 35: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_amper); break;
- }
-
+ case 38: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break;
+ }
+
//
- // Rule 36: unary_expression ::= * cast_expression
+ // Rule 39: unary_expression ::= ! cast_expression
//
- case 36: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_star); break;
- }
-
+ case 39: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break;
+ }
+
//
- // Rule 37: unary_expression ::= + cast_expression
+ // Rule 40: unary_expression ::= sizeof unary_expression
//
- case 37: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_plus); break;
- }
-
+ case 40: { action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break;
+ }
+
//
- // Rule 38: unary_expression ::= - cast_expression
+ // Rule 41: unary_expression ::= sizeof ( type_name )
//
- case 38: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_minus); break;
- }
-
+ case 41: { action. consumeExpressionTypeId(IASTTypeIdExpression.op_sizeof); break;
+ }
+
//
- // Rule 39: unary_expression ::= ~ cast_expression
+ // Rule 43: cast_expression ::= ( type_name ) cast_expression
//
- case 39: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_tilde); break;
- }
-
+ case 43: { action. consumeExpressionCast(IASTCastExpression.op_cast); break;
+ }
+
//
- // Rule 40: unary_expression ::= ! cast_expression
+ // Rule 45: multiplicative_expression ::= multiplicative_expression * cast_expression
//
- case 40: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_not); break;
- }
-
+ case 45: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); break;
+ }
+
//
- // Rule 41: unary_expression ::= sizeof unary_expression
+ // Rule 46: multiplicative_expression ::= multiplicative_expression / cast_expression
//
- case 41: { action.beforeConsume(); action. consumeExpressionUnaryOperator(IASTUnaryExpression.op_sizeof); break;
- }
-
+ case 46: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); break;
+ }
+
//
- // Rule 42: unary_expression ::= sizeof ( type_name )
+ // Rule 47: multiplicative_expression ::= multiplicative_expression % cast_expression
//
- case 42: { action.beforeConsume(); action. consumeExpressionUnarySizeofTypeName(); break;
- }
-
+ case 47: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); break;
+ }
+
//
- // Rule 44: cast_expression ::= ( type_name ) cast_expression
+ // Rule 49: additive_expression ::= additive_expression + multiplicative_expression
//
- case 44: { action.beforeConsume(); action. consumeExpressionCast(); break;
- }
-
+ case 49: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); break;
+ }
+
//
- // Rule 46: multiplicative_expression ::= multiplicative_expression * cast_expression
+ // Rule 50: additive_expression ::= additive_expression - multiplicative_expression
//
- case 46: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiply); break;
- }
-
+ case 50: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); break;
+ }
+
//
- // Rule 47: multiplicative_expression ::= multiplicative_expression / cast_expression
+ // Rule 52: shift_expression ::= shift_expression << additive_expression
//
- case 47: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divide); break;
- }
-
+ case 52: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); break;
+ }
+
//
- // Rule 48: multiplicative_expression ::= multiplicative_expression % cast_expression
+ // Rule 53: shift_expression ::= shift_expression >> additive_expression
//
- case 48: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_modulo); break;
- }
-
+ case 53: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); break;
+ }
+
//
- // Rule 50: additive_expression ::= additive_expression + multiplicative_expression
+ // Rule 55: relational_expression ::= relational_expression < shift_expression
//
- case 50: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plus); break;
- }
-
+ case 55: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); break;
+ }
+
//
- // Rule 51: additive_expression ::= additive_expression - multiplicative_expression
+ // Rule 56: relational_expression ::= relational_expression > shift_expression
//
- case 51: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minus); break;
- }
-
+ case 56: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); break;
+ }
+
//
- // Rule 53: shift_expression ::= shift_expression << additive_expression
+ // Rule 57: relational_expression ::= relational_expression <= shift_expression
//
- case 53: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeft); break;
- }
-
+ case 57: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); break;
+ }
+
//
- // Rule 54: shift_expression ::= shift_expression >> additive_expression
+ // Rule 58: relational_expression ::= relational_expression >= shift_expression
//
- case 54: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRight); break;
- }
-
+ case 58: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); break;
+ }
+
//
- // Rule 56: relational_expression ::= relational_expression < shift_expression
+ // Rule 60: equality_expression ::= equality_expression == relational_expression
//
- case 56: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessThan); break;
- }
-
+ case 60: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); break;
+ }
+
//
- // Rule 57: relational_expression ::= relational_expression > shift_expression
+ // Rule 61: equality_expression ::= equality_expression != relational_expression
//
- case 57: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterThan); break;
- }
-
+ case 61: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); break;
+ }
+
//
- // Rule 58: relational_expression ::= relational_expression <= shift_expression
+ // Rule 63: AND_expression ::= AND_expression & equality_expression
//
- case 58: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_lessEqual); break;
- }
-
+ case 63: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); break;
+ }
+
//
- // Rule 59: relational_expression ::= relational_expression >= shift_expression
+ // Rule 65: exclusive_OR_expression ::= exclusive_OR_expression ^ AND_expression
//
- case 59: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_greaterEqual); break;
- }
-
+ case 65: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); break;
+ }
+
//
- // Rule 61: equality_expression ::= equality_expression == relational_expression
+ // Rule 67: inclusive_OR_expression ::= inclusive_OR_expression | exclusive_OR_expression
//
- case 61: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_equals); break;
- }
-
+ case 67: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); break;
+ }
+
//
- // Rule 62: equality_expression ::= equality_expression != relational_expression
+ // Rule 69: logical_AND_expression ::= logical_AND_expression && inclusive_OR_expression
//
- case 62: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_notequals); break;
- }
-
+ case 69: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); break;
+ }
+
//
- // Rule 64: AND_expression ::= AND_expression & equality_expression
+ // Rule 71: logical_OR_expression ::= logical_OR_expression || logical_AND_expression
//
- case 64: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAnd); break;
- }
-
+ case 71: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); break;
+ }
+
//
- // Rule 66: exclusive_OR_expression ::= exclusive_OR_expression ^ AND_expression
+ // Rule 73: conditional_expression ::= logical_OR_expression ? expression : conditional_expression
//
- case 66: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXor); break;
- }
-
+ case 73: { action. consumeExpressionConditional(); break;
+ }
+
//
- // Rule 68: inclusive_OR_expression ::= inclusive_OR_expression | exclusive_OR_expression
+ // Rule 75: assignment_expression ::= unary_expression = assignment_expression
//
- case 68: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOr); break;
- }
-
+ case 75: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break;
+ }
+
//
- // Rule 70: logical_AND_expression ::= logical_AND_expression && inclusive_OR_expression
+ // Rule 76: assignment_expression ::= unary_expression *= assignment_expression
//
- case 70: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalAnd); break;
- }
-
+ case 76: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); break;
+ }
+
//
- // Rule 72: logical_OR_expression ::= logical_OR_expression || logical_AND_expression
+ // Rule 77: assignment_expression ::= unary_expression /= assignment_expression
//
- case 72: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_logicalOr); break;
- }
-
+ case 77: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); break;
+ }
+
//
- // Rule 74: conditional_expression ::= logical_OR_expression ? expression : conditional_expression
+ // Rule 78: assignment_expression ::= unary_expression %= assignment_expression
//
- case 74: { action.beforeConsume(); action. consumeExpressionConditional(); break;
- }
-
+ case 78: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); break;
+ }
+
//
- // Rule 76: assignment_expression ::= unary_expression = assignment_expression
+ // Rule 79: assignment_expression ::= unary_expression += assignment_expression
//
- case 76: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_assign); break;
- }
-
+ case 79: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); break;
+ }
+
//
- // Rule 77: assignment_expression ::= unary_expression *= assignment_expression
+ // Rule 80: assignment_expression ::= unary_expression -= assignment_expression
//
- case 77: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_multiplyAssign); break;
- }
-
- //
- // Rule 78: assignment_expression ::= unary_expression /= assignment_expression
- //
- case 78: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_divideAssign); break;
- }
-
- //
- // Rule 79: assignment_expression ::= unary_expression %= assignment_expression
- //
- case 79: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_moduloAssign); break;
- }
-
- //
- // Rule 80: assignment_expression ::= unary_expression += assignment_expression
- //
- case 80: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_plusAssign); break;
- }
-
- //
- // Rule 81: assignment_expression ::= unary_expression -= assignment_expression
- //
- case 81: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); break;
- }
-
- //
- // Rule 82: assignment_expression ::= unary_expression <<= assignment_expression
- //
- case 82: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); break;
- }
-
- //
- // Rule 83: assignment_expression ::= unary_expression >>= assignment_expression
- //
- case 83: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); break;
- }
-
- //
- // Rule 84: assignment_expression ::= unary_expression &= assignment_expression
- //
- case 84: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); break;
- }
-
- //
- // Rule 85: assignment_expression ::= unary_expression ^= assignment_expression
- //
- case 85: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); break;
- }
-
- //
- // Rule 86: assignment_expression ::= unary_expression |= assignment_expression
- //
- case 86: { action.beforeConsume(); action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); break;
- }
-
- //
- // Rule 87: expression_in_statement ::= expression_list
- //
- case 87: { action.beforeConsume(); action. consumeExpression(); break;
- }
-
- //
- // Rule 88: expression ::= expression_list
- //
- case 88: { action.beforeConsume(); action. consumeExpression(); break;
- }
-
- //
- // Rule 89: expression_list ::= assignment_expression
- //
- case 89: { action.beforeConsume(); action. consumeExpressionList(true); break;
- }
-
- //
- // Rule 90: expression_list ::= expression_list , assignment_expression
- //
- case 90: { action.beforeConsume(); action. consumeExpressionList(false); break;
- }
-
- //
- // Rule 98: statement ::= ERROR_TOKEN
- //
- case 98: { action.beforeConsume(); action. consumeStatementProblem(); break;
- }
-
- //
- // Rule 99: labeled_statement ::= label_identifier : statement
- //
- case 99: { action.beforeConsume(); action. consumeStatementLabeled(); break;
- }
-
- //
- // Rule 100: labeled_statement ::= case constant_expression :
- //
- case 100: { action.beforeConsume(); action. consumeStatementCase(); break;
- }
-
- //
- // Rule 101: labeled_statement ::= default :
- //
- case 101: { action.beforeConsume(); action. consumeStatementDefault(); break;
- }
-
- //
- // Rule 102: label_identifier ::= identifier
- //
- case 102: { action.beforeConsume(); action. consumeName(); break;
- }
-
- //
- // Rule 103: compound_statement ::= { }
- //
- case 103: { action.beforeConsume(); action. consumeStatementEmptyCompoundStatement(); break;
- }
-
- //
- // Rule 104: compound_statement ::= { <openscope> block_item_list }
- //
- case 104: { action.beforeConsume(); action. consumeStatementCompoundStatement(); break;
- }
-
- //
- // Rule 108: block_item ::= declaration
- //
- case 108: { action.beforeConsume(); action. consumeStatementDeclaration(); break;
- }
-
- //
- // Rule 109: expression_statement ::= ;
- //
- case 109: { action.beforeConsume(); action. consumeStatementNull(); break;
- }
-
- //
- // Rule 110: expression_statement ::= expression_in_statement ;
- //
- case 110: { action.beforeConsume(); action. consumeStatementExpression(); break;
- }
-
- //
- // Rule 111: selection_statement ::= if ( expression ) statement
- //
- case 111: { action.beforeConsume(); action. consumeStatementIfThen(); break;
- }
-
- //
- // Rule 112: selection_statement ::= if ( expression ) statement else statement
- //
- case 112: { action.beforeConsume(); action. consumeStatementIfThenElse(); break;
- }
-
- //
- // Rule 113: selection_statement ::= switch ( expression ) statement
- //
- case 113: { action.beforeConsume(); action. consumeStatementSwitch(); break;
- }
-
- //
- // Rule 114: iteration_statement ::= do statement while ( expression ) ;
- //
- case 114: { action.beforeConsume(); action. consumeStatementDoLoop(); break;
- }
-
+ case 80: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_minusAssign); break;
+ }
+
//
- // Rule 115: iteration_statement ::= while ( expression ) statement
+ // Rule 81: assignment_expression ::= unary_expression <<= assignment_expression
//
- case 115: { action.beforeConsume(); action. consumeStatementWhileLoop(); break;
- }
-
+ case 81: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftLeftAssign); break;
+ }
+
//
- // Rule 116: iteration_statement ::= for ( expression ; expression ; expression ) statement
+ // Rule 82: assignment_expression ::= unary_expression >>= assignment_expression
//
- case 116: { action.beforeConsume(); action. consumeStatementForLoop(true, true, true); break;
- }
-
+ case 82: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_shiftRightAssign); break;
+ }
+
//
- // Rule 117: iteration_statement ::= for ( expression ; expression ; ) statement
+ // Rule 83: assignment_expression ::= unary_expression &= assignment_expression
//
- case 117: { action.beforeConsume(); action. consumeStatementForLoop(true, true, false); break;
- }
-
+ case 83: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryAndAssign); break;
+ }
+
//
- // Rule 118: iteration_statement ::= for ( expression ; ; expression ) statement
+ // Rule 84: assignment_expression ::= unary_expression ^= assignment_expression
//
- case 118: { action.beforeConsume(); action. consumeStatementForLoop(true, false, true); break;
- }
-
+ case 84: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryXorAssign); break;
+ }
+
//
- // Rule 119: iteration_statement ::= for ( expression ; ; ) statement
+ // Rule 85: assignment_expression ::= unary_expression |= assignment_expression
//
- case 119: { action.beforeConsume(); action. consumeStatementForLoop(true, false, false); break;
- }
-
+ case 85: { action. consumeExpressionBinaryOperator(IASTBinaryExpression.op_binaryOrAssign); break;
+ }
+
//
- // Rule 120: iteration_statement ::= for ( ; expression ; expression ) statement
+ // Rule 88: expression_list ::= <openscope-ast> expression_list_actual
//
- case 120: { action.beforeConsume(); action. consumeStatementForLoop(false, true, true); break;
- }
-
+ case 88: { action. consumeExpressionList(); break;
+ }
+
//
- // Rule 121: iteration_statement ::= for ( ; expression ; ) statement
+ // Rule 90: expression_list_opt ::= $Empty
//
- case 121: { action.beforeConsume(); action. consumeStatementForLoop(false, true, false); break;
- }
-
+ case 90: { action. consumeEmpty(); break;
+ }
+
//
- // Rule 122: iteration_statement ::= for ( ; ; expression ) statement
+ // Rule 100: statement ::= ERROR_TOKEN
//
- case 122: { action.beforeConsume(); action. consumeStatementForLoop(false, false, true); break;
- }
-
+ case 100: { action. consumeStatementProblem(); break;
+ }
+
//
- // Rule 123: iteration_statement ::= for ( ; ; ) statement
+ // Rule 101: labeled_statement ::= identifier_or_typedefname : statement
//
- case 123: { action.beforeConsume(); action. consumeStatementForLoop(false, false, false); break;
- }
-
+ case 101: { action. consumeStatementLabeled(); break;
+ }
+
//
- // Rule 124: iteration_statement ::= for ( declaration expression ; expression ) statement
+ // Rule 102: labeled_statement ::= case constant_expression :
//
- case 124: { action.beforeConsume(); action. consumeStatementForLoop(true, true, true); break;
- }
-
+ case 102: { action. consumeStatementCase(); break;
+ }
+
//
- // Rule 125: iteration_statement ::= for ( declaration expression ; ) statement
+ // Rule 103: labeled_statement ::= default :
//
- case 125: { action.beforeConsume(); action. consumeStatementForLoop(true, true, false); break;
- }
-
+ case 103: { action. consumeStatementDefault(); break;
+ }
+
//
- // Rule 126: iteration_statement ::= for ( declaration ; expression ) statement
+ // Rule 104: compound_statement ::= { }
//
- case 126: { action.beforeConsume(); action. consumeStatementForLoop(true, false, true); break;
- }
-
+ case 104: { action. consumeStatementCompoundStatement(false); break;
+ }
+
//
- // Rule 127: iteration_statement ::= for ( declaration ; ) statement
+ // Rule 105: compound_statement ::= { <openscope-ast> block_item_list }
//
- case 127: { action.beforeConsume(); action. consumeStatementForLoop(true, false, false); break;
- }
-
+ case 105: { action. consumeStatementCompoundStatement(true); break;
+ }
+
//
- // Rule 128: jump_statement ::= goto goto_identifier ;
+ // Rule 109: block_item ::= declaration
//
- case 128: { action.beforeConsume(); action. consumeStatementGoto(); break;
- }
-
+ case 109: { action. consumeStatementDeclarationWithDisambiguation(); break;
+ }
+
//
- // Rule 129: jump_statement ::= continue ;
+ // Rule 110: expression_statement ::= ;
//
- case 129: { action.beforeConsume(); action. consumeStatementContinue(); break;
- }
-
+ case 110: { action. consumeStatementNull(); break;
+ }
+
//
- // Rule 130: jump_statement ::= break ;
+ // Rule 111: expression_statement ::= expression_in_statement ;
//
- case 130: { action.beforeConsume(); action. consumeStatementBreak(); break;
- }
-
+ case 111: { action. consumeStatementExpression(); break;
+ }
+
//
- // Rule 131: jump_statement ::= return ;
+ // Rule 112: selection_statement ::= if ( expression ) statement
//
- case 131: { action.beforeConsume(); action. consumeStatementReturn(false); break;
- }
-
+ case 112: { action. consumeStatementIf(false); break;
+ }
+
//
- // Rule 132: jump_statement ::= return expression ;
+ // Rule 113: selection_statement ::= if ( expression ) statement else statement
//
- case 132: { action.beforeConsume(); action. consumeStatementReturn(true); break;
- }
-
+ case 113: { action. consumeStatementIf(true); break;
+ }
+
//
- // Rule 133: goto_identifier ::= identifier
+ // Rule 114: selection_statement ::= switch ( expression ) statement
//
- case 133: { action.beforeConsume(); action. consumeName(); break;
- }
-
+ case 114: { action. consumeStatementSwitch(); break;
+ }
+
//
- // Rule 134: declaration ::= declaration_specifiers ;
+ // Rule 116: expression_opt ::= $Empty
//
- case 134: { action.beforeConsume(); action. consumeDeclaration(false); break;
- }
-
+ case 116: { action. consumeEmpty(); break;
+ }
+
//
- // Rule 135: declaration ::= declaration_specifiers <openscope> init_declarator_list ;
+ // Rule 117: iteration_statement ::= do statement while ( expression ) ;
//
- case 135: { action.beforeConsume(); action. consumeDeclaration(true); break;
- }
-
+ case 117: { action. consumeStatementDoLoop(); break;
+ }
+
//
- // Rule 136: declaration_specifiers ::= <openscope> simple_declaration_specifiers
+ // Rule 118: iteration_statement ::= while ( expression ) statement
//
- case 136: { action.beforeConsume(); action. consumeDeclarationSpecifiersSimple(); break;
- }
-
+ case 118: { action. consumeStatementWhileLoop(); break;
+ }
+
//
- // Rule 137: declaration_specifiers ::= <openscope> struct_or_union_declaration_specifiers
+ // Rule 119: iteration_statement ::= for ( expression_opt ; expression_opt ; expression_opt ) statement
//
- case 137: { action.beforeConsume(); action. consumeDeclarationSpecifiersStructUnionEnum(); break;
- }
-
+ case 119: { action. consumeStatementForLoop(); break;
+ }
+
//
- // Rule 138: declaration_specifiers ::= <openscope> enum_declaration_specifiers
+ // Rule 120: iteration_statement ::= for ( declaration expression_opt ; expression_opt ) statement
//
- case 138: { action.beforeConsume(); action. consumeDeclarationSpecifiersStructUnionEnum(); break;
- }
-
+ case 120: { action. consumeStatementForLoop(); break;
+ }
+
//
- // Rule 139: declaration_specifiers ::= <openscope> typdef_name_declaration_specifiers
+ // Rule 121: jump_statement ::= goto identifier_or_typedefname ;
//
- case 139: { action.beforeConsume(); action. consumeDeclarationSpecifiersTypedefName(); break;
- }
-
+ case 121: { action. consumeStatementGoto(); break;
+ }
+
//
- // Rule 161: init_declarator ::= declarator = initializer
+ // Rule 122: jump_statement ::= continue ;
//
- case 161: { action.beforeConsume(); action. consumeDeclaratorWithInitializer(); break;
- }
-
+ case 122: { action. consumeStatementContinue(); break;
+ }
+
//
- // Rule 162: storage_class_specifier ::= typedef
+ // Rule 123: jump_statement ::= break ;
//
- case 162: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 123: { action. consumeStatementBreak(); break;
+ }
+
//
- // Rule 163: storage_class_specifier ::= extern
+ // Rule 124: jump_statement ::= return ;
//
- case 163: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 124: { action. consumeStatementReturn(false); break;
+ }
+
//
- // Rule 164: storage_class_specifier ::= static
+ // Rule 125: jump_statement ::= return expression ;
//
- case 164: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 125: { action. consumeStatementReturn(true); break;
+ }
+
//
- // Rule 165: storage_class_specifier ::= auto
+ // Rule 126: declaration ::= declaration_specifiers ;
//
- case 165: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 126: { action. consumeDeclarationSimple(false); break;
+ }
+
//
- // Rule 166: storage_class_specifier ::= register
+ // Rule 127: declaration ::= declaration_specifiers <openscope-ast> init_declarator_list ;
//
- case 166: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 127: { action. consumeDeclarationSimple(true); break;
+ }
+
//
- // Rule 167: type_specifier ::= void
+ // Rule 128: declaration_specifiers ::= <openscope-ast> simple_declaration_specifiers
//
- case 167: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 128: { action. consumeDeclarationSpecifiersSimple(); break;
+ }
+
//
- // Rule 168: type_specifier ::= char
+ // Rule 129: declaration_specifiers ::= <openscope-ast> struct_or_union_declaration_specifiers
//
- case 168: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 129: { action. consumeDeclarationSpecifiersStructUnionEnum(); break;
+ }
+
//
- // Rule 169: type_specifier ::= short
+ // Rule 130: declaration_specifiers ::= <openscope-ast> elaborated_declaration_specifiers
//
- case 169: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 130: { action. consumeDeclarationSpecifiersStructUnionEnum(); break;
+ }
+
//
- // Rule 170: type_specifier ::= int
+ // Rule 131: declaration_specifiers ::= <openscope-ast> enum_declaration_specifiers
//
- case 170: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 131: { action. consumeDeclarationSpecifiersStructUnionEnum(); break;
+ }
+
//
- // Rule 171: type_specifier ::= long
+ // Rule 132: declaration_specifiers ::= <openscope-ast> typdef_name_declaration_specifiers
//
- case 171: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 132: { action. consumeDeclarationSpecifiersTypedefName(); break;
+ }
+
//
- // Rule 172: type_specifier ::= float
+ // Rule 157: init_declarator ::= complete_declarator = initializer
//
- case 172: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 157: { action. consumeDeclaratorWithInitializer(true); break;
+ }
+
//
- // Rule 173: type_specifier ::= double
+ // Rule 159: storage_class_specifier ::= storage_class_specifier_token
//
- case 173: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 159: { action. consumeDeclSpecToken(); break;
+ }
+
//
- // Rule 174: type_specifier ::= signed
+ // Rule 165: simple_type_specifier ::= simple_type_specifier_token
//
- case 174: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 165: { action. consumeDeclSpecToken(); break;
+ }
+
//
- // Rule 175: type_specifier ::= unsigned
+ // Rule 178: typedef_name_in_declspec ::= Completion
//
- case 175: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 178: { action. consumeDeclSpecToken(); break;
+ }
+
//
- // Rule 176: type_specifier ::= _Bool
+ // Rule 179: typedef_name_in_declspec ::= identifier
//
- case 176: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 179: { action. consumeDeclSpecToken(); break;
+ }
+
//
- // Rule 177: type_specifier ::= _Complex
+ // Rule 182: struct_or_union_specifier ::= struct { <openscope-ast> struct_declaration_list_opt }
//
- case 177: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 182: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_struct); break;
+ }
+
//
- // Rule 178: type_specifier ::= _Imaginary
+ // Rule 183: struct_or_union_specifier ::= union { <openscope-ast> struct_declaration_list_opt }
//
- case 178: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 183: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_union); break;
+ }
+
//
- // Rule 179: typedef_name ::= identifier_or_completion
+ // Rule 184: struct_or_union_specifier ::= struct identifier_or_typedefname { <openscope-ast> struct_declaration_list_opt }
//
- case 179: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 184: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_struct); break;
+ }
+
//
- // Rule 180: struct_or_union_specifier ::= struct { <openscope> struct_declaration_list_opt }
+ // Rule 185: struct_or_union_specifier ::= union identifier_or_typedefname { <openscope-ast> struct_declaration_list_opt }
//
- case 180: { action.beforeConsume(); action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_struct); break;
- }
-
+ case 185: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_union); break;
+ }
+
//
- // Rule 181: struct_or_union_specifier ::= union { <openscope> struct_declaration_list_opt }
+ // Rule 186: elaborated_specifier ::= struct identifier_or_typedefname
//
- case 181: { action.beforeConsume(); action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_union); break;
- }
-
+ case 186: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break;
+ }
+
//
- // Rule 182: struct_or_union_specifier ::= struct struct_or_union_identifier { <openscope> struct_declaration_list_opt }
+ // Rule 187: elaborated_specifier ::= union identifier_or_typedefname
//
- case 182: { action.beforeConsume(); action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_struct); break;
- }
-
+ case 187: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break;
+ }
+
//
- // Rule 183: struct_or_union_specifier ::= union struct_or_union_identifier { <openscope> struct_declaration_list_opt }
+ // Rule 188: elaborated_specifier ::= enum identifier_or_typedefname
//
- case 183: { action.beforeConsume(); action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_union); break;
- }
-
+ case 188: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break;
+ }
+
//
- // Rule 184: struct_or_union_specifier ::= struct struct_or_union_identifier
+ // Rule 193: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
//
- case 184: { action.beforeConsume(); action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_struct); break;
- }
-
+ case 193: { action. consumeStructDeclaration(true); break;
+ }
+
//
- // Rule 185: struct_or_union_specifier ::= union struct_or_union_identifier
+ // Rule 194: struct_declaration ::= specifier_qualifier_list ;
//
- case 185: { action.beforeConsume(); action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_union); break;
- }
-
+ case 194: { action. consumeStructDeclaration(false); break;
+ }
+
//
- // Rule 186: struct_or_union_identifier ::= identifier
+ // Rule 195: struct_declaration ::= ERROR_TOKEN
//
- case 186: { action.beforeConsume(); action. consumeName(); break;
- }
-
+ case 195: { action. consumeDeclarationProblem(); break;
+ }
+
//
- // Rule 191: struct_declaration ::= specifier_qualifier_list <openscope> struct_declarator_list ;
+ // Rule 201: struct_declarator ::= : constant_expression
//
- case 191: { action.beforeConsume(); action. consumeStructDeclaration(true); break;
- }
-
+ case 201: { action. consumeBitField(false); break;
+ }
+
//
- // Rule 192: struct_declaration ::= specifier_qualifier_list ;
+ // Rule 202: struct_declarator ::= declarator : constant_expression
//
- case 192: { action.beforeConsume(); action. consumeStructDeclaration(false); break;
- }
-
+ case 202: { action. consumeBitField(true); break;
+ }
+
//
- // Rule 197: struct_declarator ::= : constant_expression
+ // Rule 203: enum_specifier ::= enum { <openscope-ast> enumerator_list_opt comma_opt }
//
- case 197: { action.beforeConsume(); action. consumeStructBitField(false); break;
- }
-
+ case 203: { action. consumeTypeSpecifierEnumeration(false); break;
+ }
+
//
- // Rule 198: struct_declarator ::= declarator : constant_expression
+ // Rule 204: enum_specifier ::= enum identifier_or_typedefname { <openscope-ast> enumerator_list_opt comma_opt }
//
- case 198: { action.beforeConsume(); action. consumeStructBitField(true); break;
- }
-
+ case 204: { action. consumeTypeSpecifierEnumeration(true); break;
+ }
+
//
- // Rule 199: enum_identifier ::= identifier
+ // Rule 209: enumerator ::= identifier_or_typedefname
//
- case 199: { action.beforeConsume(); action. consumeName(); break;
- }
-
+ case 209: { action. consumeEnumerator(false); break;
+ }
+
//
- // Rule 200: enum_specifier ::= enum { <openscope> enumerator_list_opt }
+ // Rule 210: enumerator ::= identifier_or_typedefname = constant_expression
//
- case 200: { action.beforeConsume(); action. consumeTypeSpecifierEnumeration(false); break;
- }
-
+ case 210: { action. consumeEnumerator(true); break;
+ }
+
//
- // Rule 201: enum_specifier ::= enum enum_identifier { <openscope> enumerator_list_opt }
+ // Rule 211: type_qualifier ::= type_qualifier_token
//
- case 201: { action.beforeConsume(); action. consumeTypeSpecifierEnumeration(true); break;
- }
-
+ case 211: { action. consumeDeclSpecToken(); break;
+ }
+
//
- // Rule 202: enum_specifier ::= enum { <openscope> enumerator_list_opt , }
+ // Rule 215: function_specifier ::= inline
//
- case 202: { action.beforeConsume(); action. consumeTypeSpecifierEnumeration(false); break;
- }
-
+ case 215: { action. consumeDeclSpecToken(); break;
+ }
+
//
- // Rule 203: enum_specifier ::= enum enum_identifier { <openscope> enumerator_list_opt , }
+ // Rule 217: declarator ::= <openscope-ast> pointer_seq direct_declarator
//
- case 203: { action.beforeConsume(); action. consumeTypeSpecifierEnumeration(true); break;
- }
-
+ case 217: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
//
- // Rule 204: enum_specifier ::= enum enum_identifier
+ // Rule 222: basic_direct_declarator ::= declarator_id_name
//
- case 204: { action.beforeConsume(); action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break;
- }
-
+ case 222: { action. consumeDirectDeclaratorIdentifier(); break;
+ }
+
//
- // Rule 209: enumerator ::= enum_identifier
+ // Rule 223: basic_direct_declarator ::= ( declarator )
//
- case 209: { action.beforeConsume(); action. consumeEnumerator(false); break;
- }
-
+ case 223: { action. consumeDirectDeclaratorBracketed(); break;
+ }
+
//
- // Rule 210: enumerator ::= enum_identifier = constant_expression
+ // Rule 224: declarator_id_name ::= identifier
//
- case 210: { action.beforeConsume(); action. consumeEnumerator(true); break;
- }
-
+ case 224: { action. consumeIdentifierName(); break;
+ }
+
//
- // Rule 211: type_qualifier ::= const
+ // Rule 225: array_direct_declarator ::= basic_direct_declarator array_modifier
//
- case 211: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 225: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
//
- // Rule 212: type_qualifier ::= restrict
+ // Rule 226: array_direct_declarator ::= array_direct_declarator array_modifier
//
- case 212: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 226: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
//
- // Rule 213: type_qualifier ::= volatile
+ // Rule 228: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
//
- case 213: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 228: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
+ }
+
//
- // Rule 214: function_specifier ::= inline
+ // Rule 229: function_direct_declarator ::= basic_direct_declarator ( )
//
- case 214: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 229: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
+ }
+
//
- // Rule 216: declarator ::= <openscope> pointer direct_declarator
+ // Rule 231: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
//
- case 216: { action.beforeConsume(); action. consumeDeclaratorWithPointer(true); break;
- }
-
+ case 231: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
//
- // Rule 217: direct_declarator ::= identifier
+ // Rule 232: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
//
- case 217: { action.beforeConsume(); action. consumeDirectDeclaratorIdentifier(); break;
- }
-
+ case 232: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break;
+ }
+
//
- // Rule 218: direct_declarator ::= ( declarator )
+ // Rule 234: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
//
- case 218: { action.beforeConsume(); action. consumeDirectDeclaratorBracketed(); break;
- }
-
+ case 234: { action. consumeDeclaratorWithPointer(true); break;
+ }
+
//
- // Rule 221: array_direct_declarator ::= direct_declarator array_modifier
+ // Rule 235: identifier_list ::= identifier
//
- case 221: { action.beforeConsume(); action. consumeDirectDeclaratorArrayDeclarator(); break;
- }
-
+ case 235: { action. consumeIdentifierKnR(); break;
+ }
+
//
- // Rule 222: function_direct_declarator ::= direct_declarator ( <openscope> parameter_type_list )
+ // Rule 236: identifier_list ::= identifier_list , identifier
//
- case 222: { action.beforeConsume(); action. consumeDirectDeclaratorFunctionDeclarator(true); break;
- }
-
+ case 236: { action. consumeIdentifierKnR(); break;
+ }
+
//
- // Rule 223: function_direct_declarator ::= direct_declarator ( )
+ // Rule 237: array_modifier ::= [ ]
//
- case 223: { action.beforeConsume(); action. consumeDirectDeclaratorFunctionDeclarator(false); break;
- }
-
+ case 237: { action. consumeDirectDeclaratorArrayModifier(false); break;
+ }
+
//
- // Rule 225: function_declarator ::= <openscope> pointer function_direct_declarator
+ // Rule 238: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
//
- case 225: { action.beforeConsume(); action. consumeDeclaratorWithPointer(true); break;
- }
-
+ case 238: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break;
+ }
+
//
- // Rule 226: knr_direct_declarator ::= direct_declarator ( <openscope> identifier_list )
+ // Rule 239: array_modifier ::= [ assignment_expression ]
//
- case 226: { action.beforeConsume(); action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break;
- }
-
+ case 239: { action. consumeDirectDeclaratorArrayModifier(true); break;
+ }
+
//
- // Rule 228: knr_function_declarator ::= <openscope> pointer knr_direct_declarator
+ // Rule 240: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
//
- case 228: { action.beforeConsume(); action. consumeDeclaratorWithPointer(true); break;
- }
-
+ case 240: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break;
+ }
+
//
- // Rule 229: array_modifier ::= [ ]
+ // Rule 241: array_modifier ::= [ static assignment_expression ]
//
- case 229: { action.beforeConsume(); action. consumeDirectDeclaratorArrayModifier(false); break;
- }
-
+ case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break;
+ }
+
//
- // Rule 230: array_modifier ::= [ <openscope> type_qualifier_list ]
+ // Rule 242: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
//
- case 230: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break;
- }
-
+ case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
+ }
+
//
- // Rule 231: array_modifier ::= [ assignment_expression ]
+ // Rule 243: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
//
- case 231: { action.beforeConsume(); action. consumeDirectDeclaratorArrayModifier(true ); break;
- }
-
+ case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
+ }
+
//
- // Rule 232: array_modifier ::= [ <openscope> type_qualifier_list assignment_expression ]
+ // Rule 244: array_modifier ::= [ * ]
//
- case 232: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true ); break;
- }
-
+ case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break;
+ }
+
//
- // Rule 233: array_modifier ::= [ static assignment_expression ]
+ // Rule 245: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
//
- case 233: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true ); break;
- }
-
+ case 245: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break;
+ }
+
//
- // Rule 234: array_modifier ::= [ static <openscope> type_qualifier_list assignment_expression ]
+ // Rule 247: pointer_seq ::= *
//
- case 234: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true ); break;
- }
-
+ case 247: { action. consumePointer(); break;
+ }
+
//
- // Rule 235: array_modifier ::= [ <openscope> type_qualifier_list static assignment_expression ]
+ // Rule 248: pointer_seq ::= pointer_seq *
//
- case 235: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true ); break;
- }
-
+ case 248: { action. consumePointer(); break;
+ }
+
//
- // Rule 236: array_modifier ::= [ * ]
+ // Rule 249: pointer_seq ::= * <openscope-ast> type_qualifier_list
//
- case 236: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break;
- }
-
+ case 249: { action. consumePointerTypeQualifierList(); break;
+ }
+
//
- // Rule 237: array_modifier ::= [ <openscope> type_qualifier_list * ]
+ // Rule 250: pointer_seq ::= pointer_seq * <openscope-ast> type_qualifier_list
//
- case 237: { action.beforeConsume(); action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break;
- }
-
+ case 250: { action. consumePointerTypeQualifierList(); break;
+ }
+
//
- // Rule 238: pointer ::= *
+ // Rule 253: parameter_type_list ::= parameter_list
//
- case 238: { action.beforeConsume(); action. consumePointer(); break;
- }
-
+ case 253: { action. consumeEmpty(); break;
+ }
+
//
- // Rule 239: pointer ::= pointer *
+ // Rule 254: parameter_type_list ::= parameter_list , ...
//
- case 239: { action.beforeConsume(); action. consumePointer(); break;
- }
-
+ case 254: { action. consumePlaceHolder(); break;
+ }
+
//
- // Rule 240: pointer ::= * <openscope> type_qualifier_list
+ // Rule 255: parameter_type_list ::= ...
//
- case 240: { action.beforeConsume(); action. consumePointerTypeQualifierList(); break;
- }
-
+ case 255: { action. consumePlaceHolder(); break;
+ }
+
//
- // Rule 241: pointer ::= pointer * <openscope> type_qualifier_list
+ // Rule 258: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
//
- case 241: { action.beforeConsume(); action. consumePointerTypeQualifierList(); break;
- }
-
+ case 258: { action. consumeParameterDeclaration(); break;
+ }
+
//
- // Rule 249: parameter_declaration ::= declaration_specifiers init_declarator
+ // Rule 259: parameter_declaration ::= declaration_specifiers
//
- case 249: { action.beforeConsume(); action. consumeParameterDeclaration(true); break;
- }
-
+ case 259: { action. consumeParameterDeclarationWithoutDeclarator(); break;
+ }
+
//
- // Rule 250: parameter_declaration ::= declaration_specifiers
+ // Rule 262: type_name ::= specifier_qualifier_list
//
- case 250: { action.beforeConsume(); action. consumeParameterDeclaration(false); break;
- }
-
+ case 262: { action. consumeTypeId(false); break;
+ }
+
//
- // Rule 251: parameter_declaration ::= declaration_specifiers abstract_declarator
+ // Rule 263: type_name ::= specifier_qualifier_list abstract_declarator
//
- case 251: { action.beforeConsume(); action. consumeParameterDeclaration(true); break;
- }
-
+ case 263: { action. consumeTypeId(true); break;
+ }
+
//
- // Rule 252: identifier_list ::= identifier
+ // Rule 265: abstract_declarator ::= <openscope-ast> pointer_seq
//
- case 252: { action.beforeConsume(); action. consumeName(); break;
- }
-
+ case 265: { action. consumeDeclaratorWithPointer(false); break;
+ }
+
//
- // Rule 253: identifier_list ::= identifier_list , identifier
+ // Rule 266: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
//
- case 253: { action.beforeConsume(); action. consumeName(); break;
- }
-
+ case 266: { action. consumeDeclaratorWithPointer(false); break;
+ }
+
//
- // Rule 254: type_name ::= specifier_qualifier_list
+ // Rule 270: basic_direct_abstract_declarator ::= ( abstract_declarator )
//
- case 254: { action.beforeConsume(); action. consumeTypeId(false); break;
- }
-
+ case 270: { action. consumeDirectDeclaratorBracketed(); break;
+ }
+
//
- // Rule 255: type_name ::= specifier_qualifier_list abstract_declarator
+ // Rule 271: array_direct_abstract_declarator ::= array_modifier
//
- case 255: { action.beforeConsume(); action. consumeTypeId(true); break;
- }
-
+ case 271: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
+ }
+
//
- // Rule 256: abstract_declarator ::= <openscope> pointer
+ // Rule 272: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
//
- case 256: { action.beforeConsume(); action. consumeDeclaratorWithPointer(false); break;
- }
-
+ case 272: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
//
- // Rule 258: abstract_declarator ::= <openscope> pointer direct_abstract_declarator
+ // Rule 273: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
//
- case 258: { action.beforeConsume(); action. consumeDeclaratorWithPointer(true); break;
- }
-
+ case 273: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
+ }
+
//
- // Rule 259: direct_abstract_declarator ::= ( abstract_declarator )
+ // Rule 274: function_direct_abstract_declarator ::= ( )
//
- case 259: { action.beforeConsume(); action. consumeDirectDeclaratorBracketed(); break;
- }
-
+ case 274: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break;
+ }
+
//
- // Rule 260: direct_abstract_declarator ::= array_modifier
+ // Rule 275: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
//
- case 260: { action.beforeConsume(); action. consumeAbstractDeclaratorArrayModifier(false); break;
- }
-
+ case 275: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
+ }
+
//
- // Rule 261: direct_abstract_declarator ::= direct_abstract_declarator array_modifier
+ // Rule 276: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
//
- case 261: { action.beforeConsume(); action. consumeAbstractDeclaratorArrayModifier(true); break;
- }
-
+ case 276: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
+ }
+
//
- // Rule 262: direct_abstract_declarator ::= ( )
+ // Rule 277: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
//
- case 262: { action.beforeConsume(); action. consumeAbstractDeclaratorFunctionDeclarator(false, false); break;
- }
-
+ case 277: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
+ }
+
//
- // Rule 263: direct_abstract_declarator ::= direct_abstract_declarator ( )
+ // Rule 278: initializer ::= assignment_expression
//
- case 263: { action.beforeConsume(); action. consumeAbstractDeclaratorFunctionDeclarator(true, false); break;
- }
-
+ case 278: { action. consumeInitializer(); break;
+ }
+
//
- // Rule 264: direct_abstract_declarator ::= ( <openscope> parameter_type_list )
+ // Rule 279: initializer ::= { <openscope-ast> initializer_list comma_opt }
//
- case 264: { action.beforeConsume(); action. consumeAbstractDeclaratorFunctionDeclarator(false, true); break;
- }
-
+ case 279: { action. consumeInitializerList(); break;
+ }
+
//
- // Rule 265: direct_abstract_declarator ::= direct_abstract_declarator ( <openscope> parameter_type_list )
+ // Rule 284: designated_initializer ::= <openscope-ast> designation = initializer
//
- case 265: { action.beforeConsume(); action. consumeAbstractDeclaratorFunctionDeclarator(true, true); break;
- }
-
+ case 284: { action. consumeInitializerDesignated(); break;
+ }
+
//
- // Rule 266: initializer ::= assignment_expression
+ // Rule 288: designator_base ::= [ constant_expression ]
//
- case 266: { action.beforeConsume(); action. consumeInitializer(); break;
- }
-
+ case 288: { action. consumeDesignatorArray(); break;
+ }
+
//
- // Rule 267: initializer ::= { <openscope> initializer_list }
+ // Rule 289: designator_base ::= . identifier_or_typedefname
//
- case 267: { action.beforeConsume(); action. consumeInitializerList(); break;
- }
-
+ case 289: { action. consumeDesignatorField(); break;
+ }
+
//
- // Rule 268: initializer ::= { <openscope> initializer_list , }
+ // Rule 290: designator ::= [ constant_expression ]
//
- case 268: { action.beforeConsume(); action. consumeInitializerList(); break;
- }
-
+ case 290: { action. consumeDesignatorArray(); break;
+ }
+
//
- // Rule 273: designated_initializer ::= <openscope> designation initializer
+ // Rule 291: designator ::= . identifier_or_typedefname
//
- case 273: { action.beforeConsume(); action. consumeInitializerDesignated(); break;
- }
-
+ case 291: { action. consumeDesignatorField(); break;
+ }
+
//
- // Rule 277: designator ::= [ constant_expression ]
+ // Rule 292: translation_unit ::= external_declaration_list
//
- case 277: { action.beforeConsume(); action. consumeDesignatorArrayDesignator(); break;
- }
-
+ case 292: { action. consumeTranslationUnit(); break;
+ }
+
//
- // Rule 278: designator ::= . identifier
+ // Rule 293: translation_unit ::= $Empty
//
- case 278: { action.beforeConsume(); action. consumeDesignatorFieldDesignator(); break;
- }
-
+ case 293: { action. consumeTranslationUnit(); break;
+ }
+
//
- // Rule 279: translation_unit ::= external_declaration_list
+ // Rule 298: external_declaration ::= ;
//
- case 279: { action.beforeConsume(); action. consumeTranslationUnit(); break;
- }
-
+ case 298: { action. consumeDeclarationEmpty(); break;
+ }
+
//
- // Rule 280: translation_unit ::= $Empty
+ // Rule 299: external_declaration ::= ERROR_TOKEN
//
- case 280: { action.beforeConsume(); action. consumeTranslationUnit(); break;
- }
-
+ case 299: { action. consumeDeclarationProblem(); break;
+ }
+
//
- // Rule 285: external_declaration ::= ;
+ // Rule 302: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
//
- case 285: { action.beforeConsume(); action. consumeDeclarationEmpty(); break;
- }
-
+ case 302: { action. consumeFunctionDefinition(true); break;
+ }
+
//
- // Rule 286: external_declaration ::= ERROR_TOKEN
+ // Rule 303: function_definition ::= <openscope-ast> function_declarator function_body
//
- case 286: { action.beforeConsume(); action. consumeDeclarationProblem(); break;
- }
-
+ case 303: { action. consumeFunctionDefinition(false); break;
+ }
+
//
- // Rule 287: function_definition ::= declaration_specifiers <openscope> function_declarator compound_statement
+ // Rule 304: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
//
- case 287: { action.beforeConsume(); action. consumeFunctionDefinition(true); break;
- }
-
+ case 304: { action. consumeFunctionDefinitionKnR(); break;
+ }
+
//
- // Rule 288: function_definition ::= declaration_specifiers <openscope> knr_function_declarator <openscope> declaration_list compound_statement
+ // Rule 305: function_body ::= { }
//
- case 288: { action.beforeConsume(); action. consumeFunctionDefinitionKnR(); break;
- }
-
+ case 305: { action. consumeStatementCompoundStatement(false); break;
+ }
+
//
- // Rule 289: function_definition ::= function_declarator compound_statement
+ // Rule 306: function_body ::= { <openscope-ast> block_item_list }
//
- case 289: { action.beforeConsume(); action. consumeFunctionDefinition(false); break;
- }
-
+ case 306: { action. consumeStatementCompoundStatement(true); break;
+ }
+
//
- // Rule 292: constant ::= MYTHREAD
+ // Rule 307: literal ::= MYTHREAD
//
- case 292: { action.beforeConsume(); action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread); break;
- }
-
+ case 307: { action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_mythread); break;
+ }
+
//
- // Rule 293: constant ::= THREADS
+ // Rule 308: literal ::= THREADS
//
- case 293: { action.beforeConsume(); action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads); break;
- }
-
+ case 308: { action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_threads); break;
+ }
+
//
- // Rule 294: constant ::= UPC_MAX_BLOCKSIZE
+ // Rule 309: literal ::= UPC_MAX_BLOCKSIZE
//
- case 294: { action.beforeConsume(); action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size); break;
- }
-
+ case 309: { action. consumeKeywordExpression(IUPCASTKeywordExpression.kw_upc_max_block_size); break;
+ }
+
//
- // Rule 295: unary_expression ::= upc_localsizeof unary_expression
+ // Rule 310: unary_expression ::= upc_localsizeof unary_expression
//
- case 295: { action.beforeConsume(); action. consumeExpressionUpcSizeofOperator(IUPCASTUnaryExpression.op_upc_localsizeof); break;
- }
-
+ case 310: { action. consumeExpressionUpcSizeofOperator(IUPCASTUnaryExpression.op_upc_localsizeof); break;
+ }
+
//
- // Rule 296: unary_expression ::= upc_localsizeof ( type_name )
+ // Rule 311: unary_expression ::= upc_localsizeof ( type_name )
//
- case 296: { action.beforeConsume(); action. consumeExpressionUpcSizeofTypeName(IUPCASTUnaryExpression.op_upc_localsizeof); break;
- }
-
+ case 311: { action. consumeExpressionUpcSizeofTypeName(IUPCASTUnaryExpression.op_upc_localsizeof); break;
+ }
+
//
- // Rule 297: unary_expression ::= upc_blocksizeof unary_expression
+ // Rule 312: unary_expression ::= upc_blocksizeof unary_expression
//
- case 297: { action.beforeConsume(); action. consumeExpressionUpcSizeofOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); break;
- }
-
+ case 312: { action. consumeExpressionUpcSizeofOperator(IUPCASTUnaryExpression.op_upc_blocksizeof); break;
+ }
+
//
- // Rule 298: unary_expression ::= upc_blocksizeof ( type_name )
+ // Rule 313: unary_expression ::= upc_blocksizeof ( type_name )
//
- case 298: { action.beforeConsume(); action. consumeExpressionUpcSizeofTypeName(IUPCASTUnaryExpression.op_upc_blocksizeof); break;
- }
-
+ case 313: { action. consumeExpressionUpcSizeofTypeName(IUPCASTUnaryExpression.op_upc_blocksizeof); break;
+ }
+
//
- // Rule 299: unary_expression ::= upc_elemsizeof unary_expression
+ // Rule 314: unary_expression ::= upc_elemsizeof unary_expression
//
- case 299: { action.beforeConsume(); action. consumeExpressionUpcSizeofOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); break;
- }
-
+ case 314: { action. consumeExpressionUpcSizeofOperator(IUPCASTUnaryExpression.op_upc_elemsizeof); break;
+ }
+
//
- // Rule 300: unary_expression ::= upc_elemsizeof ( type_name )
+ // Rule 315: unary_expression ::= upc_elemsizeof ( type_name )
//
- case 300: { action.beforeConsume(); action. consumeExpressionUpcSizeofTypeName(IUPCASTUnaryExpression.op_upc_elemsizeof); break;
- }
-
+ case 315: { action. consumeExpressionUpcSizeofTypeName(IUPCASTUnaryExpression.op_upc_elemsizeof); break;
+ }
+
//
- // Rule 304: shared_type_qualifier ::= shared
+ // Rule 319: shared_type_qualifier ::= shared
//
- case 304: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 319: { action. consumeToken(); break;
+ }
+
//
- // Rule 305: reference_type_qualifier ::= relaxed
+ // Rule 320: reference_type_qualifier ::= relaxed
//
- case 305: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 320: { action. consumeToken(); break;
+ }
+
//
- // Rule 306: reference_type_qualifier ::= strict
+ // Rule 321: reference_type_qualifier ::= strict
//
- case 306: { action.beforeConsume(); action. consumeToken(); break;
- }
-
+ case 321: { action. consumeToken(); break;
+ }
+
//
- // Rule 307: layout_qualifier ::= [ constant_expression ]
+ // Rule 322: layout_qualifier ::= [ constant_expression ]
//
- case 307: { action.beforeConsume(); action. consumeLayoutQualifier(true, false); break;
- }
-
+ case 322: { action. consumeLayoutQualifier(true, false); break;
+ }
+
//
- // Rule 308: layout_qualifier ::= [ * ]
+ // Rule 323: layout_qualifier ::= [ * ]
//
- case 308: { action.beforeConsume(); action. consumeLayoutQualifier(false, true); break;
- }
-
+ case 323: { action. consumeLayoutQualifier(false, true); break;
+ }
+
//
- // Rule 309: layout_qualifier ::= [ ]
+ // Rule 324: layout_qualifier ::= [ ]
//
- case 309: { action.beforeConsume(); action. consumeLayoutQualifier(false, false); break;
- }
-
+ case 324: { action. consumeLayoutQualifier(false, false); break;
+ }
+
//
- // Rule 311: synchronization_statement ::= upc_notify expression ;
+ // Rule 326: synchronization_statement ::= upc_notify expression ;
//
- case 311: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true); break;
- }
-
+ case 326: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, true); break;
+ }
+
//
- // Rule 312: synchronization_statement ::= upc_notify ;
+ // Rule 327: synchronization_statement ::= upc_notify ;
//
- case 312: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false); break;
- }
-
+ case 327: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_notify, false); break;
+ }
+
//
- // Rule 313: synchronization_statement ::= upc_wait expression ;
+ // Rule 328: synchronization_statement ::= upc_wait expression ;
//
- case 313: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true); break;
- }
-
+ case 328: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, true); break;
+ }
+
//
- // Rule 314: synchronization_statement ::= upc_wait ;
+ // Rule 329: synchronization_statement ::= upc_wait ;
//
- case 314: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false); break;
- }
-
+ case 329: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_wait, false); break;
+ }
+
//
- // Rule 315: synchronization_statement ::= upc_barrier expression ;
+ // Rule 330: synchronization_statement ::= upc_barrier expression ;
//
- case 315: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true); break;
- }
-
+ case 330: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, true); break;
+ }
+
//
- // Rule 316: synchronization_statement ::= upc_barrier ;
+ // Rule 331: synchronization_statement ::= upc_barrier ;
//
- case 316: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false); break;
- }
-
+ case 331: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_barrier, false); break;
+ }
+
//
- // Rule 317: synchronization_statement ::= upc_fence ;
+ // Rule 332: synchronization_statement ::= upc_fence ;
//
- case 317: { action.beforeConsume(); action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false); break;
- }
-
+ case 332: { action. consumeStatementSynchronizationStatement(IUPCASTSynchronizationStatement.st_upc_fence, false); break;
+ }
+
//
- // Rule 318: iteration_statement ::= upc_forall ( expression ; expression ; expression ; affinity ) statement
+ // Rule 333: iteration_statement ::= upc_forall ( expression ; expression ; expression ; affinity ) statement
//
- case 318: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, true, true); break;
- }
-
+ case 333: { action. consumeStatementUPCForallLoop(true, true, true, true); break;
+ }
+
//
- // Rule 319: iteration_statement ::= upc_forall ( expression ; expression ; expression ; ) statement
+ // Rule 334: iteration_statement ::= upc_forall ( expression ; expression ; expression ; ) statement
//
- case 319: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, true, false); break;
- }
-
+ case 334: { action. consumeStatementUPCForallLoop(true, true, true, false); break;
+ }
+
//
- // Rule 320: iteration_statement ::= upc_forall ( expression ; expression ; ; affinity ) statement
+ // Rule 335: iteration_statement ::= upc_forall ( expression ; expression ; ; affinity ) statement
//
- case 320: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, false, true); break;
- }
-
+ case 335: { action. consumeStatementUPCForallLoop(true, true, false, true); break;
+ }
+
//
- // Rule 321: iteration_statement ::= upc_forall ( expression ; expression ; ; ) statement
+ // Rule 336: iteration_statement ::= upc_forall ( expression ; expression ; ; ) statement
//
- case 321: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, false, false); break;
- }
-
+ case 336: { action. consumeStatementUPCForallLoop(true, true, false, false); break;
+ }
+
//
- // Rule 322: iteration_statement ::= upc_forall ( expression ; ; expression ; affinity ) statement
+ // Rule 337: iteration_statement ::= upc_forall ( expression ; ; expression ; affinity ) statement
//
- case 322: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, true, true); break;
- }
-
+ case 337: { action. consumeStatementUPCForallLoop(true, false, true, true); break;
+ }
+
//
- // Rule 323: iteration_statement ::= upc_forall ( expression ; ; expression ; ) statement
+ // Rule 338: iteration_statement ::= upc_forall ( expression ; ; expression ; ) statement
//
- case 323: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, true, false); break;
- }
-
+ case 338: { action. consumeStatementUPCForallLoop(true, false, true, false); break;
+ }
+
//
- // Rule 324: iteration_statement ::= upc_forall ( expression ; ; ; affinity ) statement
+ // Rule 339: iteration_statement ::= upc_forall ( expression ; ; ; affinity ) statement
//
- case 324: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, false, true); break;
- }
-
+ case 339: { action. consumeStatementUPCForallLoop(true, false, false, true); break;
+ }
+
//
- // Rule 325: iteration_statement ::= upc_forall ( expression ; ; ; ) statement
+ // Rule 340: iteration_statement ::= upc_forall ( expression ; ; ; ) statement
//
- case 325: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, false, false); break;
- }
-
+ case 340: { action. consumeStatementUPCForallLoop(true, false, false, false); break;
+ }
+
//
- // Rule 326: iteration_statement ::= upc_forall ( ; expression ; expression ; affinity ) statement
+ // Rule 341: iteration_statement ::= upc_forall ( ; expression ; expression ; affinity ) statement
//
- case 326: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, true, true, true); break;
- }
-
+ case 341: { action. consumeStatementUPCForallLoop(false, true, true, true); break;
+ }
+
//
- // Rule 327: iteration_statement ::= upc_forall ( ; expression ; expression ; ) statement
+ // Rule 342: iteration_statement ::= upc_forall ( ; expression ; expression ; ) statement
//
- case 327: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, true, true, false); break;
- }
-
+ case 342: { action. consumeStatementUPCForallLoop(false, true, true, false); break;
+ }
+
//
- // Rule 328: iteration_statement ::= upc_forall ( ; expression ; ; affinity ) statement
+ // Rule 343: iteration_statement ::= upc_forall ( ; expression ; ; affinity ) statement
//
- case 328: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, true, false, true); break;
- }
-
+ case 343: { action. consumeStatementUPCForallLoop(false, true, false, true); break;
+ }
+
//
- // Rule 329: iteration_statement ::= upc_forall ( ; expression ; ; ) statement
+ // Rule 344: iteration_statement ::= upc_forall ( ; expression ; ; ) statement
//
- case 329: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, true, false, false); break;
- }
-
+ case 344: { action. consumeStatementUPCForallLoop(false, true, false, false); break;
+ }
+
//
- // Rule 330: iteration_statement ::= upc_forall ( ; ; expression ; affinity ) statement
+ // Rule 345: iteration_statement ::= upc_forall ( ; ; expression ; affinity ) statement
//
- case 330: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, false, true, true); break;
- }
-
+ case 345: { action. consumeStatementUPCForallLoop(false, false, true, true); break;
+ }
+
//
- // Rule 331: iteration_statement ::= upc_forall ( ; ; expression ; ) statement
+ // Rule 346: iteration_statement ::= upc_forall ( ; ; expression ; ) statement
//
- case 331: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, false, true, false); break;
- }
-
+ case 346: { action. consumeStatementUPCForallLoop(false, false, true, false); break;
+ }
+
//
- // Rule 332: iteration_statement ::= upc_forall ( ; ; ; affinity ) statement
+ // Rule 347: iteration_statement ::= upc_forall ( ; ; ; affinity ) statement
//
- case 332: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, false, false, true); break;
- }
-
+ case 347: { action. consumeStatementUPCForallLoop(false, false, false, true); break;
+ }
+
//
- // Rule 333: iteration_statement ::= upc_forall ( ; ; ; ) statement
+ // Rule 348: iteration_statement ::= upc_forall ( ; ; ; ) statement
//
- case 333: { action.beforeConsume(); action. consumeStatementUPCForallLoop(false, false, false, false); break;
- }
-
+ case 348: { action. consumeStatementUPCForallLoop(false, false, false, false); break;
+ }
+
//
- // Rule 334: iteration_statement ::= upc_forall ( declaration expression ; expression ; affinity ) statement
+ // Rule 349: iteration_statement ::= upc_forall ( declaration expression ; expression ; affinity ) statement
//
- case 334: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, true, true); break;
- }
-
+ case 349: { action. consumeStatementUPCForallLoop(true, true, true, true); break;
+ }
+
//
- // Rule 335: iteration_statement ::= upc_forall ( declaration expression ; expression ; ) statement
+ // Rule 350: iteration_statement ::= upc_forall ( declaration expression ; expression ; ) statement
//
- case 335: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, true, false); break;
- }
-
+ case 350: { action. consumeStatementUPCForallLoop(true, true, true, false); break;
+ }
+
//
- // Rule 336: iteration_statement ::= upc_forall ( declaration expression ; ; affinity ) statement
+ // Rule 351: iteration_statement ::= upc_forall ( declaration expression ; ; affinity ) statement
//
- case 336: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, false, true); break;
- }
-
+ case 351: { action. consumeStatementUPCForallLoop(true, true, false, true); break;
+ }
+
//
- // Rule 337: iteration_statement ::= upc_forall ( declaration expression ; ; ) statement
+ // Rule 352: iteration_statement ::= upc_forall ( declaration expression ; ; ) statement
//
- case 337: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, true, false, false); break;
- }
-
+ case 352: { action. consumeStatementUPCForallLoop(true, true, false, false); break;
+ }
+
//
- // Rule 338: iteration_statement ::= upc_forall ( declaration ; expression ; affinity ) statement
+ // Rule 353: iteration_statement ::= upc_forall ( declaration ; expression ; affinity ) statement
//
- case 338: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, true, true); break;
- }
-
+ case 353: { action. consumeStatementUPCForallLoop(true, false, true, true); break;
+ }
+
//
- // Rule 339: iteration_statement ::= upc_forall ( declaration ; expression ; ) statement
+ // Rule 354: iteration_statement ::= upc_forall ( declaration ; expression ; ) statement
//
- case 339: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, true, false); break;
- }
-
+ case 354: { action. consumeStatementUPCForallLoop(true, false, true, false); break;
+ }
+
//
- // Rule 340: iteration_statement ::= upc_forall ( declaration ; ; affinity ) statement
+ // Rule 355: iteration_statement ::= upc_forall ( declaration ; ; affinity ) statement
//
- case 340: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, false, true); break;
- }
-
+ case 355: { action. consumeStatementUPCForallLoop(true, false, false, true); break;
+ }
+
//
- // Rule 341: iteration_statement ::= upc_forall ( declaration ; ; ) statement
+ // Rule 356: iteration_statement ::= upc_forall ( declaration ; ; ) statement
//
- case 341: { action.beforeConsume(); action. consumeStatementUPCForallLoop(true, false, false, false); break;
- }
-
+ case 356: { action. consumeStatementUPCForallLoop(true, false, false, false); break;
+ }
+
//
- // Rule 343: affinity ::= continue
+ // Rule 358: affinity ::= continue
//
- case 343: { action.beforeConsume(); action. consumeToken(); break;
- }
+ case 358: { action. consumeToken(); break;
+ }
default:

Back to the top