1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-22 08:25:25 +02:00

started adding support for GNU extensions to LR parsers

This commit is contained in:
Mike Kucera 2009-01-13 20:28:15 +00:00
parent ad36b7caa4
commit 07a63ee282
109 changed files with 31141 additions and 22107 deletions

View file

@ -14,8 +14,8 @@ import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage; import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2CPPSpecFailingTest; import org.eclipse.cdt.core.parser.tests.ast2.AST2CPPSpecFailingTest;
@ -57,11 +57,11 @@ public class LRCPPSpecFailingTest extends AST2CPPSpecFailingTest {
protected BaseExtensibleLanguage getCLanguage() { protected BaseExtensibleLanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected BaseExtensibleLanguage getCPPLanguage() { protected BaseExtensibleLanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
} }

View file

@ -14,8 +14,8 @@ import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage; import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2CPPSpecTest; import org.eclipse.cdt.core.parser.tests.ast2.AST2CPPSpecTest;
@ -78,11 +78,11 @@ public class LRCPPSpecTest extends AST2CPPSpecTest {
protected BaseExtensibleLanguage getCLanguage() { protected BaseExtensibleLanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected BaseExtensibleLanguage getCPPLanguage() { protected BaseExtensibleLanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }

View file

@ -14,8 +14,8 @@ import junit.framework.AssertionFailedError;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2CPPTests; import org.eclipse.cdt.core.parser.tests.ast2.AST2CPPTests;
@ -40,7 +40,7 @@ public class LRCPPTests extends AST2CPPTests {
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
@ -48,12 +48,12 @@ public class LRCPPTests extends AST2CPPTests {
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }

View file

@ -14,8 +14,8 @@ import junit.framework.AssertionFailedError;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2CSpecTest; import org.eclipse.cdt.core.parser.tests.ast2.AST2CSpecTest;
@ -60,11 +60,11 @@ public class LRCSpecTests extends AST2CSpecTest {
} }
protected ILanguage getCLanguage() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }

View file

@ -15,8 +15,8 @@ import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTComment; import org.eclipse.cdt.core.dom.ast.IASTComment;
import org.eclipse.cdt.core.dom.ast.IASTFileLocation; import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.CommentTests; import org.eclipse.cdt.core.parser.tests.ast2.CommentTests;
@ -33,7 +33,7 @@ public class LRCommentTests extends CommentTests {
@Override @Override
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
return ParseHelper.parse(code, language, expectNoProblems); return ParseHelper.parse(code, language, expectNoProblems);
} }
@ -44,7 +44,7 @@ public class LRCommentTests extends CommentTests {
boolean useGNUExtensions, boolean expectNoProblems, boolean useGNUExtensions, boolean expectNoProblems,
boolean skipTrivialInitializers) throws ParserException { boolean skipTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
@ -52,12 +52,12 @@ public class LRCommentTests extends CommentTests {
return ParseHelper.commentParse(code, language); return ParseHelper.commentParse(code, language);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }

View file

@ -14,8 +14,8 @@ import junit.framework.AssertionFailedError;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.CompleteParser2Tests; import org.eclipse.cdt.core.parser.tests.ast2.CompleteParser2Tests;
@ -26,20 +26,27 @@ public class LRCompleteParser2Tests extends CompleteParser2Tests {
return suite(LRCompleteParser2Tests.class); return suite(LRCompleteParser2Tests.class);
} }
public LRCompleteParser2Tests() {
}
public LRCompleteParser2Tests(String name) {
super(name);
}
@Override @Override
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse(String code, boolean expectedToPass, protected IASTTranslationUnit parse(String code, boolean expectedToPass,
ParserLanguage lang, boolean gcc) throws Exception { ParserLanguage lang, boolean gcc) throws Exception {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
return ParseHelper.parse(code, language, expectedToPass); return ParseHelper.parse(code, language, expectedToPass);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
@ -72,13 +79,13 @@ public class LRCompleteParser2Tests extends CompleteParser2Tests {
// } // }
@Override // @Override
public void testBug102376() throws Exception { // gcc extension // public void testBug102376() throws Exception { // gcc extension
try { // try {
super.testBug102376(); // super.testBug102376();
fail(); // fail();
} catch(AssertionFailedError _) { } // } catch(AssertionFailedError _) { }
} // }
@Override @Override
public void test158192_declspec_in_declarator() throws Exception { public void test158192_declspec_in_declarator() throws Exception {

View file

@ -16,8 +16,8 @@ import org.eclipse.cdt.core.dom.ast.IASTCompletionNode;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IFunction; import org.eclipse.cdt.core.dom.ast.IFunction;
import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.ITypedef;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.prefix.BasicCompletionTest; import org.eclipse.cdt.core.parser.tests.prefix.BasicCompletionTest;
@ -39,17 +39,17 @@ public class LRCompletionBasicTest extends BasicCompletionTest {
ParserLanguage lang, boolean useGNUExtensions) ParserLanguage lang, boolean useGNUExtensions)
throws ParserException { throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
return ParseHelper.getCompletionNode(code, language); return ParseHelper.getCompletionNode(code, language);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }

View file

@ -25,7 +25,7 @@ import org.eclipse.cdt.core.dom.ast.IEnumerator;
import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.IField;
import org.eclipse.cdt.core.dom.ast.ITypedef; import org.eclipse.cdt.core.dom.ast.ITypedef;
import org.eclipse.cdt.core.dom.ast.IVariable; import org.eclipse.cdt.core.dom.ast.IVariable;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
@ -45,7 +45,7 @@ public class LRCompletionParseTest extends TestCase {
protected IASTCompletionNode parse(String code, int offset) throws Exception { protected IASTCompletionNode parse(String code, int offset) throws Exception {
return ParseHelper.getCompletionNode(code, getC99Language(), offset); return ParseHelper.getCompletionNode(code, getCLanguage(), offset);
} }
@ -72,8 +72,8 @@ public class LRCompletionParseTest extends TestCase {
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }

View file

@ -13,8 +13,8 @@ package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.CodeReader; import org.eclipse.cdt.core.parser.CodeReader;
import org.eclipse.cdt.core.parser.ExtendedScannerInfo; import org.eclipse.cdt.core.parser.ExtendedScannerInfo;
@ -45,7 +45,7 @@ public class LRDOMLocationInclusionTests extends DOMLocationInclusionTests {
@Override @Override
protected IASTTranslationUnit parse(IFile code, IScannerInfo s)throws Exception { protected IASTTranslationUnit parse(IFile code, IScannerInfo s)throws Exception {
// TODO: total freakin hack! the test suite needs to be refactored // TODO: total freakin hack! the test suite needs to be refactored
ILanguage lang = code.getName().endsWith("cc") ? getCPPLanguage() : getC99Language(); //$NON-NLS-1$ ILanguage lang = code.getName().endsWith("cc") ? getCPPLanguage() : getCLanguage(); //$NON-NLS-1$
CodeReader codeReader = new CodeReader(code.getLocation().toOSString()); CodeReader codeReader = new CodeReader(code.getLocation().toOSString());
IASTTranslationUnit tu = lang.getASTTranslationUnit(codeReader, s, SavedCodeReaderFactory.getInstance(), null, ILanguage.OPTION_ADD_COMMENTS, ParserUtil.getParserLogService()); IASTTranslationUnit tu = lang.getASTTranslationUnit(codeReader, s, SavedCodeReaderFactory.getInstance(), null, ILanguage.OPTION_ADD_COMMENTS, ParserUtil.getParserLogService());
@ -60,12 +60,12 @@ public class LRDOMLocationInclusionTests extends DOMLocationInclusionTests {
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }

View file

@ -13,8 +13,8 @@ package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.DOMLocationMacroTests; import org.eclipse.cdt.core.parser.tests.ast2.DOMLocationMacroTests;
@ -34,18 +34,18 @@ public class LRDOMLocationMacroTests extends DOMLocationMacroTests {
@Override @Override
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems); ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }

View file

@ -14,8 +14,8 @@ import junit.framework.AssertionFailedError;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.DOMLocationTests; import org.eclipse.cdt.core.parser.tests.ast2.DOMLocationTests;
@ -34,17 +34,17 @@ public class LRDOMLocationTests extends DOMLocationTests {
@Override @Override
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems); ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }

View file

@ -13,8 +13,8 @@ package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.DOMPreprocessorInformationTest; import org.eclipse.cdt.core.parser.tests.ast2.DOMPreprocessorInformationTest;
@ -30,18 +30,18 @@ public class LRDOMPreprocessorInformationTest extends DOMPreprocessorInformation
@Override @Override
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems); ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
} }

View file

@ -32,7 +32,7 @@ import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTStatement; import org.eclipse.cdt.core.dom.ast.IASTStatement;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression; import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
@ -60,7 +60,7 @@ public class LRDigraphTrigraphTests extends TestCase {
protected ILanguage getCLanguage() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }

View file

@ -13,8 +13,8 @@ package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.GCCTests; import org.eclipse.cdt.core.parser.tests.ast2.GCCTests;
@ -34,18 +34,18 @@ public class LRGCCTests extends GCCTests {
@Override @Override
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems); ParseHelper.Options options = new ParseHelper.Options().setCheckSyntaxProblems(expectNoProblems).setCheckPreprocessorProblems(expectNoProblems);
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
} }

View file

@ -11,8 +11,8 @@ package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.ImageLocationTests; import org.eclipse.cdt.core.parser.tests.ast2.ImageLocationTests;
@ -33,7 +33,7 @@ public class LRImageLocationTests extends ImageLocationTests {
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions,
boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
@ -41,12 +41,12 @@ public class LRImageLocationTests extends ImageLocationTests {
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
} }

View file

@ -13,8 +13,8 @@ package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2KnRTests; import org.eclipse.cdt.core.parser.tests.ast2.AST2KnRTests;
@ -33,17 +33,17 @@ public class LRKnRTests extends AST2KnRTests {
@Override @Override
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
return ParseHelper.parse(code, language, expectNoProblems); return ParseHelper.parse(code, language, expectNoProblems);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
// LPG handles syntax errors differently than the DOM parser // LPG handles syntax errors differently than the DOM parser

View file

@ -15,8 +15,8 @@ import java.io.IOException;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.ASTNodeSelectorTest; import org.eclipse.cdt.core.parser.tests.ast2.ASTNodeSelectorTest;
@ -35,7 +35,7 @@ public class LRNodeSelectorTest extends ASTNodeSelectorTest {
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializer) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializer) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
@ -51,12 +51,12 @@ public class LRNodeSelectorTest extends ASTNodeSelectorTest {
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
} }

View file

@ -10,8 +10,8 @@ package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.AssertionFailedError; import junit.framework.AssertionFailedError;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.QuickParser2Tests; import org.eclipse.cdt.core.parser.tests.ast2.QuickParser2Tests;
@ -25,7 +25,7 @@ public class LRQuickParser2Tests extends QuickParser2Tests {
@Override @Override
protected void parse(String code, boolean expectedToPass, protected void parse(String code, boolean expectedToPass,
ParserLanguage lang, @SuppressWarnings("unused") boolean gcc) throws Exception { ParserLanguage lang, @SuppressWarnings("unused") boolean gcc) throws Exception {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
// don't check preprocessor problems for this test suite (causes tons of failures) // don't check preprocessor problems for this test suite (causes tons of failures)
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectedToPass); options.setCheckSyntaxProblems(expectedToPass);
@ -34,12 +34,12 @@ public class LRQuickParser2Tests extends QuickParser2Tests {
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }

View file

@ -15,8 +15,8 @@ import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ICodeReaderFactory; import org.eclipse.cdt.core.dom.ICodeReaderFactory;
import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.CodeReader; import org.eclipse.cdt.core.parser.CodeReader;
import org.eclipse.cdt.core.parser.IScannerInfo; import org.eclipse.cdt.core.parser.IScannerInfo;
@ -55,7 +55,7 @@ public class LRSelectionParseTest extends AST2SelectionParseTest {
@Override @Override
protected IASTNode parse(String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, int offset, int length) throws ParserException { protected IASTNode parse(String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, int offset, int length) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
@ -65,7 +65,7 @@ public class LRSelectionParseTest extends AST2SelectionParseTest {
protected IASTTranslationUnit parse( IFile file, ParserLanguage lang, IScannerInfo scanInfo, boolean useGNUExtensions, boolean expectNoProblems ) { protected IASTTranslationUnit parse( IFile file, ParserLanguage lang, IScannerInfo scanInfo, boolean useGNUExtensions, boolean expectNoProblems ) {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
String fileName = file.getLocation().toOSString(); String fileName = file.getLocation().toOSString();
ICodeReaderFactory fileCreator = SavedCodeReaderFactory.getInstance(); ICodeReaderFactory fileCreator = SavedCodeReaderFactory.getInstance();
@ -85,12 +85,12 @@ public class LRSelectionParseTest extends AST2SelectionParseTest {
return parse(file, lang, new ScannerInfo(), useGNUExtensions, expectNoProblems); return parse(file, lang, new ScannerInfo(), useGNUExtensions, expectNoProblems);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
} }

View file

@ -11,8 +11,8 @@ package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.SemanticsTests; import org.eclipse.cdt.core.parser.tests.ast2.SemanticsTests;
@ -33,7 +33,7 @@ public class LRSemanticsTests extends SemanticsTests {
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions,
boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
@ -41,11 +41,11 @@ public class LRSemanticsTests extends SemanticsTests {
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
} }

View file

@ -13,8 +13,8 @@ package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.TaskParserTest; import org.eclipse.cdt.core.parser.tests.ast2.TaskParserTest;
@ -28,14 +28,13 @@ public class LRTaskParserTest extends TaskParserTest {
} }
@Override @Override
@SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
return parse(code, lang, useGNUExtensions, expectNoProblems, false); return parse(code, lang, useGNUExtensions, expectNoProblems, false);
} }
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
@ -43,11 +42,11 @@ public class LRTaskParserTest extends TaskParserTest {
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
} }

View file

@ -13,8 +13,8 @@ package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2TemplateTests; import org.eclipse.cdt.core.parser.tests.ast2.AST2TemplateTests;
@ -32,7 +32,7 @@ public class LRTemplateTests extends AST2TemplateTests {
@Override @Override
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
@ -40,12 +40,12 @@ public class LRTemplateTests extends AST2TemplateTests {
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
} }

View file

@ -16,8 +16,8 @@ import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition; import org.eclipse.cdt.core.dom.ast.IASTFunctionDefinition;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier; import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2Tests; import org.eclipse.cdt.core.parser.tests.ast2.AST2Tests;
@ -48,7 +48,7 @@ public class LRTests extends AST2Tests {
@Override @Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options(); ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems); options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems); options.setCheckPreprocessorProblems(expectNoProblems);
@ -56,12 +56,12 @@ public class LRTests extends AST2Tests {
return ParseHelper.parse(code, language, options); return ParseHelper.parse(code, language, options);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }

View file

@ -14,8 +14,8 @@ import junit.framework.AssertionFailedError;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2UtilOldTests; import org.eclipse.cdt.core.parser.tests.ast2.AST2UtilOldTests;
@ -32,17 +32,17 @@ public class LRUtilOldTests extends AST2UtilOldTests {
@Override @Override
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
return ParseHelper.parse(code, language, expectNoProblems); return ParseHelper.parse(code, language, expectNoProblems);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }

View file

@ -13,8 +13,8 @@ package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.TestSuite; import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language; import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage; import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2UtilTests; import org.eclipse.cdt.core.parser.tests.ast2.AST2UtilTests;
@ -40,16 +40,16 @@ public class LRUtilTests extends AST2UtilTests {
@Override @Override
@SuppressWarnings("unused") @SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException { protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language(); ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
return ParseHelper.parse(code, language, expectNoProblems); return ParseHelper.parse(code, language, expectNoProblems);
} }
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return GCCLanguage.getDefault();
} }
protected ILanguage getCPPLanguage() { protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault(); return GPPLanguage.getDefault();
} }
} }

View file

@ -11,10 +11,16 @@ Require-Bundle: org.eclipse.cdt.core,
Export-Package: org.eclipse.cdt.core.dom.lrparser, Export-Package: org.eclipse.cdt.core.dom.lrparser,
org.eclipse.cdt.core.dom.lrparser.action, org.eclipse.cdt.core.dom.lrparser.action,
org.eclipse.cdt.core.dom.lrparser.action.c99, org.eclipse.cdt.core.dom.lrparser.action.c99,
org.eclipse.cdt.core.dom.lrparser.action.cpp,
org.eclipse.cdt.core.dom.lrparser.c99, org.eclipse.cdt.core.dom.lrparser.c99,
org.eclipse.cdt.core.dom.lrparser.cpp, org.eclipse.cdt.core.dom.lrparser.cpp,
org.eclipse.cdt.core.dom.lrparser.gcc,
org.eclipse.cdt.core.dom.lrparser.gpp,
org.eclipse.cdt.core.dom.lrparser.lpgextensions, org.eclipse.cdt.core.dom.lrparser.lpgextensions,
org.eclipse.cdt.internal.core.dom.lrparser.c99;x-internal:=true org.eclipse.cdt.internal.core.dom.lrparser.c99;x-internal:=true,
org.eclipse.cdt.internal.core.dom.lrparser.cpp,
org.eclipse.cdt.internal.core.dom.lrparser.gcc,
org.eclipse.cdt.internal.core.dom.lrparser.gpp
Bundle-Localization: plugin Bundle-Localization: plugin
Bundle-Vendor: %Bundle-Vendor.0 Bundle-Vendor: %Bundle-Vendor.0
Bundle-RequiredExecutionEnvironment: J2SE-1.5 Bundle-RequiredExecutionEnvironment: J2SE-1.5

View file

@ -9,7 +9,7 @@
IBM Corporation - initial API and implementation IBM Corporation - initial API and implementation
--> -->
<project name="CDT Extensible LR Parser Framework" default="both" basedir="."> <project name="CDT Extensible LR Parser Framework" basedir=".">
<description>Generates LPG parsers from grammar files</description> <description>Generates LPG parsers from grammar files</description>
@ -24,23 +24,22 @@
</fail> </fail>
<property name="c99_location" value="../src/org/eclipse/cdt/internal/core/dom/lrparser/c99"/> <property name="c99_location" value="../src/org/eclipse/cdt/internal/core/dom/lrparser/c99"/>
<property name="gcc_location" value="../src/org/eclipse/cdt/internal/core/dom/lrparser/gcc"/>
<property name="cpp_location" value="../src/org/eclipse/cdt/internal/core/dom/lrparser/cpp"/> <property name="cpp_location" value="../src/org/eclipse/cdt/internal/core/dom/lrparser/cpp"/>
<property name="gpp_location" value="../src/org/eclipse/cdt/internal/core/dom/lrparser/gpp"/>
<target name="all" depends="c99, gcc, cpp, gpp"/>
<target name="clean_l_files"> <target name="clean_l_files">
<delete> <delete>
<fileset dir="${c99_location}" includes="**/*.l"/> <fileset dir="${c99_location}" includes="**/*.l"/>
<fileset dir="${gcc_location}" includes="**/*.l"/>
<fileset dir="${cpp_location}" includes="**/*.l"/> <fileset dir="${cpp_location}" includes="**/*.l"/>
<fileset dir="${gpp_location}" includes="**/*.l"/>
</delete> </delete>
</target> </target>
<target name="both" depends="cpp, c99">
<description>Generates the C99 and C++ parsers</description>
<echo message="Done"/>
</target>
<target name="c99"> <target name="c99">
<description>Generate the C99 parser</description> <description>Generate the C99 parser</description>
<!-- Generate main parser --> <!-- Generate main parser -->
@ -61,6 +60,32 @@
</antcall> </antcall>
</target> </target>
<target name="generate_c99">
<antcall target="generate">
<param name="grammar_dir" value="c99"/>
<param name="output_dir" value="${c99_location}"/>
<param name="grammar_name" value="${grammar_name}"/>
</antcall>
</target>
<target name="gcc">
<description>Generate the GCC parser</description>
<!-- Generate main parser -->
<antcall target="generate_gcc">
<param name="grammar_name" value="GCCParser"/>
</antcall>
</target>
<target name="generate_gcc">
<antcall target="generate">
<param name="grammar_dir" value="gcc"/>
<param name="output_dir" value="${gcc_location}"/>
<param name="grammar_name" value="${grammar_name}"/>
</antcall>
</target>
<target name="cpp"> <target name="cpp">
<description>Generate the C++ parser</description> <description>Generate the C++ parser</description>
@ -89,16 +114,6 @@
</antcall> </antcall>
</target> </target>
<target name="generate_c99">
<antcall target="generate">
<param name="grammar_dir" value="c99"/>
<param name="output_dir" value="${c99_location}"/>
<param name="grammar_name" value="${grammar_name}"/>
</antcall>
</target>
<target name="generate_cpp"> <target name="generate_cpp">
<antcall target="generate"> <antcall target="generate">
<param name="grammar_dir" value="cpp"/> <param name="grammar_dir" value="cpp"/>
@ -108,6 +123,25 @@
</target> </target>
<target name="gpp">
<description>Generate the GCC parser</description>
<!-- Generate main parser -->
<antcall target="generate_gpp">
<param name="grammar_name" value="GPPParser"/>
</antcall>
</target>
<target name="generate_gpp">
<antcall target="generate">
<param name="grammar_dir" value="gpp"/>
<param name="output_dir" value="${gpp_location}"/>
<param name="grammar_name" value="${grammar_name}"/>
</antcall>
</target>
<target name="generate"> <target name="generate">
<property name="grammar_file" value="${grammar_dir}/${grammar_name}.g"/> <property name="grammar_file" value="${grammar_dir}/${grammar_name}.g"/>
<echo message="lpg_exe=${lpg_exe}"/> <echo message="lpg_exe=${lpg_exe}"/>
@ -118,6 +152,7 @@
<exec executable="${lpg_exe}"> <exec executable="${lpg_exe}">
<arg value="${grammar_file}"/> <arg value="${grammar_file}"/>
<env key="LPG_TEMPLATE" path="${lpg_template}"/> <env key="LPG_TEMPLATE" path="${lpg_template}"/>
</exec> </exec>
<move overwrite="true" toDir="${output_dir}"> <move overwrite="true" toDir="${output_dir}">

View file

@ -391,7 +391,7 @@ statement
labeled_statement labeled_statement
::= identifier_or_typedefname ':' statement ::= identifier_token ':' statement
/. $Build consumeStatementLabeled(); $EndBuild ./ /. $Build consumeStatementLabeled(); $EndBuild ./
| 'case' constant_expression ':' statement | 'case' constant_expression ':' statement
/. $Build consumeStatementCase(); $EndBuild ./ /. $Build consumeStatementCase(); $EndBuild ./
@ -451,7 +451,7 @@ iteration_statement
jump_statement jump_statement
::= 'goto' identifier_or_typedefname ';' ::= 'goto' identifier_token ';'
/. $Build consumeStatementGoto(); $EndBuild ./ /. $Build consumeStatementGoto(); $EndBuild ./
| 'continue' ';' | 'continue' ';'
/. $Build consumeStatementContinue(); $EndBuild ./ /. $Build consumeStatementContinue(); $EndBuild ./
@ -588,31 +588,39 @@ typedef_name_in_declspec
identifier_or_typedefname identifier_token
::= 'identifier' ::= 'identifier'
| 'Completion' | 'Completion'
-- | 'TypedefName'
struct_or_union_specifier struct_or_union_specifier
::= 'struct' '{' <openscope-ast> struct_declaration_list_opt '}' ::= struct_or_union struct_or_union_specifier_hook '{' <openscope-ast> struct_declaration_list_opt '}'
/. $Build consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_struct); $EndBuild ./ /. $Build consumeTypeSpecifierComposite(false); $EndBuild ./
| 'union' '{' <openscope-ast> struct_declaration_list_opt '}' | struct_or_union struct_or_union_specifier_hook identifier_token struct_or_union_specifier_suffix_hook '{' <openscope-ast> struct_declaration_list_opt '}'
/. $Build consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_union); $EndBuild ./ /. $Build consumeTypeSpecifierComposite(true); $EndBuild ./
| 'struct' identifier_or_typedefname '{' <openscope-ast> struct_declaration_list_opt '}'
/. $Build consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_struct); $EndBuild ./ struct_or_union_specifier_hook
| 'union' identifier_or_typedefname '{' <openscope-ast> struct_declaration_list_opt '}' ::= $empty
/. $Build consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_union); $EndBuild ./
struct_or_union_specifier_suffix_hook
::= $empty
struct_or_union
::= 'struct'
| 'union'
elaborated_specifier elaborated_specifier
::= 'struct' identifier_or_typedefname ::= 'struct' elaborated_specifier_hook identifier_token
/. $Build consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); $EndBuild ./ /. $Build consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); $EndBuild ./
| 'union' identifier_or_typedefname | 'union' elaborated_specifier_hook identifier_token
/. $Build consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); $EndBuild ./ /. $Build consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); $EndBuild ./
| 'enum' identifier_or_typedefname | 'enum' elaborated_specifier_hook identifier_token
/. $Build consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); $EndBuild ./ /. $Build consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); $EndBuild ./
elaborated_specifier_hook
::= $empty
struct_declaration_list_opt struct_declaration_list_opt
::= struct_declaration_list ::= struct_declaration_list
@ -655,11 +663,14 @@ struct_declarator
enum_specifier enum_specifier
::= 'enum' '{' <openscope-ast> enumerator_list_opt comma_opt '}' ::= 'enum' enum_specifier_hook '{' <openscope-ast> enumerator_list_opt comma_opt '}'
/. $Build consumeTypeSpecifierEnumeration(false); $EndBuild ./ /. $Build consumeTypeSpecifierEnumeration(false); $EndBuild ./
| 'enum' identifier_or_typedefname '{' <openscope-ast> enumerator_list_opt comma_opt '}' | 'enum' enum_specifier_hook identifier_token '{' <openscope-ast> enumerator_list_opt comma_opt '}'
/. $Build consumeTypeSpecifierEnumeration(true); $EndBuild ./ /. $Build consumeTypeSpecifierEnumeration(true); $EndBuild ./
enum_specifier_hook
::= $empty
enumerator_list_opt enumerator_list_opt
::= enumerator_list ::= enumerator_list
@ -672,9 +683,9 @@ enumerator_list
enumerator enumerator
::= identifier_or_typedefname ::= identifier_token
/. $Build consumeEnumerator(false); $EndBuild ./ /. $Build consumeEnumerator(false); $EndBuild ./
| identifier_or_typedefname '=' constant_expression | identifier_token '=' constant_expression
/. $Build consumeEnumerator(true); $EndBuild ./ /. $Build consumeEnumerator(true); $EndBuild ./
@ -794,15 +805,18 @@ array_modifier_type_qualifiers
pointer_seq pointer_seq
::= '*' ::= pointer_hook '*'
/. $Build consumePointer(); $EndBuild ./ /. $Build consumePointer(); $EndBuild ./
| pointer_seq '*' | pointer_seq pointer_hook '*'
/. $Build consumePointer(); $EndBuild ./ /. $Build consumePointer(); $EndBuild ./
| '*' <openscope-ast> type_qualifier_list | pointer_hook '*' <openscope-ast> type_qualifier_list
/. $Build consumePointerTypeQualifierList(); $EndBuild ./ /. $Build consumePointerTypeQualifierList(); $EndBuild ./
| pointer_seq '*' <openscope-ast> type_qualifier_list | pointer_seq pointer_hook '*' <openscope-ast> type_qualifier_list
/. $Build consumePointerTypeQualifierList(); $EndBuild ./ /. $Build consumePointerTypeQualifierList(); $EndBuild ./
pointer_hook
::= $empty
type_qualifier_list type_qualifier_list
::= type_qualifier ::= type_qualifier
@ -925,13 +939,13 @@ designator_list
designator_base designator_base
::= '[' constant_expression ']' ::= '[' constant_expression ']'
/. $Build consumeDesignatorArray(); $EndBuild ./ /. $Build consumeDesignatorArray(); $EndBuild ./
| '.' identifier_or_typedefname | '.' identifier_token
/. $Build consumeDesignatorField(); $EndBuild ./ /. $Build consumeDesignatorField(); $EndBuild ./
designator designator
::= '[' constant_expression ']' ::= '[' constant_expression ']'
/. $Build consumeDesignatorArray(); $EndBuild ./ /. $Build consumeDesignatorArray(); $EndBuild ./
| '.' identifier_or_typedefname | '.' identifier_token
/. $Build consumeDesignatorField(); $EndBuild ./ /. $Build consumeDesignatorField(); $EndBuild ./

View file

@ -959,25 +959,31 @@ type_name_specifier -- all identifiers of some kind
-- used for forward declaration and incomplete types -- used for forward declaration and incomplete types
elaborated_type_specifier elaborated_type_specifier
::= class_keyword dcolon_opt nested_name_specifier_opt identifier_name ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
/. $Build consumeTypeSpecifierElaborated(false); $EndBuild ./ /. $Build consumeTypeSpecifierElaborated(false); $EndBuild ./
| class_keyword dcolon_opt nested_name_specifier_opt template_opt template_id_name | class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
/. $Build consumeTypeSpecifierElaborated(true); $EndBuild ./ /. $Build consumeTypeSpecifierElaborated(true); $EndBuild ./
| 'enum' dcolon_opt nested_name_specifier_opt identifier_name | 'enum' elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
/. $Build consumeTypeSpecifierElaborated(false); $EndBuild ./ /. $Build consumeTypeSpecifierElaborated(false); $EndBuild ./
elaborated_specifier_hook
::= $empty
-- there is currently no way to disambiguate identifier tokens -- there is currently no way to disambiguate identifier tokens
--enum_name --enum_name
-- ::= identifier_token -- ::= identifier_token
enum_specifier enum_specifier
::= 'enum' '{' <openscope-ast> enumerator_list_opt '}' ::= 'enum' enum_specifier_hook '{' <openscope-ast> enumerator_list_opt '}'
/. $Build consumeTypeSpecifierEnumeration(false); $EndBuild ./ /. $Build consumeTypeSpecifierEnumeration(false); $EndBuild ./
| 'enum' identifier_token '{' <openscope-ast> enumerator_list_opt '}' | 'enum' enum_specifier_hook identifier_token '{' <openscope-ast> enumerator_list_opt '}'
/. $Build consumeTypeSpecifierEnumeration(true); $EndBuild ./ /. $Build consumeTypeSpecifierEnumeration(true); $EndBuild ./
enum_specifier_hook
::= $empty
enumerator_list enumerator_list
::= enumerator_definition ::= enumerator_definition
@ -1074,10 +1080,12 @@ init_declarator_complete
init_declarator init_declarator
::= declarator ::= complete_declarator
| declarator initializer | complete_declarator initializer
/. $Build consumeDeclaratorWithInitializer(true); $EndBuild ./ /. $Build consumeDeclaratorWithInitializer(true); $EndBuild ./
complete_declarator
::= declarator
declarator declarator
::= direct_declarator ::= direct_declarator
@ -1123,13 +1131,15 @@ array_modifier
ptr_operator ptr_operator
::= '*' <openscope-ast> cv_qualifier_seq_opt ::= pointer_hook '*' <openscope-ast> cv_qualifier_seq_opt
/. $Build consumePointer(); $EndBuild ./ /. $Build consumePointer(); $EndBuild ./
| '&' | pointer_hook '&'
/. $Build consumeReferenceOperator(); $EndBuild ./ /. $Build consumeReferenceOperator(); $EndBuild ./
| dcolon_opt nested_name_specifier '*' <openscope-ast> cv_qualifier_seq_opt | dcolon_opt nested_name_specifier pointer_hook '*' <openscope-ast> cv_qualifier_seq_opt
/. $Build consumePointerToMember(); $EndBuild ./ /. $Build consumePointerToMember(); $EndBuild ./
pointer_hook
::= $empty
ptr_operator_seq ptr_operator_seq
::= ptr_operator ::= ptr_operator
@ -1331,15 +1341,20 @@ class_specifier
class_head class_head
::= class_keyword identifier_name_opt <openscope-ast> base_clause_opt ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
/. $Build consumeClassHead(false); $EndBuild ./ /. $Build consumeClassHead(false); $EndBuild ./
| class_keyword template_id_name <openscope-ast> base_clause_opt | class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
/. $Build consumeClassHead(false); $EndBuild ./ /. $Build consumeClassHead(false); $EndBuild ./
| class_keyword nested_name_specifier identifier_name <openscope-ast> base_clause_opt | class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
/. $Build consumeClassHead(true); $EndBuild ./ /. $Build consumeClassHead(true); $EndBuild ./
| class_keyword nested_name_specifier template_id_name <openscope-ast> base_clause_opt | class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
/. $Build consumeClassHead(true); $EndBuild ./ /. $Build consumeClassHead(true); $EndBuild ./
composite_specifier_hook
::= $empty
class_name_suffix_hook
::= $empty
identifier_name_opt identifier_name_opt
::= identifier_name ::= identifier_name
@ -1388,10 +1403,13 @@ member_declaration_list_opt
member_declarator_list member_declarator_list
::= member_declarator ::= member_declarator_complete
| member_declarator_list ',' member_declarator | member_declarator_list ',' member_declarator_complete
member_declarator_complete
::= member_declarator
member_declarator member_declarator
::= declarator ::= declarator
-- parse pure specifier as a constant_initializer, reduces conflicts -- parse pure specifier as a constant_initializer, reduces conflicts

View file

@ -0,0 +1,62 @@
-----------------------------------------------------------------------------------
-- 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
-- http://www.eclipse.org/legal/epl-v10.html
--
-- Contributors:
-- IBM Corporation - initial API and implementation
-----------------------------------------------------------------------------------
%options la=2
%options package=org.eclipse.cdt.internal.core.dom.lrparser.gcc
%options template=FixedBtParserTemplateD.g
-- For this to work the environment variable LPG_INCLUDE must be set up
-- to point at the directory where the C99Parser.g file is located.
$Import
../c99/C99Parser.g
$End
$Import
../gnu/GNUExtensions.g
$End
-- Hook the extensions into the main grammar.
$Rules
no_type_declaration_specifier
::= attribute_or_decl_specifier
complete_declarator
::= attribute_or_decl_specifier_seq declarator
| declarator attribute_or_decl_specifier_seq
| attribute_or_decl_specifier_seq declarator attribute_or_decl_specifier_seq
complete_struct_declarator
::= attribute_or_decl_specifier_seq struct_declarator
| struct_declarator attribute_or_decl_specifier_seq
| attribute_or_decl_specifier_seq struct_declarator attribute_or_decl_specifier_seq
enum_specifier_hook
::= attribute_or_decl_specifier_seq
struct_or_union_specifier_hook
::= attribute_or_decl_specifier_seq
struct_or_union_specifier_suffix_hook
::= attribute_or_decl_specifier_seq
pointer_hook
::= attribute_or_decl_specifier_seq
elaborated_specifier_hook
::= attribute_or_decl_specifier_seq
$End

View file

@ -0,0 +1,83 @@
-----------------------------------------------------------------------------------
-- 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
-- http://www.eclipse.org/legal/epl-v10.html
--
-- Contributors:
-- IBM Corporation - initial API and implementation
-----------------------------------------------------------------------------------
-- These are additional rules that allow for parsing of GNU extensions.
-- This file is intended to be mixed-in with C99Parser.g or GPPParser.g
$Terminals
__attribute__
__declspec
$End
$Rules
------------------------------------------------------------------------------------
-- Support for __attribute__ and __declspec
------------------------------------------------------------------------------------
attribute_or_decl_specifier
::= attribute_specifier
| decl_specifier
attribute_or_decl_specifier_seq
::= attribute_or_decl_specifier
| attribute_or_decl_specifier_seq attribute_or_decl_specifier
attribute_specifier
::= '__attribute__' '(' '(' attribute_list ')' ')'
| '__attribute__' '(' ')'
attribute_list
::= attribute
| attribute_list ',' attribute
attribute
::= word
| word '(' attribute_parameter_list ')'
| $empty
word
::= 'identifier'
| 'const'
attribute_parameter_list
::= attribute_parameter
| attribute_parameter_list ',' attribute_parameter
attribute_parameter
::= assignment_expression
/. $Build consumeIgnore(); $EndBuild ./
| $empty
decl_specifier
::= '__declspec' '(' extended_decl_modifier_seq_opt ')'
extended_decl_modifier_seq_opt
::= extended_decl_modifier_seq
| $empty
extended_decl_modifier_seq
::= extended_decl_modifier
| extended_decl_modifier_seq extended_decl_modifier
extended_decl_modifier
::= 'identifier'
| 'identifier' '(' ')'
| 'identifier' '(' 'identifier' ')'
$End

View file

@ -0,0 +1,59 @@
-----------------------------------------------------------------------------------
-- Copyright (c) 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
-- http://www.eclipse.org/legal/epl-v10.html
--
-- Contributors:
-- IBM Corporation - initial API and implementation
-----------------------------------------------------------------------------------
%options la=2
%options package=org.eclipse.cdt.internal.core.dom.lrparser.gpp
%options template=FixedBtParserTemplateD.g
-- For this to work the environment variable LPG_INCLUDE must be set up
-- to point at the directory where the CPPParser.g file is located.
$Import
../cpp/CPPParser.g
$End
$Import
../gnu/GNUExtensions.g
$End
$Rules
no_type_declaration_specifier
::= attribute_or_decl_specifier
complete_declarator
::= attribute_or_decl_specifier_seq declarator
| declarator attribute_or_decl_specifier_seq
| attribute_or_decl_specifier_seq declarator attribute_or_decl_specifier_seq
member_declarator_complete
::= attribute_or_decl_specifier_seq member_declarator_complete
| member_declarator_complete attribute_or_decl_specifier_seq
| attribute_or_decl_specifier_seq member_declarator_complete attribute_or_decl_specifier_seq
enum_specifier_hook
::= attribute_or_decl_specifier_seq
composite_specifier_hook
::= attribute_or_decl_specifier_seq
class_name_suffix_hook
::= attribute_or_decl_specifier_seq
pointer_hook
::= attribute_or_decl_specifier_seq
elaborated_specifier_hook
::= attribute_or_decl_specifier_seq
$End

View file

@ -8,21 +8,39 @@
id="c99" id="c99"
name="%language.name.c99"> name="%language.name.c99">
</language> </language>
<language
class="org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage"
id="gcc"
name="LR GCC">
</language>
<language <language
class="org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage" class="org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage"
id="isocpp" id="isocpp"
name="%language.name.isocpp"> name="%language.name.isocpp">
</language> </language>
<language
class="org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage"
id="gpp"
name="LR GPP">
</language>
<pdomLinkageFactory <pdomLinkageFactory
class="org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory" class="org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory"
id="c99"/> id="c99"/>
<pdomLinkageFactory
class="org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory"
id="gcc"/>
<pdomLinkageFactory <pdomLinkageFactory
class="org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory" class="org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory"
id="isocpp"/> id="isocpp"/>
<pdomLinkageFactory
class="org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory"
id="gpp"/>
</extension> </extension>
</plugin> </plugin>

View file

@ -20,9 +20,11 @@ import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage; import org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage;
import org.eclipse.cdt.core.dom.ast.gnu.cpp.GPPLanguage; import org.eclipse.cdt.core.dom.ast.gnu.cpp.GPPLanguage;
import org.eclipse.cdt.core.dom.parser.CLanguageKeywords;
import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration; import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.model.AbstractLanguage; import org.eclipse.cdt.core.model.AbstractLanguage;
import org.eclipse.cdt.core.model.ICLanguageKeywords;
import org.eclipse.cdt.core.model.ILanguage; import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.CodeReader; import org.eclipse.cdt.core.parser.CodeReader;
import org.eclipse.cdt.core.parser.IParserLogService; import org.eclipse.cdt.core.parser.IParserLogService;
@ -32,7 +34,14 @@ import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.util.ASTPrinter; import org.eclipse.cdt.core.parser.util.ASTPrinter;
import org.eclipse.cdt.core.parser.util.DebugUtil; import org.eclipse.cdt.core.parser.util.DebugUtil;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode; import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
import org.eclipse.cdt.internal.core.dom.parser.ASTTranslationUnit;
import org.eclipse.cdt.internal.core.dom.parser.c.CASTTranslationUnit;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTTranslationUnit;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
import org.eclipse.cdt.internal.core.parser.scanner.CPreprocessor; import org.eclipse.cdt.internal.core.parser.scanner.CPreprocessor;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMLinkageFactory;
import org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory;
import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
@ -76,7 +85,7 @@ public abstract class BaseExtensibleLanguage extends AbstractLanguage {
* *
* @return an IASTTranslationUnit object thats empty and will be filled in by the parser * @return an IASTTranslationUnit object thats empty and will be filled in by the parser
*/ */
protected abstract IASTTranslationUnit createASTTranslationUnit(IIndex index, IScanner preprocessor); protected abstract IASTTranslationUnit createASTTranslationUnit();
/** /**
@ -123,7 +132,7 @@ public abstract class BaseExtensibleLanguage extends AbstractLanguage {
// The translation unit has to be created here so that the preprocessor // The translation unit has to be created here so that the preprocessor
// can fill in the preprocessor AST nodes. // can fill in the preprocessor AST nodes.
IASTTranslationUnit tu = createASTTranslationUnit(index, preprocessor); IASTTranslationUnit tu = getASTTranslationUnit(index, preprocessor);
IParser parser = getParser(); IParser parser = getParser();
CPreprocessorAdapter.runCPreprocessor(preprocessor, parser, getTokenMap(), tu); CPreprocessorAdapter.runCPreprocessor(preprocessor, parser, getTokenMap(), tu);
@ -182,7 +191,7 @@ public abstract class BaseExtensibleLanguage extends AbstractLanguage {
preprocessor.setContentAssistMode(offset); preprocessor.setContentAssistMode(offset);
IParser parser = getParser(); IParser parser = getParser();
IASTTranslationUnit tu = createASTTranslationUnit(index, preprocessor); IASTTranslationUnit tu = getASTTranslationUnit(index, preprocessor);
CPreprocessorAdapter.runCPreprocessor(preprocessor, parser, getTokenMap(), tu); CPreprocessorAdapter.runCPreprocessor(preprocessor, parser, getTokenMap(), tu);
@ -199,6 +208,15 @@ public abstract class BaseExtensibleLanguage extends AbstractLanguage {
} }
private IASTTranslationUnit getASTTranslationUnit(IIndex index, IScanner preprocessor) {
IASTTranslationUnit tu = createASTTranslationUnit();
tu.setIndex(index);
if(tu instanceof ASTTranslationUnit) {
((ASTTranslationUnit)tu).setLocationResolver(preprocessor.getLocationResolver());
}
return tu;
}
/* /*
* For debugging. * For debugging.
*/ */
@ -226,6 +244,21 @@ public abstract class BaseExtensibleLanguage extends AbstractLanguage {
return GCCLanguage.getDefault().getSelectedNames(ast, start, length); return GCCLanguage.getDefault().getSelectedNames(ast, start, length);
} }
private ICLanguageKeywords cLanguageKeywords = new CLanguageKeywords(getParserLanguage(), getScannerExtensionConfiguration());
@SuppressWarnings("unchecked")
@Override
public Object getAdapter(Class adapter) {
if(ICLanguageKeywords.class.equals(adapter))
return cLanguageKeywords;
if(IPDOMLinkageFactory.class.equals(adapter)) {
if(getParserLanguage().isCPP())
return new PDOMCPPLinkageFactory();
return new PDOMCLinkageFactory();
}
return super.getAdapter(adapter);
}
} }

View file

@ -50,8 +50,6 @@ class CPreprocessorAdapter {
// LPG requires that the token stream start with a dummy token // LPG requires that the token stream start with a dummy token
tokenCollector.addToken(createDummyToken()); tokenCollector.addToken(createDummyToken());
preprocessor.getLocationResolver().setRootNode(tu);
org.eclipse.cdt.core.parser.IToken lastToken = null; org.eclipse.cdt.core.parser.IToken lastToken = null;
try { try {
while(true) { while(true) {

View file

@ -399,6 +399,15 @@ public abstract class BuildASTParserAction {
} }
/**
* Just pops the stack, useful if you have a rule that generates
* a node but you don't need the node.
*/
public void consumeIgnore() {
astStack.pop();
}
/** /**
* Gets the current token and places it on the stack for later consumption. * Gets the current token and places it on the stack for later consumption.
*/ */

View file

@ -18,6 +18,7 @@ import java.util.List;
import lpg.lpgjavaruntime.IToken; import lpg.lpgjavaruntime.IToken;
import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement; import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration; import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
@ -540,7 +541,14 @@ public class C99BuildASTParserAction extends BuildASTParserAction {
* *
* @param key either k_struct or k_union from IASTCompositeTypeSpecifier * @param key either k_struct or k_union from IASTCompositeTypeSpecifier
*/ */
public void consumeTypeSpecifierComposite(boolean hasName, int key) { public void consumeTypeSpecifierComposite(boolean hasName) {
int key = 0;
switch(baseKind(parser.getLeftIToken())) {
case TK_struct: key = IASTCompositeTypeSpecifier.k_struct;
case TK_union: key = IASTCompositeTypeSpecifier.k_union;
}
IASTName name = (hasName) ? createName(parser.getRuleTokens().get(1)) : nodeFactory.newName(); IASTName name = (hasName) ? createName(parser.getRuleTokens().get(1)) : nodeFactory.newName();
ICASTCompositeTypeSpecifier typeSpec = nodeFactory.newCompositeTypeSpecifier(key, name); ICASTCompositeTypeSpecifier typeSpec = nodeFactory.newCompositeTypeSpecifier(key, name);

View file

@ -1136,6 +1136,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
// * declaration_specifiers ::= <openscope> type_name_declaration_specifiers // * declaration_specifiers ::= <openscope> type_name_declaration_specifiers
// */ // */
public void consumeDeclarationSpecifiersTypeName() { public void consumeDeclarationSpecifiersTypeName() {
System.out.println("consumeDeclarationSpecifiersTypeName");
List<Object> topScope = astStack.closeScope(); List<Object> topScope = astStack.closeScope();
// There's a name somewhere on the stack, find it // There's a name somewhere on the stack, find it
IASTName typeName = findFirstAndRemove(topScope, IASTName.class); IASTName typeName = findFirstAndRemove(topScope, IASTName.class);
@ -1150,7 +1151,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
// the only way there could be a typename token // the only way there could be a typename token
for(IToken token : parser.getRuleTokens()) { for(IToken token : parser.getRuleTokens()) {
if(token.getKind() == TK_typename) { if(baseKind(token) == TK_typename) {
declSpec.setIsTypename(true); declSpec.setIsTypename(true);
break; break;
} }
@ -1485,9 +1486,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
private void addCVQualifiersToPointer(IASTPointer pointer, List<Object> tokens) { private void addCVQualifiersToPointer(IASTPointer pointer, List<Object> tokens) {
for(Object t : tokens) { for(Object t : tokens) {
IToken token = (IToken) t; switch(baseKind((IToken) t)) {
int kind = baseKind(token);
switch(kind) {
default : assert false; default : assert false;
case TK_const: pointer.setConst(true); break; case TK_const: pointer.setConst(true); break;
case TK_volatile: pointer.setVolatile(true); break; case TK_volatile: pointer.setVolatile(true); break;

View file

@ -16,19 +16,12 @@ import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap; import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParser;
import org.eclipse.cdt.core.dom.lrparser.ScannerExtensionConfiguration; import org.eclipse.cdt.core.dom.lrparser.ScannerExtensionConfiguration;
import org.eclipse.cdt.core.dom.parser.CLanguageKeywords;
import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration; import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.model.ICLanguageKeywords;
import org.eclipse.cdt.core.model.IContributedModelBuilder; import org.eclipse.cdt.core.model.IContributedModelBuilder;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parser; import org.eclipse.cdt.internal.core.dom.lrparser.c99.C99Parser;
import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory; import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
import org.eclipse.cdt.internal.core.dom.parser.c.CASTTranslationUnit;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMLinkageFactory;
import org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory;
/** /**
* ILanguage implementation for the C99 parser. * ILanguage implementation for the C99 parser.
@ -38,11 +31,7 @@ import org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory;
@SuppressWarnings("restriction") @SuppressWarnings("restriction")
public class C99Language extends BaseExtensibleLanguage { public class C99Language extends BaseExtensibleLanguage {
public static final String PLUGIN_ID = "org.eclipse.cdt.core.lrparser"; //$NON-NLS-1$ public static final String ID = "org.eclipse.cdt.core.lrparser.c99"; //$NON-NLS-1$
public static final String ID = PLUGIN_ID + ".c99"; //$NON-NLS-1$
private static final IDOMTokenMap TOKEN_MAP = DOMToC99TokenMap.DEFAULT_MAP;
private static final IScannerExtensionConfiguration SCANNER_CONFIGURATION = ScannerExtensionConfiguration.createC();
private static C99Language DEFAULT = new C99Language(); private static C99Language DEFAULT = new C99Language();
@ -58,12 +47,12 @@ public class C99Language extends BaseExtensibleLanguage {
@Override @Override
protected IDOMTokenMap getTokenMap() { protected IDOMTokenMap getTokenMap() {
return TOKEN_MAP; return DOMToC99TokenMap.DEFAULT_MAP;
} }
@Override @Override
protected IScannerExtensionConfiguration getScannerExtensionConfiguration() { protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
return SCANNER_CONFIGURATION; return ScannerExtensionConfiguration.createC();
} }
public IContributedModelBuilder createModelBuilder(@SuppressWarnings("unused") ITranslationUnit tu) { public IContributedModelBuilder createModelBuilder(@SuppressWarnings("unused") ITranslationUnit tu) {
@ -83,34 +72,9 @@ public class C99Language extends BaseExtensibleLanguage {
return ParserLanguage.C; return ParserLanguage.C;
} }
private ICLanguageKeywords cLanguageKeywords = new CLanguageKeywords(ParserLanguage.C, SCANNER_CONFIGURATION);
@SuppressWarnings("unchecked")
@Override @Override
public Object getAdapter(Class adapter) { protected IASTTranslationUnit createASTTranslationUnit() {
if(IPDOMLinkageFactory.class.equals(adapter)) return CNodeFactory.getDefault().newTranslationUnit();
return new PDOMCLinkageFactory();
if(ICLanguageKeywords.class.equals(adapter))
return cLanguageKeywords;
return super.getAdapter(adapter);
} }
/**
* Gets the translation unit object and sets the index and the location resolver.
*/
@Override
protected IASTTranslationUnit createASTTranslationUnit(IIndex index, IScanner preprocessor) {
IASTTranslationUnit tu = CNodeFactory.getDefault().newTranslationUnit();
tu.setIndex(index);
if(tu instanceof CASTTranslationUnit) {
((CASTTranslationUnit)tu).setLocationResolver(preprocessor.getLocationResolver());
}
return tu;
}
} }

View file

@ -16,19 +16,12 @@ import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap; import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
import org.eclipse.cdt.core.dom.lrparser.IParser; import org.eclipse.cdt.core.dom.lrparser.IParser;
import org.eclipse.cdt.core.dom.lrparser.ScannerExtensionConfiguration; import org.eclipse.cdt.core.dom.lrparser.ScannerExtensionConfiguration;
import org.eclipse.cdt.core.dom.parser.CLanguageKeywords;
import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration; import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.model.ICLanguageKeywords;
import org.eclipse.cdt.core.model.IContributedModelBuilder; import org.eclipse.cdt.core.model.IContributedModelBuilder;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParser; import org.eclipse.cdt.internal.core.dom.lrparser.cpp.CPPParser;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTTranslationUnit;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMLinkageFactory;
import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory;
/** /**
* ILanguage implementation for the C++ parser. * ILanguage implementation for the C++ parser.
@ -38,17 +31,10 @@ import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory;
@SuppressWarnings("restriction") @SuppressWarnings("restriction")
public class ISOCPPLanguage extends BaseExtensibleLanguage { public class ISOCPPLanguage extends BaseExtensibleLanguage {
public static final String PLUGIN_ID = "org.eclipse.cdt.core.lrparser"; //$NON-NLS-1$ public static final String ID = "org.eclipse.cdt.core.lrparser.isocpp"; //$NON-NLS-1$
public static final String ID = PLUGIN_ID + ".isocpp"; //$NON-NLS-1$
private static final IDOMTokenMap TOKEN_MAP = DOMToISOCPPTokenMap.DEFAULT_MAP;
private static final IScannerExtensionConfiguration SCANNER_CONFIGURATION = ScannerExtensionConfiguration.createCPP();
private static ISOCPPLanguage DEFAULT = new ISOCPPLanguage(); private static ISOCPPLanguage DEFAULT = new ISOCPPLanguage();
public static ISOCPPLanguage getDefault() { public static ISOCPPLanguage getDefault() {
return DEFAULT; return DEFAULT;
} }
@ -60,12 +46,12 @@ public class ISOCPPLanguage extends BaseExtensibleLanguage {
@Override @Override
protected IDOMTokenMap getTokenMap() { protected IDOMTokenMap getTokenMap() {
return TOKEN_MAP; return DOMToISOCPPTokenMap.DEFAULT_MAP;
} }
@Override @Override
protected IScannerExtensionConfiguration getScannerExtensionConfiguration() { protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
return SCANNER_CONFIGURATION; return ScannerExtensionConfiguration.createCPP();
} }
public IContributedModelBuilder createModelBuilder(@SuppressWarnings("unused") ITranslationUnit tu) { public IContributedModelBuilder createModelBuilder(@SuppressWarnings("unused") ITranslationUnit tu) {
@ -85,31 +71,12 @@ public class ISOCPPLanguage extends BaseExtensibleLanguage {
return ParserLanguage.CPP; return ParserLanguage.CPP;
} }
private ICLanguageKeywords cppLanguageKeywords = new CLanguageKeywords(ParserLanguage.CPP, SCANNER_CONFIGURATION);
@SuppressWarnings("unchecked")
@Override
public Object getAdapter(Class adapter) {
if(IPDOMLinkageFactory.class.equals(adapter))
return new PDOMCPPLinkageFactory();
if(ICLanguageKeywords.class.equals(adapter))
return cppLanguageKeywords;
return super.getAdapter(adapter);
}
/** /**
* Gets the translation unit object and sets the index and the location resolver. * Gets the translation unit object and sets the index and the location resolver.
*/ */
@Override @Override
protected IASTTranslationUnit createASTTranslationUnit(IIndex index, IScanner preprocessor) { protected IASTTranslationUnit createASTTranslationUnit() {
IASTTranslationUnit tu = CPPNodeFactory.getDefault().newTranslationUnit(); return CPPNodeFactory.getDefault().newTranslationUnit();
tu.setIndex(index);
if(tu instanceof CPPASTTranslationUnit) {
((CPPASTTranslationUnit)tu).setLocationResolver(preprocessor.getLocationResolver());
}
return tu;
} }

View file

@ -0,0 +1,148 @@
/*******************************************************************************
* 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.dom.lrparser.gcc;
import static org.eclipse.cdt.core.parser.IToken.*;
import static org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParsersym.*;
import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
import org.eclipse.cdt.core.parser.IGCCToken;
import org.eclipse.cdt.core.parser.IToken;
/**
* Maps tokens types returned by CPreprocessor to token types
* expected by the C99 parser.
*
* @author Mike Kucera
*/
public final class DOMToGCCTokenMap implements IDOMTokenMap {
public static final DOMToGCCTokenMap DEFAULT_MAP = new DOMToGCCTokenMap();
private DOMToGCCTokenMap() {
// just a private constructor
}
public int getEOFTokenKind() {
return TK_EOF_TOKEN;
}
public int getEOCTokenKind() {
return TK_EndOfCompletion;
}
public int mapKind(IToken token) {
switch(token.getType()) {
case tIDENTIFIER : return TK_identifier;
case tINTEGER : return TK_integer;
case tCOLON : return TK_Colon;
case tSEMI : return TK_SemiColon;
case tCOMMA : return TK_Comma;
case tQUESTION : return TK_Question;
case tLPAREN : return TK_LeftParen;
case tRPAREN : return TK_RightParen;
case tLBRACKET : return TK_LeftBracket;
case tRBRACKET : return TK_RightBracket;
case tLBRACE : return TK_LeftBrace;
case tRBRACE : return TK_RightBrace;
case tPLUSASSIGN : return TK_PlusAssign;
case tINCR : return TK_PlusPlus;
case tPLUS : return TK_Plus;
case tMINUSASSIGN : return TK_MinusAssign;
case tDECR : return TK_MinusMinus;
case tARROW : return TK_Arrow;
case tMINUS : return TK_Minus;
case tSTARASSIGN : return TK_StarAssign;
case tSTAR : return TK_Star;
case tMODASSIGN : return TK_PercentAssign;
case tMOD : return TK_Percent;
case tXORASSIGN : return TK_CaretAssign;
case tXOR : return TK_Caret;
case tAMPERASSIGN : return TK_AndAssign;
case tAND : return TK_AndAnd;
case tAMPER : return TK_And;
case tBITORASSIGN : return TK_OrAssign;
case tOR : return TK_OrOr;
case tBITOR : return TK_Or;
case tBITCOMPLEMENT: return TK_Tilde;
case tNOTEQUAL : return TK_NE;
case tNOT : return TK_Bang;
case tEQUAL : return TK_EQ;
case tASSIGN : return TK_Assign;
case tUNKNOWN_CHAR : return TK_Invalid;
case tSHIFTL : return TK_LeftShift;
case tLTEQUAL : return TK_LE;
case tLT : return TK_LT;
case tSHIFTRASSIGN : return TK_RightShiftAssign;
case tSHIFTR : return TK_RightShift;
case tGTEQUAL : return TK_GE;
case tGT : return TK_GT;
case tSHIFTLASSIGN : return TK_LeftShiftAssign;
case tELLIPSIS : return TK_DotDotDot;
case tDOT : return TK_Dot;
case tDIVASSIGN : return TK_SlashAssign;
case tDIV : return TK_Slash;
case t_auto : return TK_auto;
case t_break : return TK_break;
case t_case : return TK_case;
case t_char : return TK_char;
case t_const : return TK_const;
case t_continue : return TK_continue;
case t_default : return TK_default;
case t_do : return TK_do;
case t_double : return TK_double;
case t_else : return TK_else;
case t_enum : return TK_enum;
case t_extern : return TK_extern;
case t_float : return TK_float;
case t_for : return TK_for;
case t_goto : return TK_goto;
case t_if : return TK_if;
case t_inline : return TK_inline;
case t_int : return TK_int;
case t_long : return TK_long;
case t_register : return TK_register;
case t_return : return TK_return;
case t_short : return TK_short;
case t_sizeof : return TK_sizeof;
case t_static : return TK_static;
case t_signed : return TK_signed;
case t_struct : return TK_struct;
case t_switch : return TK_switch;
case t_typedef : return TK_typedef;
case t_union : return TK_union;
case t_unsigned : return TK_unsigned;
case t_void : return TK_void;
case t_volatile : return TK_volatile;
case t_while : return TK_while;
case tFLOATINGPT : return TK_floating;
case tSTRING : return TK_stringlit;
case tLSTRING : return TK_stringlit;
case tCHAR : return TK_charconst;
case tLCHAR : return TK_charconst;
case t__Bool : return TK__Bool;
case t__Complex : return TK__Complex;
case t__Imaginary : return TK__Imaginary;
case t_restrict : return TK_restrict;
case tCOMPLETION : return TK_Completion;
case tEOC : return TK_EndOfCompletion;
case tEND_OF_INPUT : return TK_EOF_TOKEN;
case IGCCToken.t__attribute__ : return TK___attribute__;
default:
assert false : "token not recognized by the GCC parser: " + token.getType(); //$NON-NLS-1$
return TK_Invalid;
}
}
}

View file

@ -0,0 +1,79 @@
/*******************************************************************************
* 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.dom.lrparser.gcc;
import org.eclipse.cdt.core.dom.ILinkage;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
import org.eclipse.cdt.core.dom.lrparser.IParser;
import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
import org.eclipse.cdt.core.dom.parser.c.GCCScannerExtensionConfiguration;
import org.eclipse.cdt.core.model.IContributedModelBuilder;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.internal.core.dom.lrparser.gcc.GCCParser;
import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
/**
* ILanguage implementation for the C99 parser.
*
* @author Mike Kucera
*/
@SuppressWarnings("restriction")
public class GCCLanguage extends BaseExtensibleLanguage {
public static final String ID = "org.eclipse.cdt.core.lrparser.gcc"; //$NON-NLS-1$
private static GCCLanguage DEFAULT = new GCCLanguage();
public static GCCLanguage getDefault() {
return DEFAULT;
}
@Override
protected IParser getParser() {
return new GCCParser();
}
@Override
protected IDOMTokenMap getTokenMap() {
return DOMToGCCTokenMap.DEFAULT_MAP;
}
@Override
protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
return GCCScannerExtensionConfiguration.getInstance();
}
public IContributedModelBuilder createModelBuilder(@SuppressWarnings("unused") ITranslationUnit tu) {
return null;
}
public String getId() {
return ID;
}
public int getLinkageID() {
return ILinkage.C_LINKAGE_ID;
}
@Override
protected ParserLanguage getParserLanguage() {
return ParserLanguage.C;
}
@Override
protected IASTTranslationUnit createASTTranslationUnit() {
return CNodeFactory.getDefault().newTranslationUnit();
}
}

View file

@ -0,0 +1,180 @@
/*******************************************************************************
* 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.dom.lrparser.gpp;
import static org.eclipse.cdt.core.parser.IToken.*;
import static org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParsersym.*;
import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
import org.eclipse.cdt.core.parser.IGCCToken;
import org.eclipse.cdt.core.parser.IToken;
/**
* Maps tokens types returned by CPreprocessor to token types
* expected by the C++ parser.
*
* @author Mike Kucera
*/
public class DOMToGPPTokenMap implements IDOMTokenMap {
public static final DOMToGPPTokenMap DEFAULT_MAP = new DOMToGPPTokenMap();
private DOMToGPPTokenMap() {
// just a private constructor
}
public int getEOFTokenKind() {
return TK_EOF_TOKEN;
}
public int getEOCTokenKind() {
return TK_EndOfCompletion;
}
public int mapKind(IToken token) {
switch(token.getType()) {
case tIDENTIFIER : return TK_identifier;
case tINTEGER : return TK_integer;
case tCOLONCOLON : return TK_ColonColon;
case tCOLON : return TK_Colon;
case tSEMI : return TK_SemiColon;
case tCOMMA : return TK_Comma;
case tQUESTION : return TK_Question;
case tLPAREN : return TK_LeftParen;
case tRPAREN : return TK_RightParen;
case tLBRACKET : return TK_LeftBracket;
case tRBRACKET : return TK_RightBracket;
case tLBRACE : return TK_LeftBrace;
case tRBRACE : return TK_RightBrace;
case tPLUSASSIGN : return TK_PlusAssign;
case tINCR : return TK_PlusPlus;
case tPLUS : return TK_Plus;
case tMINUSASSIGN : return TK_MinusAssign;
case tDECR : return TK_MinusMinus;
case tARROWSTAR : return TK_ArrowStar;
case tARROW : return TK_Arrow;
case tMINUS : return TK_Minus;
case tSTARASSIGN : return TK_StarAssign;
case tSTAR : return TK_Star;
case tMODASSIGN : return TK_PercentAssign;
case tMOD : return TK_Percent;
case tXORASSIGN : return TK_CaretAssign;
case tXOR : return TK_Caret;
case tAMPERASSIGN : return TK_AndAssign;
case tAND : return TK_AndAnd;
case tAMPER : return TK_And;
case tBITORASSIGN : return TK_OrAssign;
case tOR : return TK_OrOr;
case tBITOR : return TK_Or;
case tBITCOMPLEMENT: return TK_Tilde;
case tNOTEQUAL : return TK_NE;
case tNOT : return TK_Bang;
case tEQUAL : return TK_EQ;
case tASSIGN : return TK_Assign;
case tUNKNOWN_CHAR : return TK_Invalid;
case tSHIFTL : return TK_LeftShift;
case tLTEQUAL : return TK_LE;
case tLT : return TK_LT;
case tSHIFTRASSIGN : return TK_RightShiftAssign;
case tSHIFTR : return TK_RightShift;
case tGTEQUAL : return TK_GE;
case tGT : return TK_GT;
case tSHIFTLASSIGN : return TK_LeftShiftAssign;
case tELLIPSIS : return TK_DotDotDot;
case tDOTSTAR : return TK_DotStar;
case tDOT : return TK_Dot;
case tDIVASSIGN : return TK_SlashAssign;
case tDIV : return TK_Slash;
case t_asm : return TK_asm;
case t_auto : return TK_auto;
case t_bool : return TK_bool;
case t_break : return TK_break;
case t_case : return TK_case;
case t_catch : return TK_catch;
case t_char : return TK_char;
case t_class : return TK_class;
case t_const : return TK_const;
case t_const_cast : return TK_const_cast;
case t_continue : return TK_continue;
case t_default : return TK_default;
case t_delete : return TK_delete;
case t_do : return TK_do;
case t_double : return TK_double;
case t_dynamic_cast: return TK_dynamic_cast;
case t_else : return TK_else;
case t_enum : return TK_enum;
case t_explicit : return TK_explicit;
case t_export : return TK_export;
case t_extern : return TK_extern;
case t_false : return TK_false;
case t_float : return TK_float;
case t_for : return TK_for;
case t_friend : return TK_friend;
case t_goto : return TK_goto;
case t_if : return TK_if;
case t_inline : return TK_inline;
case t_int : return TK_int;
case t_long : return TK_long;
case t_mutable : return TK_mutable;
case t_namespace : return TK_namespace;
case t_new : return TK_new;
case t_operator : return TK_operator;
case t_private : return TK_private;
case t_protected : return TK_protected;
case t_public : return TK_public;
case t_register : return TK_register;
case t_reinterpret_cast : return TK_reinterpret_cast;
case t_return : return TK_return;
case t_short : return TK_short;
case t_sizeof : return TK_sizeof;
case t_static : return TK_static;
case t_static_cast : return TK_static_cast;
case t_signed : return TK_signed;
case t_struct : return TK_struct;
case t_switch : return TK_switch;
case t_template : return TK_template;
case t_this : return TK_this;
case t_throw : return TK_throw;
case t_true : return TK_true;
case t_try : return TK_try;
case t_typedef : return TK_typedef;
case t_typeid : return TK_typeid;
case t_typename : return TK_typename;
case t_union : return TK_union;
case t_unsigned : return TK_unsigned;
case t_using : return TK_using;
case t_virtual : return TK_virtual;
case t_void : return TK_void;
case t_volatile : return TK_volatile;
case t_wchar_t : return TK_wchar_t;
case t_while : return TK_while;
case tFLOATINGPT : return TK_floating;
case tSTRING : return TK_stringlit;
case tLSTRING : return TK_stringlit;
case tCHAR : return TK_charconst;
case tLCHAR : return TK_charconst;
case tCOMPLETION : return TK_Completion;
case tEOC : return TK_EndOfCompletion;
case tEND_OF_INPUT : return TK_EOF_TOKEN;
case IGCCToken.t__attribute__ : return TK___attribute__;
default:
assert false : "token not recognized by the GPP parser: " + token.getType(); //$NON-NLS-1$
return TK_Invalid;
}
}
}

View file

@ -0,0 +1,79 @@
/*******************************************************************************
* 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core.dom.lrparser.gpp;
import org.eclipse.cdt.core.dom.ILinkage;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.BaseExtensibleLanguage;
import org.eclipse.cdt.core.dom.lrparser.IDOMTokenMap;
import org.eclipse.cdt.core.dom.lrparser.IParser;
import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
import org.eclipse.cdt.core.dom.parser.c.GCCScannerExtensionConfiguration;
import org.eclipse.cdt.core.model.IContributedModelBuilder;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.internal.core.dom.lrparser.gpp.GPPParser;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNodeFactory;
/**
* ILanguage implementation for the GPP parser.
*
* @author Mike Kucera
*/
@SuppressWarnings("restriction")
public class GPPLanguage extends BaseExtensibleLanguage {
public static final String ID = "org.eclipse.cdt.core.lrparser.gpp"; //$NON-NLS-1$
private static GPPLanguage DEFAULT = new GPPLanguage();
public static GPPLanguage getDefault() {
return DEFAULT;
}
@Override
protected IParser getParser() {
return new GPPParser();
}
@Override
protected IDOMTokenMap getTokenMap() {
return DOMToGPPTokenMap.DEFAULT_MAP;
}
@Override
protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
return GCCScannerExtensionConfiguration.getInstance();
}
public IContributedModelBuilder createModelBuilder(@SuppressWarnings("unused") ITranslationUnit tu) {
return null;
}
public String getId() {
return ID;
}
public int getLinkageID() {
return ILinkage.CPP_LINKAGE_ID;
}
@Override
protected ParserLanguage getParserLanguage() {
return ParserLanguage.CPP;
}
@Override
protected IASTTranslationUnit createASTTranslationUnit() {
return CPPNodeFactory.getDefault().newTranslationUnit();
}
}

View file

@ -591,7 +591,7 @@ public C99ExpressionParser(String[] mapFrom) { // constructor
} }
// //
// Rule 101: labeled_statement ::= identifier_or_typedefname : statement // Rule 101: labeled_statement ::= identifier_token : statement
// //
case 101: { action. consumeStatementLabeled(); break; case 101: { action. consumeStatementLabeled(); break;
} }
@ -687,7 +687,7 @@ public C99ExpressionParser(String[] mapFrom) { // constructor
} }
// //
// Rule 121: jump_statement ::= goto identifier_or_typedefname ; // Rule 121: jump_statement ::= goto identifier_token ;
// //
case 121: { action. consumeStatementGoto(); break; case 121: { action. consumeStatementGoto(); break;
} }
@ -789,489 +789,477 @@ public C99ExpressionParser(String[] mapFrom) { // constructor
} }
// //
// Rule 182: struct_or_union_specifier ::= struct { <openscope-ast> struct_declaration_list_opt } // Rule 182: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
// //
case 182: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_struct); break; case 182: { action. consumeTypeSpecifierComposite(false); break;
} }
// //
// Rule 183: struct_or_union_specifier ::= union { <openscope-ast> struct_declaration_list_opt } // Rule 183: 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 183: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_union); break; case 183: { action. consumeTypeSpecifierComposite(true); break;
} }
// //
// Rule 184: struct_or_union_specifier ::= struct identifier_or_typedefname { <openscope-ast> struct_declaration_list_opt } // Rule 188: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
// //
case 184: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_struct); break; case 188: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break;
} }
// //
// Rule 185: struct_or_union_specifier ::= union identifier_or_typedefname { <openscope-ast> struct_declaration_list_opt } // Rule 189: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
// //
case 185: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_union); break; case 189: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break;
} }
// //
// Rule 186: elaborated_specifier ::= struct identifier_or_typedefname // Rule 190: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
// //
case 186: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break; case 190: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break;
} }
// //
// Rule 187: elaborated_specifier ::= union identifier_or_typedefname // Rule 196: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
// //
case 187: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break; case 196: { action. consumeStructDeclaration(true); break;
} }
// //
// Rule 188: elaborated_specifier ::= enum identifier_or_typedefname // Rule 197: struct_declaration ::= specifier_qualifier_list ;
// //
case 188: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break; case 197: { action. consumeStructDeclaration(false); break;
} }
// //
// Rule 193: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ; // Rule 198: struct_declaration ::= ERROR_TOKEN
// //
case 193: { action. consumeStructDeclaration(true); break; case 198: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 194: struct_declaration ::= specifier_qualifier_list ; // Rule 204: struct_declarator ::= : constant_expression
// //
case 194: { action. consumeStructDeclaration(false); break; case 204: { action. consumeBitField(false); break;
} }
// //
// Rule 195: struct_declaration ::= ERROR_TOKEN // Rule 205: struct_declarator ::= declarator : constant_expression
// //
case 195: { action. consumeDeclarationProblem(); break; case 205: { action. consumeBitField(true); break;
} }
// //
// Rule 201: struct_declarator ::= : constant_expression // Rule 206: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
// //
case 201: { action. consumeBitField(false); break; case 206: { action. consumeTypeSpecifierEnumeration(false); break;
} }
// //
// Rule 202: struct_declarator ::= declarator : constant_expression // Rule 207: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
// //
case 202: { action. consumeBitField(true); break; case 207: { action. consumeTypeSpecifierEnumeration(true); break;
} }
// //
// Rule 203: enum_specifier ::= enum { <openscope-ast> enumerator_list_opt comma_opt } // Rule 213: enumerator ::= identifier_token
// //
case 203: { action. consumeTypeSpecifierEnumeration(false); break; case 213: { action. consumeEnumerator(false); break;
} }
// //
// Rule 204: enum_specifier ::= enum identifier_or_typedefname { <openscope-ast> enumerator_list_opt comma_opt } // Rule 214: enumerator ::= identifier_token = constant_expression
// //
case 204: { action. consumeTypeSpecifierEnumeration(true); break; case 214: { action. consumeEnumerator(true); break;
} }
// //
// Rule 209: enumerator ::= identifier_or_typedefname // Rule 215: type_qualifier ::= type_qualifier_token
//
case 209: { action. consumeEnumerator(false); break;
}
//
// Rule 210: enumerator ::= identifier_or_typedefname = constant_expression
//
case 210: { action. consumeEnumerator(true); break;
}
//
// Rule 211: type_qualifier ::= type_qualifier_token
//
case 211: { action. consumeDeclSpecToken(); break;
}
//
// Rule 215: function_specifier ::= inline
// //
case 215: { action. consumeDeclSpecToken(); break; case 215: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 217: declarator ::= <openscope-ast> pointer_seq direct_declarator // Rule 219: function_specifier ::= inline
// //
case 217: { action. consumeDeclaratorWithPointer(true); break; case 219: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 222: basic_direct_declarator ::= declarator_id_name // Rule 221: declarator ::= <openscope-ast> pointer_seq direct_declarator
// //
case 222: { action. consumeDirectDeclaratorIdentifier(); break; case 221: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 223: basic_direct_declarator ::= ( declarator ) // Rule 226: basic_direct_declarator ::= declarator_id_name
// //
case 223: { action. consumeDirectDeclaratorBracketed(); break; case 226: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 224: declarator_id_name ::= identifier // Rule 227: basic_direct_declarator ::= ( declarator )
// //
case 224: { action. consumeIdentifierName(); break; case 227: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 225: array_direct_declarator ::= basic_direct_declarator array_modifier // Rule 228: declarator_id_name ::= identifier
// //
case 225: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 228: { action. consumeIdentifierName(); break;
} }
// //
// Rule 226: array_direct_declarator ::= array_direct_declarator array_modifier // Rule 229: array_direct_declarator ::= basic_direct_declarator array_modifier
// //
case 226: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 229: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 228: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list ) // Rule 230: array_direct_declarator ::= array_direct_declarator array_modifier
// //
case 228: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; case 230: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 229: function_direct_declarator ::= basic_direct_declarator ( ) // Rule 232: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
// //
case 229: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; case 232: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
} }
// //
// Rule 231: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator // Rule 233: function_direct_declarator ::= basic_direct_declarator ( )
// //
case 231: { action. consumeDeclaratorWithPointer(true); break; case 233: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
} }
// //
// Rule 232: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list ) // Rule 235: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
// //
case 232: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break; case 235: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 234: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator // Rule 236: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
// //
case 234: { action. consumeDeclaratorWithPointer(true); break; case 236: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break;
} }
// //
// Rule 235: identifier_list ::= identifier // Rule 238: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
// //
case 235: { action. consumeIdentifierKnR(); break; case 238: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 236: identifier_list ::= identifier_list , identifier // Rule 239: identifier_list ::= identifier
// //
case 236: { action. consumeIdentifierKnR(); break; case 239: { action. consumeIdentifierKnR(); break;
} }
// //
// Rule 237: array_modifier ::= [ ] // Rule 240: identifier_list ::= identifier_list , identifier
// //
case 237: { action. consumeDirectDeclaratorArrayModifier(false); break; case 240: { action. consumeIdentifierKnR(); break;
} }
// //
// Rule 238: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ] // Rule 241: array_modifier ::= [ ]
// //
case 238: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; case 241: { action. consumeDirectDeclaratorArrayModifier(false); break;
} }
// //
// Rule 239: array_modifier ::= [ assignment_expression ] // Rule 242: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
// //
case 239: { action. consumeDirectDeclaratorArrayModifier(true); break; case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break;
} }
// //
// Rule 240: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ] // Rule 243: array_modifier ::= [ assignment_expression ]
// //
case 240: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; case 243: { action. consumeDirectDeclaratorArrayModifier(true); break;
} }
// //
// Rule 241: array_modifier ::= [ static assignment_expression ] // Rule 244: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
// //
case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break;
} }
// //
// Rule 242: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ] // Rule 245: array_modifier ::= [ static assignment_expression ]
// //
case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; case 245: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break;
} }
// //
// Rule 243: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ] // Rule 246: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
// //
case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; case 246: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
} }
// //
// Rule 244: array_modifier ::= [ * ] // Rule 247: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
// //
case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; case 247: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
} }
// //
// Rule 245: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ] // Rule 248: array_modifier ::= [ * ]
// //
case 245: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; case 248: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break;
} }
// //
// Rule 247: pointer_seq ::= * // Rule 249: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
// //
case 247: { action. consumePointer(); break; case 249: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break;
} }
// //
// Rule 248: pointer_seq ::= pointer_seq * // Rule 251: pointer_seq ::= pointer_hook *
// //
case 248: { action. consumePointer(); break; case 251: { action. consumePointer(); break;
} }
// //
// Rule 249: pointer_seq ::= * <openscope-ast> type_qualifier_list // Rule 252: pointer_seq ::= pointer_seq pointer_hook *
// //
case 249: { action. consumePointerTypeQualifierList(); break; case 252: { action. consumePointer(); break;
} }
// //
// Rule 250: pointer_seq ::= pointer_seq * <openscope-ast> type_qualifier_list // Rule 253: pointer_seq ::= pointer_hook * <openscope-ast> type_qualifier_list
// //
case 250: { action. consumePointerTypeQualifierList(); break; case 253: { action. consumePointerTypeQualifierList(); break;
} }
// //
// Rule 253: parameter_type_list ::= parameter_list // Rule 254: pointer_seq ::= pointer_seq pointer_hook * <openscope-ast> type_qualifier_list
// //
case 253: { action. consumeEmpty(); break; case 254: { action. consumePointerTypeQualifierList(); break;
} }
// //
// Rule 254: parameter_type_list ::= parameter_list , ... // Rule 258: parameter_type_list ::= parameter_list
// //
case 254: { action. consumePlaceHolder(); break; case 258: { action. consumeEmpty(); break;
} }
// //
// Rule 255: parameter_type_list ::= ... // Rule 259: parameter_type_list ::= parameter_list , ...
// //
case 255: { action. consumePlaceHolder(); break; case 259: { action. consumePlaceHolder(); break;
} }
// //
// Rule 258: parameter_declaration ::= declaration_specifiers complete_parameter_declarator // Rule 260: parameter_type_list ::= ...
// //
case 258: { action. consumeParameterDeclaration(); break; case 260: { action. consumePlaceHolder(); break;
} }
// //
// Rule 259: parameter_declaration ::= declaration_specifiers // Rule 263: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
// //
case 259: { action. consumeParameterDeclarationWithoutDeclarator(); break; case 263: { action. consumeParameterDeclaration(); break;
} }
// //
// Rule 262: type_name ::= specifier_qualifier_list // Rule 264: parameter_declaration ::= declaration_specifiers
// //
case 262: { action. consumeTypeId(false); break; case 264: { action. consumeParameterDeclarationWithoutDeclarator(); break;
} }
// //
// Rule 263: type_name ::= specifier_qualifier_list abstract_declarator // Rule 267: type_name ::= specifier_qualifier_list
// //
case 263: { action. consumeTypeId(true); break; case 267: { action. consumeTypeId(false); break;
} }
// //
// Rule 265: abstract_declarator ::= <openscope-ast> pointer_seq // Rule 268: type_name ::= specifier_qualifier_list abstract_declarator
// //
case 265: { action. consumeDeclaratorWithPointer(false); break; case 268: { action. consumeTypeId(true); break;
} }
// //
// Rule 266: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator // Rule 270: abstract_declarator ::= <openscope-ast> pointer_seq
// //
case 266: { action. consumeDeclaratorWithPointer(false); break; case 270: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 270: basic_direct_abstract_declarator ::= ( abstract_declarator ) // Rule 271: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
// //
case 270: { action. consumeDirectDeclaratorBracketed(); break; case 271: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 271: array_direct_abstract_declarator ::= array_modifier // Rule 275: basic_direct_abstract_declarator ::= ( abstract_declarator )
// //
case 271: { action. consumeDirectDeclaratorArrayDeclarator(false); break; case 275: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 272: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // Rule 276: array_direct_abstract_declarator ::= array_modifier
// //
case 272: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 276: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
} }
// //
// Rule 273: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // Rule 277: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
// //
case 273: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 277: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 274: function_direct_abstract_declarator ::= ( ) // Rule 278: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
// //
case 274: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break; case 278: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 275: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( ) // Rule 279: function_direct_abstract_declarator ::= ( )
// //
case 275: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; case 279: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break;
} }
// //
// Rule 276: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list ) // Rule 280: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
// //
case 276: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break; case 280: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
} }
// //
// Rule 277: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list ) // Rule 281: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
// //
case 277: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; case 281: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
} }
// //
// Rule 278: initializer ::= assignment_expression // Rule 282: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
// //
case 278: { action. consumeInitializer(); break; case 282: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
} }
// //
// Rule 279: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list // Rule 283: initializer ::= assignment_expression
// //
case 279: { action. consumeInitializerList(); break; case 283: { action. consumeInitializer(); break;
} }
// //
// Rule 280: initializer ::= { <openscope-ast> } // Rule 284: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list
// //
case 280: { action. consumeInitializerList(); break; case 284: { action. consumeInitializerList(); break;
} }
// //
// Rule 281: start_initializer_list ::= $Empty // Rule 285: initializer ::= { <openscope-ast> }
// //
case 281: { action. initializerListStart(); break; case 285: { action. consumeInitializerList(); break;
} }
// //
// Rule 282: end_initializer_list ::= $Empty // Rule 286: start_initializer_list ::= $Empty
// //
case 282: { action. initializerListEnd(); break; case 286: { action. initializerListStart(); break;
} }
// //
// Rule 287: designated_initializer ::= <openscope-ast> designation = initializer // Rule 287: end_initializer_list ::= $Empty
// //
case 287: { action. consumeInitializerDesignated(); break; case 287: { action. initializerListEnd(); break;
} }
// //
// Rule 291: designator_base ::= [ constant_expression ] // Rule 292: designated_initializer ::= <openscope-ast> designation = initializer
// //
case 291: { action. consumeDesignatorArray(); break; case 292: { action. consumeInitializerDesignated(); break;
} }
// //
// Rule 292: designator_base ::= . identifier_or_typedefname // Rule 296: designator_base ::= [ constant_expression ]
// //
case 292: { action. consumeDesignatorField(); break; case 296: { action. consumeDesignatorArray(); break;
} }
// //
// Rule 293: designator ::= [ constant_expression ] // Rule 297: designator_base ::= . identifier_token
// //
case 293: { action. consumeDesignatorArray(); break; case 297: { action. consumeDesignatorField(); break;
} }
// //
// Rule 294: designator ::= . identifier_or_typedefname // Rule 298: designator ::= [ constant_expression ]
// //
case 294: { action. consumeDesignatorField(); break; case 298: { action. consumeDesignatorArray(); break;
} }
// //
// Rule 295: translation_unit ::= external_declaration_list // Rule 299: designator ::= . identifier_token
// //
case 295: { action. consumeTranslationUnit(); break; case 299: { action. consumeDesignatorField(); break;
} }
// //
// Rule 296: translation_unit ::= $Empty // Rule 300: translation_unit ::= external_declaration_list
// //
case 296: { action. consumeTranslationUnit(); break; case 300: { action. consumeTranslationUnit(); break;
} }
// //
// Rule 301: external_declaration ::= ; // Rule 301: translation_unit ::= $Empty
// //
case 301: { action. consumeDeclarationEmpty(); break; case 301: { action. consumeTranslationUnit(); break;
} }
// //
// Rule 302: external_declaration ::= ERROR_TOKEN // Rule 306: external_declaration ::= ;
// //
case 302: { action. consumeDeclarationProblem(); break; case 306: { action. consumeDeclarationEmpty(); break;
} }
// //
// Rule 305: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body // Rule 307: external_declaration ::= ERROR_TOKEN
// //
case 305: { action. consumeFunctionDefinition(true); break; case 307: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 306: function_definition ::= <openscope-ast> function_declarator function_body // Rule 310: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
// //
case 306: { action. consumeFunctionDefinition(false); break; case 310: { action. consumeFunctionDefinition(true); break;
} }
// //
// Rule 307: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement // Rule 311: function_definition ::= <openscope-ast> function_declarator function_body
// //
case 307: { action. consumeFunctionDefinitionKnR(); break; case 311: { action. consumeFunctionDefinition(false); break;
} }
// //
// Rule 308: function_body ::= { } // Rule 312: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
// //
case 308: { action. consumeStatementCompoundStatement(false); break; case 312: { action. consumeFunctionDefinitionKnR(); break;
} }
// //
// Rule 309: function_body ::= { <openscope-ast> block_item_list } // Rule 313: function_body ::= { }
// //
case 309: { action. consumeStatementCompoundStatement(true); break; case 313: { action. consumeStatementCompoundStatement(false); break;
} }
// //
// Rule 311: expression_parser_start ::= ERROR_TOKEN // Rule 314: function_body ::= { <openscope-ast> block_item_list }
// //
case 311: { action. consumeExpressionProblem(); break; case 314: { action. consumeStatementCompoundStatement(true); break;
}
//
// Rule 316: expression_parser_start ::= ERROR_TOKEN
//
case 316: { action. consumeExpressionProblem(); break;
} }

View file

@ -15,68 +15,68 @@ package org.eclipse.cdt.internal.core.dom.lrparser.c99;
public interface C99ExpressionParsersym { public interface C99ExpressionParsersym {
public final static int public final static int
TK_auto = 16, TK_auto = 24,
TK_break = 81, TK_break = 81,
TK_case = 82, TK_case = 82,
TK_char = 29, TK_char = 31,
TK_const = 6, TK_const = 6,
TK_continue = 83, TK_continue = 83,
TK_default = 84, TK_default = 84,
TK_do = 85, TK_do = 85,
TK_double = 30, TK_double = 32,
TK_else = 86, TK_else = 86,
TK_enum = 43, TK_enum = 44,
TK_extern = 17, TK_extern = 25,
TK_float = 31, TK_float = 33,
TK_for = 87, TK_for = 87,
TK_goto = 88, TK_goto = 88,
TK_if = 89, TK_if = 89,
TK_inline = 18, TK_inline = 26,
TK_int = 32, TK_int = 34,
TK_long = 33, TK_long = 35,
TK_register = 19, TK_register = 27,
TK_restrict = 7, TK_restrict = 7,
TK_return = 90, TK_return = 90,
TK_short = 34, TK_short = 36,
TK_signed = 35, TK_signed = 37,
TK_sizeof = 20, TK_sizeof = 16,
TK_static = 11, TK_static = 17,
TK_struct = 44, TK_struct = 45,
TK_switch = 91, TK_switch = 91,
TK_typedef = 21, TK_typedef = 28,
TK_union = 45, TK_union = 46,
TK_unsigned = 36, TK_unsigned = 38,
TK_void = 37, TK_void = 39,
TK_volatile = 8, TK_volatile = 8,
TK_while = 92, TK_while = 92,
TK__Bool = 38, TK__Bool = 40,
TK__Complex = 39, TK__Complex = 41,
TK__Imaginary = 40, TK__Imaginary = 42,
TK_integer = 22, TK_integer = 18,
TK_floating = 23, TK_floating = 19,
TK_charconst = 24, TK_charconst = 20,
TK_stringlit = 25, TK_stringlit = 21,
TK_identifier = 1, TK_identifier = 1,
TK_Completion = 3, TK_Completion = 3,
TK_EndOfCompletion = 5, TK_EndOfCompletion = 5,
TK_Invalid = 93, TK_Invalid = 93,
TK_LeftBracket = 13, TK_LeftBracket = 12,
TK_LeftParen = 2, TK_LeftParen = 2,
TK_LeftBrace = 26, TK_LeftBrace = 13,
TK_Dot = 52, TK_Dot = 52,
TK_Arrow = 67, TK_Arrow = 67,
TK_PlusPlus = 14, TK_PlusPlus = 14,
TK_MinusMinus = 15, TK_MinusMinus = 15,
TK_And = 12, TK_And = 11,
TK_Star = 4, TK_Star = 4,
TK_Plus = 9, TK_Plus = 9,
TK_Minus = 10, TK_Minus = 10,
TK_Tilde = 27, TK_Tilde = 22,
TK_Bang = 28, TK_Bang = 23,
TK_Slash = 53, TK_Slash = 53,
TK_Percent = 54, TK_Percent = 54,
TK_RightShift = 48, TK_RightShift = 47,
TK_LeftShift = 49, TK_LeftShift = 48,
TK_LT = 55, TK_LT = 55,
TK_GT = 56, TK_GT = 56,
TK_LE = 57, TK_LE = 57,
@ -89,7 +89,7 @@ public interface C99ExpressionParsersym {
TK_OrOr = 68, TK_OrOr = 68,
TK_Question = 69, TK_Question = 69,
TK_Colon = 59, TK_Colon = 59,
TK_DotDotDot = 50, TK_DotDotDot = 49,
TK_Assign = 60, TK_Assign = 60,
TK_StarAssign = 70, TK_StarAssign = 70,
TK_SlashAssign = 71, TK_SlashAssign = 71,
@ -101,12 +101,12 @@ public interface C99ExpressionParsersym {
TK_AndAssign = 77, TK_AndAssign = 77,
TK_CaretAssign = 78, TK_CaretAssign = 78,
TK_OrAssign = 79, TK_OrAssign = 79,
TK_Comma = 46, TK_Comma = 30,
TK_RightBracket = 51, TK_RightBracket = 50,
TK_RightParen = 41, TK_RightParen = 29,
TK_RightBrace = 42, TK_RightBrace = 43,
TK_SemiColon = 66, TK_SemiColon = 66,
TK_ERROR_TOKEN = 47, TK_ERROR_TOKEN = 51,
TK_EOF_TOKEN = 80; TK_EOF_TOKEN = 80;
public final static String orderedTerminalSymbols[] = { public final static String orderedTerminalSymbols[] = {
@ -121,24 +121,26 @@ public interface C99ExpressionParsersym {
"volatile", "volatile",
"Plus", "Plus",
"Minus", "Minus",
"static",
"And", "And",
"LeftBracket", "LeftBracket",
"LeftBrace",
"PlusPlus", "PlusPlus",
"MinusMinus", "MinusMinus",
"auto",
"extern",
"inline",
"register",
"sizeof", "sizeof",
"typedef", "static",
"integer", "integer",
"floating", "floating",
"charconst", "charconst",
"stringlit", "stringlit",
"LeftBrace",
"Tilde", "Tilde",
"Bang", "Bang",
"auto",
"extern",
"inline",
"register",
"typedef",
"RightParen",
"Comma",
"char", "char",
"double", "double",
"float", "float",
@ -151,17 +153,15 @@ public interface C99ExpressionParsersym {
"_Bool", "_Bool",
"_Complex", "_Complex",
"_Imaginary", "_Imaginary",
"RightParen",
"RightBrace", "RightBrace",
"enum", "enum",
"struct", "struct",
"union", "union",
"Comma",
"ERROR_TOKEN",
"RightShift", "RightShift",
"LeftShift", "LeftShift",
"DotDotDot", "DotDotDot",
"RightBracket", "RightBracket",
"ERROR_TOKEN",
"Dot", "Dot",
"Slash", "Slash",
"Percent", "Percent",

View file

@ -585,7 +585,7 @@ public C99NoCastExpressionParser(String[] mapFrom) { // constructor
} }
// //
// Rule 100: labeled_statement ::= identifier_or_typedefname : statement // Rule 100: labeled_statement ::= identifier_token : statement
// //
case 100: { action. consumeStatementLabeled(); break; case 100: { action. consumeStatementLabeled(); break;
} }
@ -681,7 +681,7 @@ public C99NoCastExpressionParser(String[] mapFrom) { // constructor
} }
// //
// Rule 120: jump_statement ::= goto identifier_or_typedefname ; // Rule 120: jump_statement ::= goto identifier_token ;
// //
case 120: { action. consumeStatementGoto(); break; case 120: { action. consumeStatementGoto(); break;
} }
@ -783,489 +783,477 @@ public C99NoCastExpressionParser(String[] mapFrom) { // constructor
} }
// //
// Rule 181: struct_or_union_specifier ::= struct { <openscope-ast> struct_declaration_list_opt } // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
// //
case 181: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_struct); break; case 181: { action. consumeTypeSpecifierComposite(false); break;
} }
// //
// Rule 182: struct_or_union_specifier ::= union { <openscope-ast> struct_declaration_list_opt } // Rule 182: 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 182: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_union); break; case 182: { action. consumeTypeSpecifierComposite(true); break;
} }
// //
// Rule 183: struct_or_union_specifier ::= struct identifier_or_typedefname { <openscope-ast> struct_declaration_list_opt } // Rule 187: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
// //
case 183: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_struct); break; case 187: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break;
} }
// //
// Rule 184: struct_or_union_specifier ::= union identifier_or_typedefname { <openscope-ast> struct_declaration_list_opt } // Rule 188: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
// //
case 184: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_union); break; case 188: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break;
} }
// //
// Rule 185: elaborated_specifier ::= struct identifier_or_typedefname // Rule 189: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
// //
case 185: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break; case 189: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break;
} }
// //
// Rule 186: elaborated_specifier ::= union identifier_or_typedefname // Rule 195: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
// //
case 186: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break; case 195: { action. consumeStructDeclaration(true); break;
} }
// //
// Rule 187: elaborated_specifier ::= enum identifier_or_typedefname // Rule 196: struct_declaration ::= specifier_qualifier_list ;
// //
case 187: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break; case 196: { action. consumeStructDeclaration(false); break;
} }
// //
// Rule 192: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ; // Rule 197: struct_declaration ::= ERROR_TOKEN
// //
case 192: { action. consumeStructDeclaration(true); break; case 197: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 193: struct_declaration ::= specifier_qualifier_list ; // Rule 203: struct_declarator ::= : constant_expression
// //
case 193: { action. consumeStructDeclaration(false); break; case 203: { action. consumeBitField(false); break;
} }
// //
// Rule 194: struct_declaration ::= ERROR_TOKEN // Rule 204: struct_declarator ::= declarator : constant_expression
// //
case 194: { action. consumeDeclarationProblem(); break; case 204: { action. consumeBitField(true); break;
} }
// //
// Rule 200: struct_declarator ::= : constant_expression // Rule 205: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
// //
case 200: { action. consumeBitField(false); break; case 205: { action. consumeTypeSpecifierEnumeration(false); break;
} }
// //
// Rule 201: struct_declarator ::= declarator : constant_expression // Rule 206: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
// //
case 201: { action. consumeBitField(true); break; case 206: { action. consumeTypeSpecifierEnumeration(true); break;
} }
// //
// Rule 202: enum_specifier ::= enum { <openscope-ast> enumerator_list_opt comma_opt } // Rule 212: enumerator ::= identifier_token
// //
case 202: { action. consumeTypeSpecifierEnumeration(false); break; case 212: { action. consumeEnumerator(false); break;
} }
// //
// Rule 203: enum_specifier ::= enum identifier_or_typedefname { <openscope-ast> enumerator_list_opt comma_opt } // Rule 213: enumerator ::= identifier_token = constant_expression
// //
case 203: { action. consumeTypeSpecifierEnumeration(true); break; case 213: { action. consumeEnumerator(true); break;
} }
// //
// Rule 208: enumerator ::= identifier_or_typedefname // Rule 214: type_qualifier ::= type_qualifier_token
//
case 208: { action. consumeEnumerator(false); break;
}
//
// Rule 209: enumerator ::= identifier_or_typedefname = constant_expression
//
case 209: { action. consumeEnumerator(true); break;
}
//
// Rule 210: type_qualifier ::= type_qualifier_token
//
case 210: { action. consumeDeclSpecToken(); break;
}
//
// Rule 214: function_specifier ::= inline
// //
case 214: { action. consumeDeclSpecToken(); break; case 214: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 216: declarator ::= <openscope-ast> pointer_seq direct_declarator // Rule 218: function_specifier ::= inline
// //
case 216: { action. consumeDeclaratorWithPointer(true); break; case 218: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 221: basic_direct_declarator ::= declarator_id_name // Rule 220: declarator ::= <openscope-ast> pointer_seq direct_declarator
// //
case 221: { action. consumeDirectDeclaratorIdentifier(); break; case 220: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 222: basic_direct_declarator ::= ( declarator ) // Rule 225: basic_direct_declarator ::= declarator_id_name
// //
case 222: { action. consumeDirectDeclaratorBracketed(); break; case 225: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 223: declarator_id_name ::= identifier // Rule 226: basic_direct_declarator ::= ( declarator )
// //
case 223: { action. consumeIdentifierName(); break; case 226: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 224: array_direct_declarator ::= basic_direct_declarator array_modifier // Rule 227: declarator_id_name ::= identifier
// //
case 224: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 227: { action. consumeIdentifierName(); break;
} }
// //
// Rule 225: array_direct_declarator ::= array_direct_declarator array_modifier // Rule 228: array_direct_declarator ::= basic_direct_declarator array_modifier
// //
case 225: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 228: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 227: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list ) // Rule 229: array_direct_declarator ::= array_direct_declarator array_modifier
// //
case 227: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; case 229: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 228: function_direct_declarator ::= basic_direct_declarator ( ) // Rule 231: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
// //
case 228: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; case 231: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
} }
// //
// Rule 230: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator // Rule 232: function_direct_declarator ::= basic_direct_declarator ( )
// //
case 230: { action. consumeDeclaratorWithPointer(true); break; case 232: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
} }
// //
// Rule 231: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list ) // Rule 234: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
// //
case 231: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break; case 234: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 233: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator // Rule 235: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
// //
case 233: { action. consumeDeclaratorWithPointer(true); break; case 235: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break;
} }
// //
// Rule 234: identifier_list ::= identifier // Rule 237: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
// //
case 234: { action. consumeIdentifierKnR(); break; case 237: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 235: identifier_list ::= identifier_list , identifier // Rule 238: identifier_list ::= identifier
// //
case 235: { action. consumeIdentifierKnR(); break; case 238: { action. consumeIdentifierKnR(); break;
} }
// //
// Rule 236: array_modifier ::= [ ] // Rule 239: identifier_list ::= identifier_list , identifier
// //
case 236: { action. consumeDirectDeclaratorArrayModifier(false); break; case 239: { action. consumeIdentifierKnR(); break;
} }
// //
// Rule 237: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ] // Rule 240: array_modifier ::= [ ]
// //
case 237: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; case 240: { action. consumeDirectDeclaratorArrayModifier(false); break;
} }
// //
// Rule 238: array_modifier ::= [ assignment_expression ] // Rule 241: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
// //
case 238: { action. consumeDirectDeclaratorArrayModifier(true); break; case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break;
} }
// //
// Rule 239: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ] // Rule 242: array_modifier ::= [ assignment_expression ]
// //
case 239: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; case 242: { action. consumeDirectDeclaratorArrayModifier(true); break;
} }
// //
// Rule 240: array_modifier ::= [ static assignment_expression ] // Rule 243: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
// //
case 240: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break;
} }
// //
// Rule 241: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ] // Rule 244: array_modifier ::= [ static assignment_expression ]
// //
case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break;
} }
// //
// Rule 242: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ] // Rule 245: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
// //
case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; case 245: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
} }
// //
// Rule 243: array_modifier ::= [ * ] // Rule 246: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
// //
case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; case 246: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
} }
// //
// Rule 244: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ] // Rule 247: array_modifier ::= [ * ]
// //
case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; case 247: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break;
} }
// //
// Rule 246: pointer_seq ::= * // Rule 248: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
// //
case 246: { action. consumePointer(); break; case 248: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break;
} }
// //
// Rule 247: pointer_seq ::= pointer_seq * // Rule 250: pointer_seq ::= pointer_hook *
// //
case 247: { action. consumePointer(); break; case 250: { action. consumePointer(); break;
} }
// //
// Rule 248: pointer_seq ::= * <openscope-ast> type_qualifier_list // Rule 251: pointer_seq ::= pointer_seq pointer_hook *
// //
case 248: { action. consumePointerTypeQualifierList(); break; case 251: { action. consumePointer(); break;
} }
// //
// Rule 249: pointer_seq ::= pointer_seq * <openscope-ast> type_qualifier_list // Rule 252: pointer_seq ::= pointer_hook * <openscope-ast> type_qualifier_list
// //
case 249: { action. consumePointerTypeQualifierList(); break; case 252: { action. consumePointerTypeQualifierList(); break;
} }
// //
// Rule 252: parameter_type_list ::= parameter_list // Rule 253: pointer_seq ::= pointer_seq pointer_hook * <openscope-ast> type_qualifier_list
// //
case 252: { action. consumeEmpty(); break; case 253: { action. consumePointerTypeQualifierList(); break;
} }
// //
// Rule 253: parameter_type_list ::= parameter_list , ... // Rule 257: parameter_type_list ::= parameter_list
// //
case 253: { action. consumePlaceHolder(); break; case 257: { action. consumeEmpty(); break;
} }
// //
// Rule 254: parameter_type_list ::= ... // Rule 258: parameter_type_list ::= parameter_list , ...
// //
case 254: { action. consumePlaceHolder(); break; case 258: { action. consumePlaceHolder(); break;
} }
// //
// Rule 257: parameter_declaration ::= declaration_specifiers complete_parameter_declarator // Rule 259: parameter_type_list ::= ...
// //
case 257: { action. consumeParameterDeclaration(); break; case 259: { action. consumePlaceHolder(); break;
} }
// //
// Rule 258: parameter_declaration ::= declaration_specifiers // Rule 262: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
// //
case 258: { action. consumeParameterDeclarationWithoutDeclarator(); break; case 262: { action. consumeParameterDeclaration(); break;
} }
// //
// Rule 261: type_name ::= specifier_qualifier_list // Rule 263: parameter_declaration ::= declaration_specifiers
// //
case 261: { action. consumeTypeId(false); break; case 263: { action. consumeParameterDeclarationWithoutDeclarator(); break;
} }
// //
// Rule 262: type_name ::= specifier_qualifier_list abstract_declarator // Rule 266: type_name ::= specifier_qualifier_list
// //
case 262: { action. consumeTypeId(true); break; case 266: { action. consumeTypeId(false); break;
} }
// //
// Rule 264: abstract_declarator ::= <openscope-ast> pointer_seq // Rule 267: type_name ::= specifier_qualifier_list abstract_declarator
// //
case 264: { action. consumeDeclaratorWithPointer(false); break; case 267: { action. consumeTypeId(true); break;
} }
// //
// Rule 265: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq
// //
case 265: { action. consumeDeclaratorWithPointer(false); break; case 269: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 269: basic_direct_abstract_declarator ::= ( abstract_declarator ) // Rule 270: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
// //
case 269: { action. consumeDirectDeclaratorBracketed(); break; case 270: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 270: array_direct_abstract_declarator ::= array_modifier // Rule 274: basic_direct_abstract_declarator ::= ( abstract_declarator )
// //
case 270: { action. consumeDirectDeclaratorArrayDeclarator(false); break; case 274: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 271: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // Rule 275: array_direct_abstract_declarator ::= array_modifier
// //
case 271: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 275: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
} }
// //
// Rule 272: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // Rule 276: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
// //
case 272: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 276: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 273: function_direct_abstract_declarator ::= ( ) // Rule 277: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
// //
case 273: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break; case 277: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 274: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( ) // Rule 278: function_direct_abstract_declarator ::= ( )
// //
case 274: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; case 278: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break;
} }
// //
// Rule 275: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list ) // Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
// //
case 275: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break; case 279: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
} }
// //
// Rule 276: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list ) // Rule 280: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
// //
case 276: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; case 280: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
} }
// //
// Rule 277: initializer ::= assignment_expression // Rule 281: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
// //
case 277: { action. consumeInitializer(); break; case 281: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
} }
// //
// Rule 278: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list // Rule 282: initializer ::= assignment_expression
// //
case 278: { action. consumeInitializerList(); break; case 282: { action. consumeInitializer(); break;
} }
// //
// Rule 279: initializer ::= { <openscope-ast> } // Rule 283: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list
// //
case 279: { action. consumeInitializerList(); break; case 283: { action. consumeInitializerList(); break;
} }
// //
// Rule 280: start_initializer_list ::= $Empty // Rule 284: initializer ::= { <openscope-ast> }
// //
case 280: { action. initializerListStart(); break; case 284: { action. consumeInitializerList(); break;
} }
// //
// Rule 281: end_initializer_list ::= $Empty // Rule 285: start_initializer_list ::= $Empty
// //
case 281: { action. initializerListEnd(); break; case 285: { action. initializerListStart(); break;
} }
// //
// Rule 286: designated_initializer ::= <openscope-ast> designation = initializer // Rule 286: end_initializer_list ::= $Empty
// //
case 286: { action. consumeInitializerDesignated(); break; case 286: { action. initializerListEnd(); break;
} }
// //
// Rule 290: designator_base ::= [ constant_expression ] // Rule 291: designated_initializer ::= <openscope-ast> designation = initializer
// //
case 290: { action. consumeDesignatorArray(); break; case 291: { action. consumeInitializerDesignated(); break;
} }
// //
// Rule 291: designator_base ::= . identifier_or_typedefname // Rule 295: designator_base ::= [ constant_expression ]
// //
case 291: { action. consumeDesignatorField(); break; case 295: { action. consumeDesignatorArray(); break;
} }
// //
// Rule 292: designator ::= [ constant_expression ] // Rule 296: designator_base ::= . identifier_token
// //
case 292: { action. consumeDesignatorArray(); break; case 296: { action. consumeDesignatorField(); break;
} }
// //
// Rule 293: designator ::= . identifier_or_typedefname // Rule 297: designator ::= [ constant_expression ]
// //
case 293: { action. consumeDesignatorField(); break; case 297: { action. consumeDesignatorArray(); break;
} }
// //
// Rule 294: translation_unit ::= external_declaration_list // Rule 298: designator ::= . identifier_token
// //
case 294: { action. consumeTranslationUnit(); break; case 298: { action. consumeDesignatorField(); break;
} }
// //
// Rule 295: translation_unit ::= $Empty // Rule 299: translation_unit ::= external_declaration_list
// //
case 295: { action. consumeTranslationUnit(); break; case 299: { action. consumeTranslationUnit(); break;
} }
// //
// Rule 300: external_declaration ::= ; // Rule 300: translation_unit ::= $Empty
// //
case 300: { action. consumeDeclarationEmpty(); break; case 300: { action. consumeTranslationUnit(); break;
} }
// //
// Rule 301: external_declaration ::= ERROR_TOKEN // Rule 305: external_declaration ::= ;
// //
case 301: { action. consumeDeclarationProblem(); break; case 305: { action. consumeDeclarationEmpty(); break;
} }
// //
// Rule 304: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body // Rule 306: external_declaration ::= ERROR_TOKEN
// //
case 304: { action. consumeFunctionDefinition(true); break; case 306: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 305: function_definition ::= <openscope-ast> function_declarator function_body // Rule 309: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
// //
case 305: { action. consumeFunctionDefinition(false); break; case 309: { action. consumeFunctionDefinition(true); break;
} }
// //
// Rule 306: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement // Rule 310: function_definition ::= <openscope-ast> function_declarator function_body
// //
case 306: { action. consumeFunctionDefinitionKnR(); break; case 310: { action. consumeFunctionDefinition(false); break;
} }
// //
// Rule 307: function_body ::= { } // Rule 311: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
// //
case 307: { action. consumeStatementCompoundStatement(false); break; case 311: { action. consumeFunctionDefinitionKnR(); break;
} }
// //
// Rule 308: function_body ::= { <openscope-ast> block_item_list } // Rule 312: function_body ::= { }
// //
case 308: { action. consumeStatementCompoundStatement(true); break; case 312: { action. consumeStatementCompoundStatement(false); break;
} }
// //
// Rule 310: no_cast_start ::= ERROR_TOKEN // Rule 313: function_body ::= { <openscope-ast> block_item_list }
// //
case 310: { action. consumeExpressionProblem(); break; case 313: { action. consumeStatementCompoundStatement(true); break;
}
//
// Rule 315: no_cast_start ::= ERROR_TOKEN
//
case 315: { action. consumeExpressionProblem(); break;
} }

View file

@ -15,43 +15,43 @@ package org.eclipse.cdt.internal.core.dom.lrparser.c99;
public interface C99NoCastExpressionParsersym { public interface C99NoCastExpressionParsersym {
public final static int public final static int
TK_auto = 13, TK_auto = 17,
TK_break = 81, TK_break = 81,
TK_case = 82, TK_case = 82,
TK_char = 29, TK_char = 31,
TK_const = 6, TK_const = 6,
TK_continue = 83, TK_continue = 83,
TK_default = 84, TK_default = 84,
TK_do = 85, TK_do = 85,
TK_double = 30, TK_double = 32,
TK_else = 86, TK_else = 86,
TK_enum = 43, TK_enum = 44,
TK_extern = 14, TK_extern = 18,
TK_float = 31, TK_float = 33,
TK_for = 87, TK_for = 87,
TK_goto = 88, TK_goto = 88,
TK_if = 89, TK_if = 89,
TK_inline = 15, TK_inline = 19,
TK_int = 32, TK_int = 34,
TK_long = 33, TK_long = 35,
TK_register = 16, TK_register = 20,
TK_restrict = 7, TK_restrict = 7,
TK_return = 90, TK_return = 90,
TK_short = 34, TK_short = 36,
TK_signed = 35, TK_signed = 37,
TK_sizeof = 22, TK_sizeof = 21,
TK_static = 9, TK_static = 12,
TK_struct = 44, TK_struct = 45,
TK_switch = 91, TK_switch = 91,
TK_typedef = 17, TK_typedef = 22,
TK_union = 45, TK_union = 46,
TK_unsigned = 36, TK_unsigned = 38,
TK_void = 37, TK_void = 39,
TK_volatile = 8, TK_volatile = 8,
TK_while = 92, TK_while = 92,
TK__Bool = 38, TK__Bool = 40,
TK__Complex = 39, TK__Complex = 41,
TK__Imaginary = 40, TK__Imaginary = 42,
TK_integer = 23, TK_integer = 23,
TK_floating = 24, TK_floating = 24,
TK_charconst = 25, TK_charconst = 25,
@ -60,23 +60,23 @@ public interface C99NoCastExpressionParsersym {
TK_Completion = 3, TK_Completion = 3,
TK_EndOfCompletion = 5, TK_EndOfCompletion = 5,
TK_Invalid = 93, TK_Invalid = 93,
TK_LeftBracket = 10, TK_LeftBracket = 9,
TK_LeftParen = 2, TK_LeftParen = 2,
TK_LeftBrace = 19, TK_LeftBrace = 13,
TK_Dot = 52, TK_Dot = 52,
TK_Arrow = 67, TK_Arrow = 67,
TK_PlusPlus = 20, TK_PlusPlus = 15,
TK_MinusMinus = 21, TK_MinusMinus = 16,
TK_And = 18, TK_And = 14,
TK_Star = 4, TK_Star = 4,
TK_Plus = 11, TK_Plus = 10,
TK_Minus = 12, TK_Minus = 11,
TK_Tilde = 27, TK_Tilde = 27,
TK_Bang = 28, TK_Bang = 28,
TK_Slash = 53, TK_Slash = 53,
TK_Percent = 54, TK_Percent = 54,
TK_RightShift = 48, TK_RightShift = 47,
TK_LeftShift = 49, TK_LeftShift = 48,
TK_LT = 55, TK_LT = 55,
TK_GT = 56, TK_GT = 56,
TK_LE = 57, TK_LE = 57,
@ -89,7 +89,7 @@ public interface C99NoCastExpressionParsersym {
TK_OrOr = 68, TK_OrOr = 68,
TK_Question = 69, TK_Question = 69,
TK_Colon = 59, TK_Colon = 59,
TK_DotDotDot = 50, TK_DotDotDot = 49,
TK_Assign = 60, TK_Assign = 60,
TK_StarAssign = 70, TK_StarAssign = 70,
TK_SlashAssign = 71, TK_SlashAssign = 71,
@ -101,12 +101,12 @@ public interface C99NoCastExpressionParsersym {
TK_AndAssign = 77, TK_AndAssign = 77,
TK_CaretAssign = 78, TK_CaretAssign = 78,
TK_OrAssign = 79, TK_OrAssign = 79,
TK_Comma = 46, TK_Comma = 30,
TK_RightBracket = 51, TK_RightBracket = 50,
TK_RightParen = 41, TK_RightParen = 29,
TK_RightBrace = 42, TK_RightBrace = 43,
TK_SemiColon = 66, TK_SemiColon = 66,
TK_ERROR_TOKEN = 47, TK_ERROR_TOKEN = 51,
TK_EOF_TOKEN = 80; TK_EOF_TOKEN = 80;
public final static String orderedTerminalSymbols[] = { public final static String orderedTerminalSymbols[] = {
@ -119,26 +119,28 @@ public interface C99NoCastExpressionParsersym {
"const", "const",
"restrict", "restrict",
"volatile", "volatile",
"static",
"LeftBracket", "LeftBracket",
"Plus", "Plus",
"Minus", "Minus",
"static",
"LeftBrace",
"And",
"PlusPlus",
"MinusMinus",
"auto", "auto",
"extern", "extern",
"inline", "inline",
"register", "register",
"typedef",
"And",
"LeftBrace",
"PlusPlus",
"MinusMinus",
"sizeof", "sizeof",
"typedef",
"integer", "integer",
"floating", "floating",
"charconst", "charconst",
"stringlit", "stringlit",
"Tilde", "Tilde",
"Bang", "Bang",
"RightParen",
"Comma",
"char", "char",
"double", "double",
"float", "float",
@ -151,17 +153,15 @@ public interface C99NoCastExpressionParsersym {
"_Bool", "_Bool",
"_Complex", "_Complex",
"_Imaginary", "_Imaginary",
"RightParen",
"RightBrace", "RightBrace",
"enum", "enum",
"struct", "struct",
"union", "union",
"Comma",
"ERROR_TOKEN",
"RightShift", "RightShift",
"LeftShift", "LeftShift",
"DotDotDot", "DotDotDot",
"RightBracket", "RightBracket",
"ERROR_TOKEN",
"Dot", "Dot",
"Slash", "Slash",
"Percent", "Percent",

View file

@ -591,7 +591,7 @@ public C99Parser(String[] mapFrom) { // constructor
} }
// //
// Rule 101: labeled_statement ::= identifier_or_typedefname : statement // Rule 101: labeled_statement ::= identifier_token : statement
// //
case 101: { action. consumeStatementLabeled(); break; case 101: { action. consumeStatementLabeled(); break;
} }
@ -687,7 +687,7 @@ public C99Parser(String[] mapFrom) { // constructor
} }
// //
// Rule 121: jump_statement ::= goto identifier_or_typedefname ; // Rule 121: jump_statement ::= goto identifier_token ;
// //
case 121: { action. consumeStatementGoto(); break; case 121: { action. consumeStatementGoto(); break;
} }
@ -789,483 +789,471 @@ public C99Parser(String[] mapFrom) { // constructor
} }
// //
// Rule 182: struct_or_union_specifier ::= struct { <openscope-ast> struct_declaration_list_opt } // Rule 182: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
// //
case 182: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_struct); break; case 182: { action. consumeTypeSpecifierComposite(false); break;
} }
// //
// Rule 183: struct_or_union_specifier ::= union { <openscope-ast> struct_declaration_list_opt } // Rule 183: 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 183: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_union); break; case 183: { action. consumeTypeSpecifierComposite(true); break;
} }
// //
// Rule 184: struct_or_union_specifier ::= struct identifier_or_typedefname { <openscope-ast> struct_declaration_list_opt } // Rule 188: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
// //
case 184: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_struct); break; case 188: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break;
} }
// //
// Rule 185: struct_or_union_specifier ::= union identifier_or_typedefname { <openscope-ast> struct_declaration_list_opt } // Rule 189: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
// //
case 185: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_union); break; case 189: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break;
} }
// //
// Rule 186: elaborated_specifier ::= struct identifier_or_typedefname // Rule 190: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
// //
case 186: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break; case 190: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break;
} }
// //
// Rule 187: elaborated_specifier ::= union identifier_or_typedefname // Rule 196: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
// //
case 187: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break; case 196: { action. consumeStructDeclaration(true); break;
} }
// //
// Rule 188: elaborated_specifier ::= enum identifier_or_typedefname // Rule 197: struct_declaration ::= specifier_qualifier_list ;
// //
case 188: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break; case 197: { action. consumeStructDeclaration(false); break;
} }
// //
// Rule 193: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ; // Rule 198: struct_declaration ::= ERROR_TOKEN
// //
case 193: { action. consumeStructDeclaration(true); break; case 198: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 194: struct_declaration ::= specifier_qualifier_list ; // Rule 204: struct_declarator ::= : constant_expression
// //
case 194: { action. consumeStructDeclaration(false); break; case 204: { action. consumeBitField(false); break;
} }
// //
// Rule 195: struct_declaration ::= ERROR_TOKEN // Rule 205: struct_declarator ::= declarator : constant_expression
// //
case 195: { action. consumeDeclarationProblem(); break; case 205: { action. consumeBitField(true); break;
} }
// //
// Rule 201: struct_declarator ::= : constant_expression // Rule 206: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
// //
case 201: { action. consumeBitField(false); break; case 206: { action. consumeTypeSpecifierEnumeration(false); break;
} }
// //
// Rule 202: struct_declarator ::= declarator : constant_expression // Rule 207: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
// //
case 202: { action. consumeBitField(true); break; case 207: { action. consumeTypeSpecifierEnumeration(true); break;
} }
// //
// Rule 203: enum_specifier ::= enum { <openscope-ast> enumerator_list_opt comma_opt } // Rule 213: enumerator ::= identifier_token
// //
case 203: { action. consumeTypeSpecifierEnumeration(false); break; case 213: { action. consumeEnumerator(false); break;
} }
// //
// Rule 204: enum_specifier ::= enum identifier_or_typedefname { <openscope-ast> enumerator_list_opt comma_opt } // Rule 214: enumerator ::= identifier_token = constant_expression
// //
case 204: { action. consumeTypeSpecifierEnumeration(true); break; case 214: { action. consumeEnumerator(true); break;
} }
// //
// Rule 209: enumerator ::= identifier_or_typedefname // Rule 215: type_qualifier ::= type_qualifier_token
//
case 209: { action. consumeEnumerator(false); break;
}
//
// Rule 210: enumerator ::= identifier_or_typedefname = constant_expression
//
case 210: { action. consumeEnumerator(true); break;
}
//
// Rule 211: type_qualifier ::= type_qualifier_token
//
case 211: { action. consumeDeclSpecToken(); break;
}
//
// Rule 215: function_specifier ::= inline
// //
case 215: { action. consumeDeclSpecToken(); break; case 215: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 217: declarator ::= <openscope-ast> pointer_seq direct_declarator // Rule 219: function_specifier ::= inline
// //
case 217: { action. consumeDeclaratorWithPointer(true); break; case 219: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 222: basic_direct_declarator ::= declarator_id_name // Rule 221: declarator ::= <openscope-ast> pointer_seq direct_declarator
// //
case 222: { action. consumeDirectDeclaratorIdentifier(); break; case 221: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 223: basic_direct_declarator ::= ( declarator ) // Rule 226: basic_direct_declarator ::= declarator_id_name
// //
case 223: { action. consumeDirectDeclaratorBracketed(); break; case 226: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 224: declarator_id_name ::= identifier // Rule 227: basic_direct_declarator ::= ( declarator )
// //
case 224: { action. consumeIdentifierName(); break; case 227: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 225: array_direct_declarator ::= basic_direct_declarator array_modifier // Rule 228: declarator_id_name ::= identifier
// //
case 225: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 228: { action. consumeIdentifierName(); break;
} }
// //
// Rule 226: array_direct_declarator ::= array_direct_declarator array_modifier // Rule 229: array_direct_declarator ::= basic_direct_declarator array_modifier
// //
case 226: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 229: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 228: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list ) // Rule 230: array_direct_declarator ::= array_direct_declarator array_modifier
// //
case 228: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; case 230: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 229: function_direct_declarator ::= basic_direct_declarator ( ) // Rule 232: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
// //
case 229: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; case 232: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
} }
// //
// Rule 231: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator // Rule 233: function_direct_declarator ::= basic_direct_declarator ( )
// //
case 231: { action. consumeDeclaratorWithPointer(true); break; case 233: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
} }
// //
// Rule 232: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list ) // Rule 235: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
// //
case 232: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break; case 235: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 234: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator // Rule 236: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
// //
case 234: { action. consumeDeclaratorWithPointer(true); break; case 236: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break;
} }
// //
// Rule 235: identifier_list ::= identifier // Rule 238: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
// //
case 235: { action. consumeIdentifierKnR(); break; case 238: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 236: identifier_list ::= identifier_list , identifier // Rule 239: identifier_list ::= identifier
// //
case 236: { action. consumeIdentifierKnR(); break; case 239: { action. consumeIdentifierKnR(); break;
} }
// //
// Rule 237: array_modifier ::= [ ] // Rule 240: identifier_list ::= identifier_list , identifier
// //
case 237: { action. consumeDirectDeclaratorArrayModifier(false); break; case 240: { action. consumeIdentifierKnR(); break;
} }
// //
// Rule 238: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ] // Rule 241: array_modifier ::= [ ]
// //
case 238: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; case 241: { action. consumeDirectDeclaratorArrayModifier(false); break;
} }
// //
// Rule 239: array_modifier ::= [ assignment_expression ] // Rule 242: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
// //
case 239: { action. consumeDirectDeclaratorArrayModifier(true); break; case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break;
} }
// //
// Rule 240: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ] // Rule 243: array_modifier ::= [ assignment_expression ]
// //
case 240: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; case 243: { action. consumeDirectDeclaratorArrayModifier(true); break;
} }
// //
// Rule 241: array_modifier ::= [ static assignment_expression ] // Rule 244: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
// //
case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break;
} }
// //
// Rule 242: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ] // Rule 245: array_modifier ::= [ static assignment_expression ]
// //
case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; case 245: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break;
} }
// //
// Rule 243: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ] // Rule 246: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
// //
case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; case 246: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
} }
// //
// Rule 244: array_modifier ::= [ * ] // Rule 247: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
// //
case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; case 247: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
} }
// //
// Rule 245: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ] // Rule 248: array_modifier ::= [ * ]
// //
case 245: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; case 248: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break;
} }
// //
// Rule 247: pointer_seq ::= * // Rule 249: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
// //
case 247: { action. consumePointer(); break; case 249: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break;
} }
// //
// Rule 248: pointer_seq ::= pointer_seq * // Rule 251: pointer_seq ::= pointer_hook *
// //
case 248: { action. consumePointer(); break; case 251: { action. consumePointer(); break;
} }
// //
// Rule 249: pointer_seq ::= * <openscope-ast> type_qualifier_list // Rule 252: pointer_seq ::= pointer_seq pointer_hook *
// //
case 249: { action. consumePointerTypeQualifierList(); break; case 252: { action. consumePointer(); break;
} }
// //
// Rule 250: pointer_seq ::= pointer_seq * <openscope-ast> type_qualifier_list // Rule 253: pointer_seq ::= pointer_hook * <openscope-ast> type_qualifier_list
// //
case 250: { action. consumePointerTypeQualifierList(); break; case 253: { action. consumePointerTypeQualifierList(); break;
} }
// //
// Rule 253: parameter_type_list ::= parameter_list // Rule 254: pointer_seq ::= pointer_seq pointer_hook * <openscope-ast> type_qualifier_list
// //
case 253: { action. consumeEmpty(); break; case 254: { action. consumePointerTypeQualifierList(); break;
} }
// //
// Rule 254: parameter_type_list ::= parameter_list , ... // Rule 258: parameter_type_list ::= parameter_list
// //
case 254: { action. consumePlaceHolder(); break; case 258: { action. consumeEmpty(); break;
} }
// //
// Rule 255: parameter_type_list ::= ... // Rule 259: parameter_type_list ::= parameter_list , ...
// //
case 255: { action. consumePlaceHolder(); break; case 259: { action. consumePlaceHolder(); break;
} }
// //
// Rule 258: parameter_declaration ::= declaration_specifiers complete_parameter_declarator // Rule 260: parameter_type_list ::= ...
// //
case 258: { action. consumeParameterDeclaration(); break; case 260: { action. consumePlaceHolder(); break;
} }
// //
// Rule 259: parameter_declaration ::= declaration_specifiers // Rule 263: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
// //
case 259: { action. consumeParameterDeclarationWithoutDeclarator(); break; case 263: { action. consumeParameterDeclaration(); break;
} }
// //
// Rule 262: type_name ::= specifier_qualifier_list // Rule 264: parameter_declaration ::= declaration_specifiers
// //
case 262: { action. consumeTypeId(false); break; case 264: { action. consumeParameterDeclarationWithoutDeclarator(); break;
} }
// //
// Rule 263: type_name ::= specifier_qualifier_list abstract_declarator // Rule 267: type_name ::= specifier_qualifier_list
// //
case 263: { action. consumeTypeId(true); break; case 267: { action. consumeTypeId(false); break;
} }
// //
// Rule 265: abstract_declarator ::= <openscope-ast> pointer_seq // Rule 268: type_name ::= specifier_qualifier_list abstract_declarator
// //
case 265: { action. consumeDeclaratorWithPointer(false); break; case 268: { action. consumeTypeId(true); break;
} }
// //
// Rule 266: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator // Rule 270: abstract_declarator ::= <openscope-ast> pointer_seq
// //
case 266: { action. consumeDeclaratorWithPointer(false); break; case 270: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 270: basic_direct_abstract_declarator ::= ( abstract_declarator ) // Rule 271: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
// //
case 270: { action. consumeDirectDeclaratorBracketed(); break; case 271: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 271: array_direct_abstract_declarator ::= array_modifier // Rule 275: basic_direct_abstract_declarator ::= ( abstract_declarator )
// //
case 271: { action. consumeDirectDeclaratorArrayDeclarator(false); break; case 275: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 272: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // Rule 276: array_direct_abstract_declarator ::= array_modifier
// //
case 272: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 276: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
} }
// //
// Rule 273: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // Rule 277: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
// //
case 273: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 277: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 274: function_direct_abstract_declarator ::= ( ) // Rule 278: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
// //
case 274: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break; case 278: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 275: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( ) // Rule 279: function_direct_abstract_declarator ::= ( )
// //
case 275: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; case 279: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break;
} }
// //
// Rule 276: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list ) // Rule 280: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
// //
case 276: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break; case 280: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
} }
// //
// Rule 277: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list ) // Rule 281: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
// //
case 277: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; case 281: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
} }
// //
// Rule 278: initializer ::= assignment_expression // Rule 282: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
// //
case 278: { action. consumeInitializer(); break; case 282: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
} }
// //
// Rule 279: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list // Rule 283: initializer ::= assignment_expression
// //
case 279: { action. consumeInitializerList(); break; case 283: { action. consumeInitializer(); break;
} }
// //
// Rule 280: initializer ::= { <openscope-ast> } // Rule 284: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list
// //
case 280: { action. consumeInitializerList(); break; case 284: { action. consumeInitializerList(); break;
} }
// //
// Rule 281: start_initializer_list ::= $Empty // Rule 285: initializer ::= { <openscope-ast> }
// //
case 281: { action. initializerListStart(); break; case 285: { action. consumeInitializerList(); break;
} }
// //
// Rule 282: end_initializer_list ::= $Empty // Rule 286: start_initializer_list ::= $Empty
// //
case 282: { action. initializerListEnd(); break; case 286: { action. initializerListStart(); break;
} }
// //
// Rule 287: designated_initializer ::= <openscope-ast> designation = initializer // Rule 287: end_initializer_list ::= $Empty
// //
case 287: { action. consumeInitializerDesignated(); break; case 287: { action. initializerListEnd(); break;
} }
// //
// Rule 291: designator_base ::= [ constant_expression ] // Rule 292: designated_initializer ::= <openscope-ast> designation = initializer
// //
case 291: { action. consumeDesignatorArray(); break; case 292: { action. consumeInitializerDesignated(); break;
} }
// //
// Rule 292: designator_base ::= . identifier_or_typedefname // Rule 296: designator_base ::= [ constant_expression ]
// //
case 292: { action. consumeDesignatorField(); break; case 296: { action. consumeDesignatorArray(); break;
} }
// //
// Rule 293: designator ::= [ constant_expression ] // Rule 297: designator_base ::= . identifier_token
// //
case 293: { action. consumeDesignatorArray(); break; case 297: { action. consumeDesignatorField(); break;
} }
// //
// Rule 294: designator ::= . identifier_or_typedefname // Rule 298: designator ::= [ constant_expression ]
// //
case 294: { action. consumeDesignatorField(); break; case 298: { action. consumeDesignatorArray(); break;
} }
// //
// Rule 295: translation_unit ::= external_declaration_list // Rule 299: designator ::= . identifier_token
// //
case 295: { action. consumeTranslationUnit(); break; case 299: { action. consumeDesignatorField(); break;
} }
// //
// Rule 296: translation_unit ::= $Empty // Rule 300: translation_unit ::= external_declaration_list
// //
case 296: { action. consumeTranslationUnit(); break; case 300: { action. consumeTranslationUnit(); break;
} }
// //
// Rule 301: external_declaration ::= ; // Rule 301: translation_unit ::= $Empty
// //
case 301: { action. consumeDeclarationEmpty(); break; case 301: { action. consumeTranslationUnit(); break;
} }
// //
// Rule 302: external_declaration ::= ERROR_TOKEN // Rule 306: external_declaration ::= ;
// //
case 302: { action. consumeDeclarationProblem(); break; case 306: { action. consumeDeclarationEmpty(); break;
} }
// //
// Rule 305: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body // Rule 307: external_declaration ::= ERROR_TOKEN
// //
case 305: { action. consumeFunctionDefinition(true); break; case 307: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 306: function_definition ::= <openscope-ast> function_declarator function_body // Rule 310: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
// //
case 306: { action. consumeFunctionDefinition(false); break; case 310: { action. consumeFunctionDefinition(true); break;
} }
// //
// Rule 307: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement // Rule 311: function_definition ::= <openscope-ast> function_declarator function_body
// //
case 307: { action. consumeFunctionDefinitionKnR(); break; case 311: { action. consumeFunctionDefinition(false); break;
} }
// //
// Rule 308: function_body ::= { } // Rule 312: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
// //
case 308: { action. consumeStatementCompoundStatement(false); break; case 312: { action. consumeFunctionDefinitionKnR(); break;
} }
// //
// Rule 309: function_body ::= { <openscope-ast> block_item_list } // Rule 313: function_body ::= { }
// //
case 309: { action. consumeStatementCompoundStatement(true); break; case 313: { action. consumeStatementCompoundStatement(false); break;
}
//
// Rule 314: function_body ::= { <openscope-ast> block_item_list }
//
case 314: { action. consumeStatementCompoundStatement(true); break;
} }

View file

@ -16,42 +16,42 @@ package org.eclipse.cdt.internal.core.dom.lrparser.c99;
public interface C99Parsersym { public interface C99Parsersym {
public final static int public final static int
TK_auto = 24, TK_auto = 24,
TK_break = 43, TK_break = 31,
TK_case = 44, TK_case = 32,
TK_char = 30, TK_char = 42,
TK_const = 19, TK_const = 19,
TK_continue = 45, TK_continue = 33,
TK_default = 46, TK_default = 34,
TK_do = 47, TK_do = 35,
TK_double = 31, TK_double = 43,
TK_else = 79, TK_else = 79,
TK_enum = 48, TK_enum = 54,
TK_extern = 25, TK_extern = 25,
TK_float = 32, TK_float = 44,
TK_for = 49, TK_for = 36,
TK_goto = 50, TK_goto = 37,
TK_if = 51, TK_if = 38,
TK_inline = 26, TK_inline = 26,
TK_int = 33, TK_int = 45,
TK_long = 34, TK_long = 46,
TK_register = 27, TK_register = 27,
TK_restrict = 20, TK_restrict = 20,
TK_return = 52, TK_return = 39,
TK_short = 35, TK_short = 47,
TK_signed = 36, TK_signed = 48,
TK_sizeof = 12, TK_sizeof = 12,
TK_static = 23, TK_static = 23,
TK_struct = 53, TK_struct = 55,
TK_switch = 54, TK_switch = 40,
TK_typedef = 28, TK_typedef = 28,
TK_union = 55, TK_union = 56,
TK_unsigned = 37, TK_unsigned = 49,
TK_void = 38, TK_void = 50,
TK_volatile = 21, TK_volatile = 21,
TK_while = 39, TK_while = 30,
TK__Bool = 40, TK__Bool = 51,
TK__Complex = 41, TK__Complex = 52,
TK__Imaginary = 42, TK__Imaginary = 53,
TK_integer = 13, TK_integer = 13,
TK_floating = 14, TK_floating = 14,
TK_charconst = 15, TK_charconst = 15,
@ -60,7 +60,7 @@ public interface C99Parsersym {
TK_Completion = 3, TK_Completion = 3,
TK_EndOfCompletion = 4, TK_EndOfCompletion = 4,
TK_Invalid = 93, TK_Invalid = 93,
TK_LeftBracket = 56, TK_LeftBracket = 41,
TK_LeftParen = 2, TK_LeftParen = 2,
TK_LeftBrace = 6, TK_LeftBrace = 6,
TK_Dot = 66, TK_Dot = 66,
@ -101,10 +101,10 @@ public interface C99Parsersym {
TK_AndAssign = 90, TK_AndAssign = 90,
TK_CaretAssign = 91, TK_CaretAssign = 91,
TK_OrAssign = 92, TK_OrAssign = 92,
TK_Comma = 58, TK_Comma = 57,
TK_RightBracket = 65, TK_RightBracket = 65,
TK_RightParen = 59, TK_RightParen = 59,
TK_RightBrace = 57, TK_RightBrace = 58,
TK_SemiColon = 22, TK_SemiColon = 22,
TK_ERROR_TOKEN = 29, TK_ERROR_TOKEN = 29,
TK_EOF_TOKEN = 73; TK_EOF_TOKEN = 73;
@ -140,6 +140,18 @@ public interface C99Parsersym {
"register", "register",
"typedef", "typedef",
"ERROR_TOKEN", "ERROR_TOKEN",
"while",
"break",
"case",
"continue",
"default",
"do",
"for",
"goto",
"if",
"return",
"switch",
"LeftBracket",
"char", "char",
"double", "double",
"float", "float",
@ -149,26 +161,14 @@ public interface C99Parsersym {
"signed", "signed",
"unsigned", "unsigned",
"void", "void",
"while",
"_Bool", "_Bool",
"_Complex", "_Complex",
"_Imaginary", "_Imaginary",
"break",
"case",
"continue",
"default",
"do",
"enum", "enum",
"for",
"goto",
"if",
"return",
"struct", "struct",
"switch",
"union", "union",
"LeftBracket",
"RightBrace",
"Comma", "Comma",
"RightBrace",
"RightParen", "RightParen",
"Colon", "Colon",
"Assign", "Assign",

View file

@ -585,7 +585,7 @@ public C99SizeofExpressionParser(String[] mapFrom) { // constructor
} }
// //
// Rule 100: labeled_statement ::= identifier_or_typedefname : statement // Rule 100: labeled_statement ::= identifier_token : statement
// //
case 100: { action. consumeStatementLabeled(); break; case 100: { action. consumeStatementLabeled(); break;
} }
@ -681,7 +681,7 @@ public C99SizeofExpressionParser(String[] mapFrom) { // constructor
} }
// //
// Rule 120: jump_statement ::= goto identifier_or_typedefname ; // Rule 120: jump_statement ::= goto identifier_token ;
// //
case 120: { action. consumeStatementGoto(); break; case 120: { action. consumeStatementGoto(); break;
} }
@ -783,489 +783,477 @@ public C99SizeofExpressionParser(String[] mapFrom) { // constructor
} }
// //
// Rule 181: struct_or_union_specifier ::= struct { <openscope-ast> struct_declaration_list_opt } // Rule 181: struct_or_union_specifier ::= struct_or_union struct_or_union_specifier_hook { <openscope-ast> struct_declaration_list_opt }
// //
case 181: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_struct); break; case 181: { action. consumeTypeSpecifierComposite(false); break;
} }
// //
// Rule 182: struct_or_union_specifier ::= union { <openscope-ast> struct_declaration_list_opt } // Rule 182: 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 182: { action. consumeTypeSpecifierComposite(false, IASTCompositeTypeSpecifier.k_union); break; case 182: { action. consumeTypeSpecifierComposite(true); break;
} }
// //
// Rule 183: struct_or_union_specifier ::= struct identifier_or_typedefname { <openscope-ast> struct_declaration_list_opt } // Rule 187: elaborated_specifier ::= struct elaborated_specifier_hook identifier_token
// //
case 183: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_struct); break; case 187: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break;
} }
// //
// Rule 184: struct_or_union_specifier ::= union identifier_or_typedefname { <openscope-ast> struct_declaration_list_opt } // Rule 188: elaborated_specifier ::= union elaborated_specifier_hook identifier_token
// //
case 184: { action. consumeTypeSpecifierComposite(true, IASTCompositeTypeSpecifier.k_union); break; case 188: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break;
} }
// //
// Rule 185: elaborated_specifier ::= struct identifier_or_typedefname // Rule 189: elaborated_specifier ::= enum elaborated_specifier_hook identifier_token
// //
case 185: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_struct); break; case 189: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break;
} }
// //
// Rule 186: elaborated_specifier ::= union identifier_or_typedefname // Rule 195: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ;
// //
case 186: { action. consumeTypeSpecifierElaborated(IASTCompositeTypeSpecifier.k_union); break; case 195: { action. consumeStructDeclaration(true); break;
} }
// //
// Rule 187: elaborated_specifier ::= enum identifier_or_typedefname // Rule 196: struct_declaration ::= specifier_qualifier_list ;
// //
case 187: { action. consumeTypeSpecifierElaborated(IASTElaboratedTypeSpecifier.k_enum); break; case 196: { action. consumeStructDeclaration(false); break;
} }
// //
// Rule 192: struct_declaration ::= specifier_qualifier_list <openscope-ast> struct_declarator_list ; // Rule 197: struct_declaration ::= ERROR_TOKEN
// //
case 192: { action. consumeStructDeclaration(true); break; case 197: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 193: struct_declaration ::= specifier_qualifier_list ; // Rule 203: struct_declarator ::= : constant_expression
// //
case 193: { action. consumeStructDeclaration(false); break; case 203: { action. consumeBitField(false); break;
} }
// //
// Rule 194: struct_declaration ::= ERROR_TOKEN // Rule 204: struct_declarator ::= declarator : constant_expression
// //
case 194: { action. consumeDeclarationProblem(); break; case 204: { action. consumeBitField(true); break;
} }
// //
// Rule 200: struct_declarator ::= : constant_expression // Rule 205: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt comma_opt }
// //
case 200: { action. consumeBitField(false); break; case 205: { action. consumeTypeSpecifierEnumeration(false); break;
} }
// //
// Rule 201: struct_declarator ::= declarator : constant_expression // Rule 206: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt comma_opt }
// //
case 201: { action. consumeBitField(true); break; case 206: { action. consumeTypeSpecifierEnumeration(true); break;
} }
// //
// Rule 202: enum_specifier ::= enum { <openscope-ast> enumerator_list_opt comma_opt } // Rule 212: enumerator ::= identifier_token
// //
case 202: { action. consumeTypeSpecifierEnumeration(false); break; case 212: { action. consumeEnumerator(false); break;
} }
// //
// Rule 203: enum_specifier ::= enum identifier_or_typedefname { <openscope-ast> enumerator_list_opt comma_opt } // Rule 213: enumerator ::= identifier_token = constant_expression
// //
case 203: { action. consumeTypeSpecifierEnumeration(true); break; case 213: { action. consumeEnumerator(true); break;
} }
// //
// Rule 208: enumerator ::= identifier_or_typedefname // Rule 214: type_qualifier ::= type_qualifier_token
//
case 208: { action. consumeEnumerator(false); break;
}
//
// Rule 209: enumerator ::= identifier_or_typedefname = constant_expression
//
case 209: { action. consumeEnumerator(true); break;
}
//
// Rule 210: type_qualifier ::= type_qualifier_token
//
case 210: { action. consumeDeclSpecToken(); break;
}
//
// Rule 214: function_specifier ::= inline
// //
case 214: { action. consumeDeclSpecToken(); break; case 214: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 216: declarator ::= <openscope-ast> pointer_seq direct_declarator // Rule 218: function_specifier ::= inline
// //
case 216: { action. consumeDeclaratorWithPointer(true); break; case 218: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 221: basic_direct_declarator ::= declarator_id_name // Rule 220: declarator ::= <openscope-ast> pointer_seq direct_declarator
// //
case 221: { action. consumeDirectDeclaratorIdentifier(); break; case 220: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 222: basic_direct_declarator ::= ( declarator ) // Rule 225: basic_direct_declarator ::= declarator_id_name
// //
case 222: { action. consumeDirectDeclaratorBracketed(); break; case 225: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 223: declarator_id_name ::= identifier // Rule 226: basic_direct_declarator ::= ( declarator )
// //
case 223: { action. consumeIdentifierName(); break; case 226: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 224: array_direct_declarator ::= basic_direct_declarator array_modifier // Rule 227: declarator_id_name ::= identifier
// //
case 224: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 227: { action. consumeIdentifierName(); break;
} }
// //
// Rule 225: array_direct_declarator ::= array_direct_declarator array_modifier // Rule 228: array_direct_declarator ::= basic_direct_declarator array_modifier
// //
case 225: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 228: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 227: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list ) // Rule 229: array_direct_declarator ::= array_direct_declarator array_modifier
// //
case 227: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; case 229: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 228: function_direct_declarator ::= basic_direct_declarator ( ) // Rule 231: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_type_list )
// //
case 228: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; case 231: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
} }
// //
// Rule 230: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator // Rule 232: function_direct_declarator ::= basic_direct_declarator ( )
// //
case 230: { action. consumeDeclaratorWithPointer(true); break; case 232: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
} }
// //
// Rule 231: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list ) // Rule 234: function_declarator ::= <openscope-ast> pointer_seq function_direct_declarator
// //
case 231: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break; case 234: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 233: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator // Rule 235: knr_direct_declarator ::= basic_direct_declarator ( <openscope-ast> identifier_list )
// //
case 233: { action. consumeDeclaratorWithPointer(true); break; case 235: { action. consumeDirectDeclaratorFunctionDeclaratorKnR(); break;
} }
// //
// Rule 234: identifier_list ::= identifier // Rule 237: knr_function_declarator ::= <openscope-ast> pointer_seq knr_direct_declarator
// //
case 234: { action. consumeIdentifierKnR(); break; case 237: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 235: identifier_list ::= identifier_list , identifier // Rule 238: identifier_list ::= identifier
// //
case 235: { action. consumeIdentifierKnR(); break; case 238: { action. consumeIdentifierKnR(); break;
} }
// //
// Rule 236: array_modifier ::= [ ] // Rule 239: identifier_list ::= identifier_list , identifier
// //
case 236: { action. consumeDirectDeclaratorArrayModifier(false); break; case 239: { action. consumeIdentifierKnR(); break;
} }
// //
// Rule 237: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ] // Rule 240: array_modifier ::= [ ]
// //
case 237: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break; case 240: { action. consumeDirectDeclaratorArrayModifier(false); break;
} }
// //
// Rule 238: array_modifier ::= [ assignment_expression ] // Rule 241: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers ]
// //
case 238: { action. consumeDirectDeclaratorArrayModifier(true); break; case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, false); break;
} }
// //
// Rule 239: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ] // Rule 242: array_modifier ::= [ assignment_expression ]
// //
case 239: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break; case 242: { action. consumeDirectDeclaratorArrayModifier(true); break;
} }
// //
// Rule 240: array_modifier ::= [ static assignment_expression ] // Rule 243: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
// //
case 240: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break; case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(false, false, true, true); break;
} }
// //
// Rule 241: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ] // Rule 244: array_modifier ::= [ static assignment_expression ]
// //
case 241: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, false, true); break;
} }
// //
// Rule 242: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ] // Rule 245: array_modifier ::= [ static <openscope-ast> array_modifier_type_qualifiers assignment_expression ]
// //
case 242: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break; case 245: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
} }
// //
// Rule 243: array_modifier ::= [ * ] // Rule 246: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers static assignment_expression ]
// //
case 243: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break; case 246: { action. consumeDirectDeclaratorModifiedArrayModifier(true, false, true, true); break;
} }
// //
// Rule 244: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ] // Rule 247: array_modifier ::= [ * ]
// //
case 244: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break; case 247: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, false, false); break;
} }
// //
// Rule 246: pointer_seq ::= * // Rule 248: array_modifier ::= [ <openscope-ast> array_modifier_type_qualifiers * ]
// //
case 246: { action. consumePointer(); break; case 248: { action. consumeDirectDeclaratorModifiedArrayModifier(false, true, true, false); break;
} }
// //
// Rule 247: pointer_seq ::= pointer_seq * // Rule 250: pointer_seq ::= pointer_hook *
// //
case 247: { action. consumePointer(); break; case 250: { action. consumePointer(); break;
} }
// //
// Rule 248: pointer_seq ::= * <openscope-ast> type_qualifier_list // Rule 251: pointer_seq ::= pointer_seq pointer_hook *
// //
case 248: { action. consumePointerTypeQualifierList(); break; case 251: { action. consumePointer(); break;
} }
// //
// Rule 249: pointer_seq ::= pointer_seq * <openscope-ast> type_qualifier_list // Rule 252: pointer_seq ::= pointer_hook * <openscope-ast> type_qualifier_list
// //
case 249: { action. consumePointerTypeQualifierList(); break; case 252: { action. consumePointerTypeQualifierList(); break;
} }
// //
// Rule 252: parameter_type_list ::= parameter_list // Rule 253: pointer_seq ::= pointer_seq pointer_hook * <openscope-ast> type_qualifier_list
// //
case 252: { action. consumeEmpty(); break; case 253: { action. consumePointerTypeQualifierList(); break;
} }
// //
// Rule 253: parameter_type_list ::= parameter_list , ... // Rule 257: parameter_type_list ::= parameter_list
// //
case 253: { action. consumePlaceHolder(); break; case 257: { action. consumeEmpty(); break;
} }
// //
// Rule 254: parameter_type_list ::= ... // Rule 258: parameter_type_list ::= parameter_list , ...
// //
case 254: { action. consumePlaceHolder(); break; case 258: { action. consumePlaceHolder(); break;
} }
// //
// Rule 257: parameter_declaration ::= declaration_specifiers complete_parameter_declarator // Rule 259: parameter_type_list ::= ...
// //
case 257: { action. consumeParameterDeclaration(); break; case 259: { action. consumePlaceHolder(); break;
} }
// //
// Rule 258: parameter_declaration ::= declaration_specifiers // Rule 262: parameter_declaration ::= declaration_specifiers complete_parameter_declarator
// //
case 258: { action. consumeParameterDeclarationWithoutDeclarator(); break; case 262: { action. consumeParameterDeclaration(); break;
} }
// //
// Rule 261: type_name ::= specifier_qualifier_list // Rule 263: parameter_declaration ::= declaration_specifiers
// //
case 261: { action. consumeTypeId(false); break; case 263: { action. consumeParameterDeclarationWithoutDeclarator(); break;
} }
// //
// Rule 262: type_name ::= specifier_qualifier_list abstract_declarator // Rule 266: type_name ::= specifier_qualifier_list
// //
case 262: { action. consumeTypeId(true); break; case 266: { action. consumeTypeId(false); break;
} }
// //
// Rule 264: abstract_declarator ::= <openscope-ast> pointer_seq // Rule 267: type_name ::= specifier_qualifier_list abstract_declarator
// //
case 264: { action. consumeDeclaratorWithPointer(false); break; case 267: { action. consumeTypeId(true); break;
} }
// //
// Rule 265: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator // Rule 269: abstract_declarator ::= <openscope-ast> pointer_seq
// //
case 265: { action. consumeDeclaratorWithPointer(false); break; case 269: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 269: basic_direct_abstract_declarator ::= ( abstract_declarator ) // Rule 270: abstract_declarator ::= <openscope-ast> pointer_seq direct_abstract_declarator
// //
case 269: { action. consumeDirectDeclaratorBracketed(); break; case 270: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 270: array_direct_abstract_declarator ::= array_modifier // Rule 274: basic_direct_abstract_declarator ::= ( abstract_declarator )
// //
case 270: { action. consumeDirectDeclaratorArrayDeclarator(false); break; case 274: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 271: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // Rule 275: array_direct_abstract_declarator ::= array_modifier
// //
case 271: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 275: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
} }
// //
// Rule 272: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // Rule 276: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
// //
case 272: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 276: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 273: function_direct_abstract_declarator ::= ( ) // Rule 277: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
// //
case 273: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break; case 277: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 274: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( ) // Rule 278: function_direct_abstract_declarator ::= ( )
// //
case 274: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break; case 278: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break;
} }
// //
// Rule 275: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list ) // Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
// //
case 275: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break; case 279: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
} }
// //
// Rule 276: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list ) // Rule 280: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
// //
case 276: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break; case 280: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
} }
// //
// Rule 277: initializer ::= assignment_expression // Rule 281: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
// //
case 277: { action. consumeInitializer(); break; case 281: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
} }
// //
// Rule 278: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list // Rule 282: initializer ::= assignment_expression
// //
case 278: { action. consumeInitializerList(); break; case 282: { action. consumeInitializer(); break;
} }
// //
// Rule 279: initializer ::= { <openscope-ast> } // Rule 283: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list
// //
case 279: { action. consumeInitializerList(); break; case 283: { action. consumeInitializerList(); break;
} }
// //
// Rule 280: start_initializer_list ::= $Empty // Rule 284: initializer ::= { <openscope-ast> }
// //
case 280: { action. initializerListStart(); break; case 284: { action. consumeInitializerList(); break;
} }
// //
// Rule 281: end_initializer_list ::= $Empty // Rule 285: start_initializer_list ::= $Empty
// //
case 281: { action. initializerListEnd(); break; case 285: { action. initializerListStart(); break;
} }
// //
// Rule 286: designated_initializer ::= <openscope-ast> designation = initializer // Rule 286: end_initializer_list ::= $Empty
// //
case 286: { action. consumeInitializerDesignated(); break; case 286: { action. initializerListEnd(); break;
} }
// //
// Rule 290: designator_base ::= [ constant_expression ] // Rule 291: designated_initializer ::= <openscope-ast> designation = initializer
// //
case 290: { action. consumeDesignatorArray(); break; case 291: { action. consumeInitializerDesignated(); break;
} }
// //
// Rule 291: designator_base ::= . identifier_or_typedefname // Rule 295: designator_base ::= [ constant_expression ]
// //
case 291: { action. consumeDesignatorField(); break; case 295: { action. consumeDesignatorArray(); break;
} }
// //
// Rule 292: designator ::= [ constant_expression ] // Rule 296: designator_base ::= . identifier_token
// //
case 292: { action. consumeDesignatorArray(); break; case 296: { action. consumeDesignatorField(); break;
} }
// //
// Rule 293: designator ::= . identifier_or_typedefname // Rule 297: designator ::= [ constant_expression ]
// //
case 293: { action. consumeDesignatorField(); break; case 297: { action. consumeDesignatorArray(); break;
} }
// //
// Rule 294: translation_unit ::= external_declaration_list // Rule 298: designator ::= . identifier_token
// //
case 294: { action. consumeTranslationUnit(); break; case 298: { action. consumeDesignatorField(); break;
} }
// //
// Rule 295: translation_unit ::= $Empty // Rule 299: translation_unit ::= external_declaration_list
// //
case 295: { action. consumeTranslationUnit(); break; case 299: { action. consumeTranslationUnit(); break;
} }
// //
// Rule 300: external_declaration ::= ; // Rule 300: translation_unit ::= $Empty
// //
case 300: { action. consumeDeclarationEmpty(); break; case 300: { action. consumeTranslationUnit(); break;
} }
// //
// Rule 301: external_declaration ::= ERROR_TOKEN // Rule 305: external_declaration ::= ;
// //
case 301: { action. consumeDeclarationProblem(); break; case 305: { action. consumeDeclarationEmpty(); break;
} }
// //
// Rule 304: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body // Rule 306: external_declaration ::= ERROR_TOKEN
// //
case 304: { action. consumeFunctionDefinition(true); break; case 306: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 305: function_definition ::= <openscope-ast> function_declarator function_body // Rule 309: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
// //
case 305: { action. consumeFunctionDefinition(false); break; case 309: { action. consumeFunctionDefinition(true); break;
} }
// //
// Rule 306: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement // Rule 310: function_definition ::= <openscope-ast> function_declarator function_body
// //
case 306: { action. consumeFunctionDefinitionKnR(); break; case 310: { action. consumeFunctionDefinition(false); break;
} }
// //
// Rule 307: function_body ::= { } // Rule 311: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
// //
case 307: { action. consumeStatementCompoundStatement(false); break; case 311: { action. consumeFunctionDefinitionKnR(); break;
} }
// //
// Rule 308: function_body ::= { <openscope-ast> block_item_list } // Rule 312: function_body ::= { }
// //
case 308: { action. consumeStatementCompoundStatement(true); break; case 312: { action. consumeStatementCompoundStatement(false); break;
} }
// //
// Rule 310: no_sizeof_type_name_start ::= ERROR_TOKEN // Rule 313: function_body ::= { <openscope-ast> block_item_list }
// //
case 310: { action. consumeExpressionProblem(); break; case 313: { action. consumeStatementCompoundStatement(true); break;
}
//
// Rule 315: no_sizeof_type_name_start ::= ERROR_TOKEN
//
case 315: { action. consumeExpressionProblem(); break;
} }

View file

@ -15,68 +15,68 @@ package org.eclipse.cdt.internal.core.dom.lrparser.c99;
public interface C99SizeofExpressionParsersym { public interface C99SizeofExpressionParsersym {
public final static int public final static int
TK_auto = 14, TK_auto = 24,
TK_break = 81, TK_break = 81,
TK_case = 82, TK_case = 82,
TK_char = 29, TK_char = 31,
TK_const = 6, TK_const = 6,
TK_continue = 83, TK_continue = 83,
TK_default = 84, TK_default = 84,
TK_do = 85, TK_do = 85,
TK_double = 30, TK_double = 32,
TK_else = 86, TK_else = 86,
TK_enum = 43, TK_enum = 44,
TK_extern = 15, TK_extern = 25,
TK_float = 31, TK_float = 33,
TK_for = 87, TK_for = 87,
TK_goto = 88, TK_goto = 88,
TK_if = 89, TK_if = 89,
TK_inline = 16, TK_inline = 26,
TK_int = 32, TK_int = 34,
TK_long = 33, TK_long = 35,
TK_register = 17, TK_register = 27,
TK_restrict = 7, TK_restrict = 7,
TK_return = 90, TK_return = 90,
TK_short = 34, TK_short = 36,
TK_signed = 35, TK_signed = 37,
TK_sizeof = 21, TK_sizeof = 17,
TK_static = 9, TK_static = 13,
TK_struct = 44, TK_struct = 45,
TK_switch = 91, TK_switch = 91,
TK_typedef = 18, TK_typedef = 28,
TK_union = 45, TK_union = 46,
TK_unsigned = 36, TK_unsigned = 38,
TK_void = 37, TK_void = 39,
TK_volatile = 8, TK_volatile = 8,
TK_while = 92, TK_while = 92,
TK__Bool = 38, TK__Bool = 40,
TK__Complex = 39, TK__Complex = 41,
TK__Imaginary = 40, TK__Imaginary = 42,
TK_integer = 22, TK_integer = 18,
TK_floating = 23, TK_floating = 19,
TK_charconst = 24, TK_charconst = 20,
TK_stringlit = 25, TK_stringlit = 21,
TK_identifier = 1, TK_identifier = 1,
TK_Completion = 3, TK_Completion = 3,
TK_EndOfCompletion = 5, TK_EndOfCompletion = 5,
TK_Invalid = 93, TK_Invalid = 93,
TK_LeftBracket = 12, TK_LeftBracket = 11,
TK_LeftParen = 2, TK_LeftParen = 2,
TK_LeftBrace = 26, TK_LeftBrace = 14,
TK_Dot = 52, TK_Dot = 52,
TK_Arrow = 67, TK_Arrow = 67,
TK_PlusPlus = 19, TK_PlusPlus = 15,
TK_MinusMinus = 20, TK_MinusMinus = 16,
TK_And = 13, TK_And = 12,
TK_Star = 4, TK_Star = 4,
TK_Plus = 10, TK_Plus = 9,
TK_Minus = 11, TK_Minus = 10,
TK_Tilde = 27, TK_Tilde = 22,
TK_Bang = 28, TK_Bang = 23,
TK_Slash = 53, TK_Slash = 53,
TK_Percent = 54, TK_Percent = 54,
TK_RightShift = 48, TK_RightShift = 47,
TK_LeftShift = 49, TK_LeftShift = 48,
TK_LT = 55, TK_LT = 55,
TK_GT = 56, TK_GT = 56,
TK_LE = 57, TK_LE = 57,
@ -89,7 +89,7 @@ public interface C99SizeofExpressionParsersym {
TK_OrOr = 68, TK_OrOr = 68,
TK_Question = 69, TK_Question = 69,
TK_Colon = 59, TK_Colon = 59,
TK_DotDotDot = 50, TK_DotDotDot = 49,
TK_Assign = 60, TK_Assign = 60,
TK_StarAssign = 70, TK_StarAssign = 70,
TK_SlashAssign = 71, TK_SlashAssign = 71,
@ -101,12 +101,12 @@ public interface C99SizeofExpressionParsersym {
TK_AndAssign = 77, TK_AndAssign = 77,
TK_CaretAssign = 78, TK_CaretAssign = 78,
TK_OrAssign = 79, TK_OrAssign = 79,
TK_Comma = 46, TK_Comma = 30,
TK_RightBracket = 51, TK_RightBracket = 50,
TK_RightParen = 41, TK_RightParen = 29,
TK_RightBrace = 42, TK_RightBrace = 43,
TK_SemiColon = 66, TK_SemiColon = 66,
TK_ERROR_TOKEN = 47, TK_ERROR_TOKEN = 51,
TK_EOF_TOKEN = 80; TK_EOF_TOKEN = 80;
public final static String orderedTerminalSymbols[] = { public final static String orderedTerminalSymbols[] = {
@ -119,16 +119,12 @@ public interface C99SizeofExpressionParsersym {
"const", "const",
"restrict", "restrict",
"volatile", "volatile",
"static",
"Plus", "Plus",
"Minus", "Minus",
"LeftBracket", "LeftBracket",
"And", "And",
"auto", "static",
"extern", "LeftBrace",
"inline",
"register",
"typedef",
"PlusPlus", "PlusPlus",
"MinusMinus", "MinusMinus",
"sizeof", "sizeof",
@ -136,9 +132,15 @@ public interface C99SizeofExpressionParsersym {
"floating", "floating",
"charconst", "charconst",
"stringlit", "stringlit",
"LeftBrace",
"Tilde", "Tilde",
"Bang", "Bang",
"auto",
"extern",
"inline",
"register",
"typedef",
"RightParen",
"Comma",
"char", "char",
"double", "double",
"float", "float",
@ -151,17 +153,15 @@ public interface C99SizeofExpressionParsersym {
"_Bool", "_Bool",
"_Complex", "_Complex",
"_Imaginary", "_Imaginary",
"RightParen",
"RightBrace", "RightBrace",
"enum", "enum",
"struct", "struct",
"union", "union",
"Comma",
"ERROR_TOKEN",
"RightShift", "RightShift",
"LeftShift", "LeftShift",
"DotDotDot", "DotDotDot",
"RightBracket", "RightBracket",
"ERROR_TOKEN",
"Dot", "Dot",
"Slash", "Slash",
"Percent", "Percent",

View file

@ -1258,723 +1258,723 @@ public CPPExpressionParser(String[] mapFrom) { // constructor
} }
// //
// Rule 281: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt identifier_name // Rule 281: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
// //
case 281: { action. consumeTypeSpecifierElaborated(false); break; case 281: { action. consumeTypeSpecifierElaborated(false); break;
} }
// //
// Rule 282: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt template_opt template_id_name // Rule 282: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
// //
case 282: { action. consumeTypeSpecifierElaborated(true); break; case 282: { action. consumeTypeSpecifierElaborated(true); break;
} }
// //
// Rule 283: elaborated_type_specifier ::= enum dcolon_opt nested_name_specifier_opt identifier_name // Rule 283: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
// //
case 283: { action. consumeTypeSpecifierElaborated(false); break; case 283: { action. consumeTypeSpecifierElaborated(false); break;
} }
// //
// Rule 284: enum_specifier ::= enum { <openscope-ast> enumerator_list_opt } // Rule 285: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt }
// //
case 284: { action. consumeTypeSpecifierEnumeration(false); break; case 285: { action. consumeTypeSpecifierEnumeration(false); break;
} }
// //
// Rule 285: enum_specifier ::= enum identifier_token { <openscope-ast> enumerator_list_opt } // Rule 286: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt }
// //
case 285: { action. consumeTypeSpecifierEnumeration(true); break; case 286: { action. consumeTypeSpecifierEnumeration(true); break;
} }
// //
// Rule 290: enumerator_definition ::= identifier_token // Rule 292: enumerator_definition ::= identifier_token
// //
case 290: { action. consumeEnumerator(false); break; case 292: { action. consumeEnumerator(false); break;
} }
// //
// Rule 291: enumerator_definition ::= identifier_token = constant_expression // Rule 293: enumerator_definition ::= identifier_token = constant_expression
// //
case 291: { action. consumeEnumerator(true); break; case 293: { action. consumeEnumerator(true); break;
} }
// //
// Rule 295: named_namespace_definition ::= namespace namespace_name { <openscope-ast> declaration_seq_opt } // Rule 297: named_namespace_definition ::= namespace namespace_name { <openscope-ast> declaration_seq_opt }
// //
case 295: { action. consumeNamespaceDefinition(true); break; case 297: { action. consumeNamespaceDefinition(true); break;
} }
// //
// Rule 296: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt } // Rule 298: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt }
// //
case 296: { action. consumeNamespaceDefinition(false); break; case 298: { action. consumeNamespaceDefinition(false); break;
} }
// //
// Rule 297: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; // Rule 299: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
// //
case 297: { action. consumeNamespaceAliasDefinition(); break; case 299: { action. consumeNamespaceAliasDefinition(); break;
} }
// //
// Rule 298: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; // Rule 300: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
// //
case 298: { action. consumeUsingDeclaration(); break; case 300: { action. consumeUsingDeclaration(); break;
} }
// //
// Rule 299: typename_opt ::= typename // Rule 301: typename_opt ::= typename
// //
case 299: { action. consumePlaceHolder(); break; case 301: { action. consumePlaceHolder(); break;
} }
// //
// Rule 300: typename_opt ::= $Empty // Rule 302: typename_opt ::= $Empty
// //
case 300: { action. consumeEmpty(); break; case 302: { action. consumeEmpty(); break;
} }
// //
// Rule 301: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; // Rule 303: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
// //
case 301: { action. consumeUsingDirective(); break; case 303: { action. consumeUsingDirective(); break;
} }
// //
// Rule 302: asm_definition ::= asm ( stringlit ) ; // Rule 304: asm_definition ::= asm ( stringlit ) ;
// //
case 302: { action. consumeDeclarationASM(); break; case 304: { action. consumeDeclarationASM(); break;
} }
// //
// Rule 303: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt } // Rule 305: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
// //
case 303: { action. consumeLinkageSpecification(); break; case 305: { action. consumeLinkageSpecification(); break;
} }
// //
// Rule 304: linkage_specification ::= extern stringlit <openscope-ast> declaration // Rule 306: linkage_specification ::= extern stringlit <openscope-ast> declaration
// //
case 304: { action. consumeLinkageSpecification(); break; case 306: { action. consumeLinkageSpecification(); break;
} }
// //
// Rule 309: init_declarator_complete ::= init_declarator // Rule 311: init_declarator_complete ::= init_declarator
// //
case 309: { action. consumeInitDeclaratorComplete(); break; case 311: { action. consumeInitDeclaratorComplete(); break;
} }
// //
// Rule 311: init_declarator ::= declarator initializer // Rule 313: init_declarator ::= complete_declarator initializer
// //
case 311: { action. consumeDeclaratorWithInitializer(true); break; case 313: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 313: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // Rule 316: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
// //
case 313: { action. consumeDeclaratorWithPointer(true); break; case 316: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 315: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // Rule 318: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
// //
case 315: { action. consumeDeclaratorWithPointer(true); break; case 318: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 319: basic_direct_declarator ::= declarator_id_name // Rule 322: basic_direct_declarator ::= declarator_id_name
// //
case 319: { action. consumeDirectDeclaratorIdentifier(); break; case 322: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 320: basic_direct_declarator ::= ( declarator ) // Rule 323: basic_direct_declarator ::= ( declarator )
// //
case 320: { action. consumeDirectDeclaratorBracketed(); break; case 323: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 321: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 324: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 321: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; case 324: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
} }
// //
// Rule 322: array_direct_declarator ::= array_direct_declarator array_modifier // Rule 325: array_direct_declarator ::= array_direct_declarator array_modifier
// //
case 322: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 325: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 323: array_direct_declarator ::= basic_direct_declarator array_modifier // Rule 326: array_direct_declarator ::= basic_direct_declarator array_modifier
// //
case 323: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 326: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 324: array_modifier ::= [ constant_expression ] // Rule 327: array_modifier ::= [ constant_expression ]
// //
case 324: { action. consumeDirectDeclaratorArrayModifier(true); break; case 327: { action. consumeDirectDeclaratorArrayModifier(true); break;
} }
// //
// Rule 325: array_modifier ::= [ ] // Rule 328: array_modifier ::= [ ]
// //
case 325: { action. consumeDirectDeclaratorArrayModifier(false); break; case 328: { action. consumeDirectDeclaratorArrayModifier(false); break;
} }
// //
// Rule 326: ptr_operator ::= * <openscope-ast> cv_qualifier_seq_opt // Rule 329: ptr_operator ::= pointer_hook * <openscope-ast> cv_qualifier_seq_opt
// //
case 326: { action. consumePointer(); break; case 329: { action. consumePointer(); break;
} }
// //
// Rule 327: ptr_operator ::= & // Rule 330: ptr_operator ::= pointer_hook &
// //
case 327: { action. consumeReferenceOperator(); break; case 330: { action. consumeReferenceOperator(); break;
} }
// //
// Rule 328: ptr_operator ::= dcolon_opt nested_name_specifier * <openscope-ast> cv_qualifier_seq_opt // Rule 331: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * <openscope-ast> cv_qualifier_seq_opt
// //
case 328: { action. consumePointerToMember(); break; case 331: { action. consumePointerToMember(); break;
} }
// //
// Rule 334: cv_qualifier ::= const // Rule 338: cv_qualifier ::= const
// //
case 334: { action. consumeDeclSpecToken(); break; case 338: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 335: cv_qualifier ::= volatile // Rule 339: cv_qualifier ::= volatile
// //
case 335: { action. consumeDeclSpecToken(); break; case 339: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 337: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name // Rule 341: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
// //
case 337: { action. consumeQualifiedId(false); break; case 341: { action. consumeQualifiedId(false); break;
} }
// //
// Rule 338: type_id ::= type_specifier_seq // Rule 342: type_id ::= type_specifier_seq
// //
case 338: { action. consumeTypeId(false); break; case 342: { action. consumeTypeId(false); break;
} }
// //
// Rule 339: type_id ::= type_specifier_seq abstract_declarator // Rule 343: type_id ::= type_specifier_seq abstract_declarator
// //
case 339: { action. consumeTypeId(true); break; case 343: { action. consumeTypeId(true); break;
} }
// //
// Rule 342: abstract_declarator ::= <openscope-ast> ptr_operator_seq // Rule 346: abstract_declarator ::= <openscope-ast> ptr_operator_seq
// //
case 342: { action. consumeDeclaratorWithPointer(false); break; case 346: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 343: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator // Rule 347: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
// //
case 343: { action. consumeDeclaratorWithPointer(true); break; case 347: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 347: basic_direct_abstract_declarator ::= ( abstract_declarator ) // Rule 351: basic_direct_abstract_declarator ::= ( abstract_declarator )
// //
case 347: { action. consumeDirectDeclaratorBracketed(); break; case 351: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 348: basic_direct_abstract_declarator ::= ( ) // Rule 352: basic_direct_abstract_declarator ::= ( )
// //
case 348: { action. consumeAbstractDeclaratorEmpty(); break; case 352: { action. consumeAbstractDeclaratorEmpty(); break;
} }
// //
// Rule 349: array_direct_abstract_declarator ::= array_modifier // Rule 353: array_direct_abstract_declarator ::= array_modifier
// //
case 349: { action. consumeDirectDeclaratorArrayDeclarator(false); break; case 353: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
} }
// //
// Rule 350: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // Rule 354: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
// //
case 350: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 354: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 351: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // Rule 355: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
// //
case 351: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 355: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 352: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 356: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 352: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; case 356: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
} }
// //
// Rule 353: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 357: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 353: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; case 357: { action. consumeDirectDeclaratorFunctionDeclarator(false); break;
} }
// //
// Rule 354: parameter_declaration_clause ::= parameter_declaration_list_opt ... // Rule 358: parameter_declaration_clause ::= parameter_declaration_list_opt ...
// //
case 354: { action. consumePlaceHolder(); break; case 358: { action. consumePlaceHolder(); break;
} }
// //
// Rule 355: parameter_declaration_clause ::= parameter_declaration_list_opt // Rule 359: parameter_declaration_clause ::= parameter_declaration_list_opt
// //
case 355: { action. consumeEmpty(); break; case 359: { action. consumeEmpty(); break;
} }
// //
// Rule 356: parameter_declaration_clause ::= parameter_declaration_list , ... // Rule 360: parameter_declaration_clause ::= parameter_declaration_list , ...
// //
case 356: { action. consumePlaceHolder(); break; case 360: { action. consumePlaceHolder(); break;
} }
// //
// Rule 362: abstract_declarator_opt ::= $Empty // Rule 366: abstract_declarator_opt ::= $Empty
// //
case 362: { action. consumeEmpty(); break; case 366: { action. consumeEmpty(); break;
} }
// //
// Rule 363: parameter_declaration ::= declaration_specifiers parameter_init_declarator // Rule 367: parameter_declaration ::= declaration_specifiers parameter_init_declarator
// //
case 363: { action. consumeParameterDeclaration(); break; case 367: { action. consumeParameterDeclaration(); break;
} }
// //
// Rule 364: parameter_declaration ::= declaration_specifiers // Rule 368: parameter_declaration ::= declaration_specifiers
// //
case 364: { action. consumeParameterDeclarationWithoutDeclarator(); break; case 368: { action. consumeParameterDeclarationWithoutDeclarator(); break;
} }
// //
// Rule 366: parameter_init_declarator ::= declarator = parameter_initializer // Rule 370: parameter_init_declarator ::= declarator = parameter_initializer
// //
case 366: { action. consumeDeclaratorWithInitializer(true); break; case 370: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 368: parameter_init_declarator ::= abstract_declarator = parameter_initializer // Rule 372: parameter_init_declarator ::= abstract_declarator = parameter_initializer
// //
case 368: { action. consumeDeclaratorWithInitializer(true); break; case 372: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 369: parameter_init_declarator ::= = parameter_initializer // Rule 373: parameter_init_declarator ::= = parameter_initializer
// //
case 369: { action. consumeDeclaratorWithInitializer(false); break; case 373: { action. consumeDeclaratorWithInitializer(false); break;
} }
// //
// Rule 370: parameter_initializer ::= assignment_expression // Rule 374: parameter_initializer ::= assignment_expression
// //
case 370: { action. consumeInitializer(); break; case 374: { action. consumeInitializer(); break;
} }
// //
// Rule 371: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body // Rule 375: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
// //
case 371: { action. consumeFunctionDefinition(false); break; case 375: { action. consumeFunctionDefinition(false); break;
} }
// //
// Rule 372: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq // Rule 376: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
// //
case 372: { action. consumeFunctionDefinition(true); break; case 376: { action. consumeFunctionDefinition(true); break;
} }
// //
// Rule 375: initializer ::= ( expression_list ) // Rule 379: initializer ::= ( expression_list )
// //
case 375: { action. consumeInitializerConstructor(); break; case 379: { action. consumeInitializerConstructor(); break;
} }
// //
// Rule 376: initializer_clause ::= assignment_expression // Rule 380: initializer_clause ::= assignment_expression
// //
case 376: { action. consumeInitializer(); break; case 380: { action. consumeInitializer(); break;
} }
// //
// Rule 377: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list , } end_initializer_list // Rule 381: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list , } end_initializer_list
// //
case 377: { action. consumeInitializerList(); break; case 381: { action. consumeInitializerList(); break;
} }
// //
// Rule 378: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list } end_initializer_list // Rule 382: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list } end_initializer_list
// //
case 378: { action. consumeInitializerList(); break; case 382: { action. consumeInitializerList(); break;
} }
// //
// Rule 379: initializer_clause ::= { <openscope-ast> } // Rule 383: initializer_clause ::= { <openscope-ast> }
// //
case 379: { action. consumeInitializerList(); break; case 383: { action. consumeInitializerList(); break;
} }
// //
// Rule 380: start_initializer_list ::= $Empty // Rule 384: start_initializer_list ::= $Empty
// //
case 380: { action. initializerListStart(); break; case 384: { action. initializerListStart(); break;
} }
// //
// Rule 381: end_initializer_list ::= $Empty // Rule 385: end_initializer_list ::= $Empty
// //
case 381: { action. initializerListEnd(); break; case 385: { action. initializerListEnd(); break;
} }
// //
// Rule 386: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt } // Rule 390: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
// //
case 386: { action. consumeClassSpecifier(); break; case 390: { action. consumeClassSpecifier(); break;
} }
// //
// Rule 387: class_head ::= class_keyword identifier_name_opt <openscope-ast> base_clause_opt // Rule 391: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 387: { action. consumeClassHead(false); break; case 391: { action. consumeClassHead(false); break;
} }
// //
// Rule 388: class_head ::= class_keyword template_id_name <openscope-ast> base_clause_opt // Rule 392: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 388: { action. consumeClassHead(false); break; case 392: { action. consumeClassHead(false); break;
} }
// //
// Rule 389: class_head ::= class_keyword nested_name_specifier identifier_name <openscope-ast> base_clause_opt // Rule 393: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 389: { action. consumeClassHead(true); break; case 393: { action. consumeClassHead(true); break;
} }
// //
// Rule 390: class_head ::= class_keyword nested_name_specifier template_id_name <openscope-ast> base_clause_opt // Rule 394: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 390: { action. consumeClassHead(true); break; case 394: { action. consumeClassHead(true); break;
} }
// //
// Rule 392: identifier_name_opt ::= $Empty // Rule 398: identifier_name_opt ::= $Empty
// //
case 392: { action. consumeEmpty(); break; case 398: { action. consumeEmpty(); break;
} }
// //
// Rule 396: visibility_label ::= access_specifier_keyword : // Rule 402: visibility_label ::= access_specifier_keyword :
// //
case 396: { action. consumeVisibilityLabel(); break; case 402: { action. consumeVisibilityLabel(); break;
} }
// //
// Rule 397: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ; // Rule 403: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
// //
case 397: { action. consumeDeclarationSimple(true); break; case 403: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 398: member_declaration ::= declaration_specifiers_opt ; // Rule 404: member_declaration ::= declaration_specifiers_opt ;
// //
case 398: { action. consumeDeclarationSimple(false); break; case 404: { action. consumeDeclarationSimple(false); break;
} }
// //
// Rule 401: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; // Rule 407: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
// //
case 401: { action. consumeMemberDeclarationQualifiedId(); break; case 407: { action. consumeMemberDeclarationQualifiedId(); break;
} }
// //
// Rule 407: member_declaration ::= ERROR_TOKEN // Rule 413: member_declaration ::= ERROR_TOKEN
// //
case 407: { action. consumeDeclarationProblem(); break; case 413: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 415: member_declarator ::= declarator constant_initializer // Rule 422: member_declarator ::= declarator constant_initializer
// //
case 415: { action. consumeMemberDeclaratorWithInitializer(); break; case 422: { action. consumeMemberDeclaratorWithInitializer(); break;
} }
// //
// Rule 416: member_declarator ::= bit_field_declarator : constant_expression // Rule 423: member_declarator ::= bit_field_declarator : constant_expression
// //
case 416: { action. consumeBitField(true); break; case 423: { action. consumeBitField(true); break;
} }
// //
// Rule 417: member_declarator ::= : constant_expression // Rule 424: member_declarator ::= : constant_expression
// //
case 417: { action. consumeBitField(false); break; case 424: { action. consumeBitField(false); break;
} }
// //
// Rule 418: bit_field_declarator ::= identifier_name // Rule 425: bit_field_declarator ::= identifier_name
// //
case 418: { action. consumeDirectDeclaratorIdentifier(); break; case 425: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 419: constant_initializer ::= = constant_expression // Rule 426: constant_initializer ::= = constant_expression
// //
case 419: { action. consumeInitializer(); break; case 426: { action. consumeInitializer(); break;
} }
// //
// Rule 425: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name // Rule 432: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
// //
case 425: { action. consumeBaseSpecifier(false, false); break; case 432: { action. consumeBaseSpecifier(false, false); break;
} }
// //
// Rule 426: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name // Rule 433: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
// //
case 426: { action. consumeBaseSpecifier(true, true); break; case 433: { action. consumeBaseSpecifier(true, true); break;
} }
// //
// Rule 427: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name // Rule 434: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
// //
case 427: { action. consumeBaseSpecifier(true, true); break; case 434: { action. consumeBaseSpecifier(true, true); break;
} }
// //
// Rule 428: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name // Rule 435: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
// //
case 428: { action. consumeBaseSpecifier(true, false); break; case 435: { action. consumeBaseSpecifier(true, false); break;
} }
// //
// Rule 429: access_specifier_keyword ::= private // Rule 436: access_specifier_keyword ::= private
// //
case 429: { action. consumeToken(); break; case 436: { action. consumeToken(); break;
} }
// //
// Rule 430: access_specifier_keyword ::= protected // Rule 437: access_specifier_keyword ::= protected
// //
case 430: { action. consumeToken(); break; case 437: { action. consumeToken(); break;
} }
// //
// Rule 431: access_specifier_keyword ::= public // Rule 438: access_specifier_keyword ::= public
// //
case 431: { action. consumeToken(); break; case 438: { action. consumeToken(); break;
} }
// //
// Rule 433: access_specifier_keyword_opt ::= $Empty // Rule 440: access_specifier_keyword_opt ::= $Empty
// //
case 433: { action. consumeEmpty(); break; case 440: { action. consumeEmpty(); break;
} }
// //
// Rule 435: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt > // Rule 442: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
// //
case 435: { action. consumeTemplateId(); break; case 442: { action. consumeTemplateId(); break;
} }
// //
// Rule 436: conversion_function_id ::= operator conversion_type_id // Rule 443: conversion_function_id ::= operator conversion_type_id
// //
case 436: { action. consumeConversionName(); break; case 443: { action. consumeConversionName(); break;
} }
// //
// Rule 437: conversion_type_id ::= type_specifier_seq conversion_declarator // Rule 444: conversion_type_id ::= type_specifier_seq conversion_declarator
// //
case 437: { action. consumeTypeId(true); break; case 444: { action. consumeTypeId(true); break;
} }
// //
// Rule 438: conversion_type_id ::= type_specifier_seq // Rule 445: conversion_type_id ::= type_specifier_seq
// //
case 438: { action. consumeTypeId(false); break; case 445: { action. consumeTypeId(false); break;
} }
// //
// Rule 439: conversion_declarator ::= <openscope-ast> ptr_operator_seq // Rule 446: conversion_declarator ::= <openscope-ast> ptr_operator_seq
// //
case 439: { action. consumeDeclaratorWithPointer(false); break; case 446: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 445: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // Rule 452: mem_initializer ::= mem_initializer_name ( expression_list_opt )
// //
case 445: { action. consumeConstructorChainInitializer(); break; case 452: { action. consumeConstructorChainInitializer(); break;
} }
// //
// Rule 446: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // Rule 453: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
// //
case 446: { action. consumeQualifiedId(false); break; case 453: { action. consumeQualifiedId(false); break;
} }
// //
// Rule 449: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt > // Rule 456: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
// //
case 449: { action. consumeTemplateId(); break; case 456: { action. consumeTemplateId(); break;
} }
// //
// Rule 450: operator_id_name ::= operator overloadable_operator // Rule 457: operator_id_name ::= operator overloadable_operator
// //
case 450: { action. consumeOperatorName(); break; case 457: { action. consumeOperatorName(); break;
} }
// //
// Rule 493: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration // Rule 500: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
// //
case 493: { action. consumeTemplateDeclaration(); break; case 500: { action. consumeTemplateDeclaration(); break;
} }
// //
// Rule 494: export_opt ::= export // Rule 501: export_opt ::= export
// //
case 494: { action. consumePlaceHolder(); break; case 501: { action. consumePlaceHolder(); break;
} }
// //
// Rule 495: export_opt ::= $Empty // Rule 502: export_opt ::= $Empty
// //
case 495: { action. consumeEmpty(); break; case 502: { action. consumeEmpty(); break;
} }
// //
// Rule 499: template_parameter ::= parameter_declaration // Rule 506: template_parameter ::= parameter_declaration
// //
case 499: { action. consumeTemplateParamterDeclaration(); break; case 506: { action. consumeTemplateParamterDeclaration(); break;
} }
// //
// Rule 500: type_parameter ::= class identifier_name_opt // Rule 507: type_parameter ::= class identifier_name_opt
// //
case 500: { action. consumeSimpleTypeTemplateParameter(false); break; case 507: { action. consumeSimpleTypeTemplateParameter(false); break;
} }
// //
// Rule 501: type_parameter ::= class identifier_name_opt = type_id // Rule 508: type_parameter ::= class identifier_name_opt = type_id
// //
case 501: { action. consumeSimpleTypeTemplateParameter(true); break; case 508: { action. consumeSimpleTypeTemplateParameter(true); break;
} }
// //
// Rule 502: type_parameter ::= typename identifier_name_opt // Rule 509: type_parameter ::= typename identifier_name_opt
// //
case 502: { action. consumeSimpleTypeTemplateParameter(false); break; case 509: { action. consumeSimpleTypeTemplateParameter(false); break;
} }
// //
// Rule 503: type_parameter ::= typename identifier_name_opt = type_id // Rule 510: type_parameter ::= typename identifier_name_opt = type_id
// //
case 503: { action. consumeSimpleTypeTemplateParameter(true); break; case 510: { action. consumeSimpleTypeTemplateParameter(true); break;
} }
// //
// Rule 504: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt // Rule 511: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
// //
case 504: { action. consumeTemplatedTypeTemplateParameter(false); break; case 511: { action. consumeTemplatedTypeTemplateParameter(false); break;
} }
// //
// Rule 505: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression // Rule 512: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
// //
case 505: { action. consumeTemplatedTypeTemplateParameter(true); break; case 512: { action. consumeTemplatedTypeTemplateParameter(true); break;
} }
// //
// Rule 506: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt > // Rule 513: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
// //
case 506: { action. consumeTemplateId(); break; case 513: { action. consumeTemplateId(); break;
} }
// //
// Rule 511: template_argument ::= assignment_expression // Rule 518: template_argument ::= assignment_expression
// //
case 511: { action. consumeTemplateArgumentExpression(); break; case 518: { action. consumeTemplateArgumentExpression(); break;
} }
// //
// Rule 512: template_argument ::= type_id // Rule 519: template_argument ::= type_id
// //
case 512: { action. consumeTemplateArgumentTypeId(); break; case 519: { action. consumeTemplateArgumentTypeId(); break;
} }
// //
// Rule 513: explicit_instantiation ::= template declaration // Rule 520: explicit_instantiation ::= template declaration
// //
case 513: { action. consumeTemplateExplicitInstantiation(); break; case 520: { action. consumeTemplateExplicitInstantiation(); break;
} }
// //
// Rule 514: explicit_specialization ::= template < > declaration // Rule 521: explicit_specialization ::= template < > declaration
// //
case 514: { action. consumeTemplateExplicitSpecialization(); break; case 521: { action. consumeTemplateExplicitSpecialization(); break;
} }
// //
// Rule 515: try_block ::= try compound_statement <openscope-ast> handler_seq // Rule 522: try_block ::= try compound_statement <openscope-ast> handler_seq
// //
case 515: { action. consumeStatementTryBlock(); break; case 522: { action. consumeStatementTryBlock(); break;
} }
// //
// Rule 518: handler ::= catch ( exception_declaration ) compound_statement // Rule 525: handler ::= catch ( exception_declaration ) compound_statement
// //
case 518: { action. consumeStatementCatchHandler(false); break; case 525: { action. consumeStatementCatchHandler(false); break;
} }
// //
// Rule 519: handler ::= catch ( ... ) compound_statement // Rule 526: handler ::= catch ( ... ) compound_statement
// //
case 519: { action. consumeStatementCatchHandler(true); break; case 526: { action. consumeStatementCatchHandler(true); break;
} }
// //
// Rule 520: exception_declaration ::= type_specifier_seq <openscope-ast> declarator // Rule 527: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
// //
case 520: { action. consumeDeclarationSimple(true); break; case 527: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 521: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator // Rule 528: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
// //
case 521: { action. consumeDeclarationSimple(true); break; case 528: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 522: exception_declaration ::= type_specifier_seq // Rule 529: exception_declaration ::= type_specifier_seq
// //
case 522: { action. consumeDeclarationSimple(false); break; case 529: { action. consumeDeclarationSimple(false); break;
} }
// //
// Rule 524: exception_specification ::= throw ( ) // Rule 531: exception_specification ::= throw ( )
// //
case 524: { action. consumePlaceHolder(); break; case 531: { action. consumePlaceHolder(); break;
} }
// //
// Rule 530: expression_parser_start ::= ERROR_TOKEN // Rule 537: expression_parser_start ::= ERROR_TOKEN
// //
case 530: { action. consumeExpressionProblem(); break; case 537: { action. consumeExpressionProblem(); break;
} }

View file

@ -62,13 +62,13 @@ public interface CPPExpressionParsersym {
TK_static_cast = 47, TK_static_cast = 47,
TK_struct = 58, TK_struct = 58,
TK_switch = 86, TK_switch = 86,
TK_template = 55, TK_template = 48,
TK_this = 48, TK_this = 49,
TK_throw = 61, TK_throw = 61,
TK_try = 75, TK_try = 75,
TK_true = 49, TK_true = 50,
TK_typedef = 36, TK_typedef = 36,
TK_typeid = 50, TK_typeid = 51,
TK_typename = 10, TK_typename = 10,
TK_union = 59, TK_union = 59,
TK_unsigned = 19, TK_unsigned = 19,
@ -78,9 +78,9 @@ public interface CPPExpressionParsersym {
TK_volatile = 24, TK_volatile = 24,
TK_wchar_t = 21, TK_wchar_t = 21,
TK_while = 76, TK_while = 76,
TK_integer = 51, TK_integer = 52,
TK_floating = 52, TK_floating = 53,
TK_charconst = 53, TK_charconst = 54,
TK_stringlit = 39, TK_stringlit = 39,
TK_identifier = 1, TK_identifier = 1,
TK_Completion = 2, TK_Completion = 2,
@ -136,7 +136,7 @@ public interface CPPExpressionParsersym {
TK_SemiColon = 27, TK_SemiColon = 27,
TK_LeftBrace = 68, TK_LeftBrace = 68,
TK_ERROR_TOKEN = 62, TK_ERROR_TOKEN = 62,
TK_0 = 54, TK_0 = 55,
TK_EOF_TOKEN = 121; TK_EOF_TOKEN = 121;
public final static String orderedTerminalSymbols[] = { public final static String orderedTerminalSymbols[] = {
@ -188,6 +188,7 @@ public interface CPPExpressionParsersym {
"reinterpret_cast", "reinterpret_cast",
"sizeof", "sizeof",
"static_cast", "static_cast",
"template",
"this", "this",
"true", "true",
"typeid", "typeid",
@ -195,7 +196,6 @@ public interface CPPExpressionParsersym {
"floating", "floating",
"charconst", "charconst",
"0", "0",
"template",
"LT", "LT",
"enum", "enum",
"struct", "struct",

View file

@ -1252,723 +1252,723 @@ public CPPNoCastExpressionParser(String[] mapFrom) { // constructor
} }
// //
// Rule 280: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt identifier_name // Rule 280: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
// //
case 280: { action. consumeTypeSpecifierElaborated(false); break; case 280: { action. consumeTypeSpecifierElaborated(false); break;
} }
// //
// Rule 281: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt template_opt template_id_name // Rule 281: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
// //
case 281: { action. consumeTypeSpecifierElaborated(true); break; case 281: { action. consumeTypeSpecifierElaborated(true); break;
} }
// //
// Rule 282: elaborated_type_specifier ::= enum dcolon_opt nested_name_specifier_opt identifier_name // Rule 282: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
// //
case 282: { action. consumeTypeSpecifierElaborated(false); break; case 282: { action. consumeTypeSpecifierElaborated(false); break;
} }
// //
// Rule 283: enum_specifier ::= enum { <openscope-ast> enumerator_list_opt } // Rule 284: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt }
// //
case 283: { action. consumeTypeSpecifierEnumeration(false); break; case 284: { action. consumeTypeSpecifierEnumeration(false); break;
} }
// //
// Rule 284: enum_specifier ::= enum identifier_token { <openscope-ast> enumerator_list_opt } // Rule 285: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt }
// //
case 284: { action. consumeTypeSpecifierEnumeration(true); break; case 285: { action. consumeTypeSpecifierEnumeration(true); break;
} }
// //
// Rule 289: enumerator_definition ::= identifier_token // Rule 291: enumerator_definition ::= identifier_token
// //
case 289: { action. consumeEnumerator(false); break; case 291: { action. consumeEnumerator(false); break;
} }
// //
// Rule 290: enumerator_definition ::= identifier_token = constant_expression // Rule 292: enumerator_definition ::= identifier_token = constant_expression
// //
case 290: { action. consumeEnumerator(true); break; case 292: { action. consumeEnumerator(true); break;
} }
// //
// Rule 294: named_namespace_definition ::= namespace namespace_name { <openscope-ast> declaration_seq_opt } // Rule 296: named_namespace_definition ::= namespace namespace_name { <openscope-ast> declaration_seq_opt }
// //
case 294: { action. consumeNamespaceDefinition(true); break; case 296: { action. consumeNamespaceDefinition(true); break;
} }
// //
// Rule 295: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt } // Rule 297: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt }
// //
case 295: { action. consumeNamespaceDefinition(false); break; case 297: { action. consumeNamespaceDefinition(false); break;
} }
// //
// Rule 296: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; // Rule 298: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
// //
case 296: { action. consumeNamespaceAliasDefinition(); break; case 298: { action. consumeNamespaceAliasDefinition(); break;
} }
// //
// Rule 297: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; // Rule 299: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
// //
case 297: { action. consumeUsingDeclaration(); break; case 299: { action. consumeUsingDeclaration(); break;
} }
// //
// Rule 298: typename_opt ::= typename // Rule 300: typename_opt ::= typename
// //
case 298: { action. consumePlaceHolder(); break; case 300: { action. consumePlaceHolder(); break;
} }
// //
// Rule 299: typename_opt ::= $Empty // Rule 301: typename_opt ::= $Empty
// //
case 299: { action. consumeEmpty(); break; case 301: { action. consumeEmpty(); break;
} }
// //
// Rule 300: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; // Rule 302: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
// //
case 300: { action. consumeUsingDirective(); break; case 302: { action. consumeUsingDirective(); break;
} }
// //
// Rule 301: asm_definition ::= asm ( stringlit ) ; // Rule 303: asm_definition ::= asm ( stringlit ) ;
// //
case 301: { action. consumeDeclarationASM(); break; case 303: { action. consumeDeclarationASM(); break;
} }
// //
// Rule 302: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt } // Rule 304: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
// //
case 302: { action. consumeLinkageSpecification(); break; case 304: { action. consumeLinkageSpecification(); break;
} }
// //
// Rule 303: linkage_specification ::= extern stringlit <openscope-ast> declaration // Rule 305: linkage_specification ::= extern stringlit <openscope-ast> declaration
// //
case 303: { action. consumeLinkageSpecification(); break; case 305: { action. consumeLinkageSpecification(); break;
} }
// //
// Rule 308: init_declarator_complete ::= init_declarator // Rule 310: init_declarator_complete ::= init_declarator
// //
case 308: { action. consumeInitDeclaratorComplete(); break; case 310: { action. consumeInitDeclaratorComplete(); break;
} }
// //
// Rule 310: init_declarator ::= declarator initializer // Rule 312: init_declarator ::= complete_declarator initializer
// //
case 310: { action. consumeDeclaratorWithInitializer(true); break; case 312: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 312: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // Rule 315: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
// //
case 312: { action. consumeDeclaratorWithPointer(true); break; case 315: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 314: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // Rule 317: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
// //
case 314: { action. consumeDeclaratorWithPointer(true); break; case 317: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 318: basic_direct_declarator ::= declarator_id_name // Rule 321: basic_direct_declarator ::= declarator_id_name
// //
case 318: { action. consumeDirectDeclaratorIdentifier(); break; case 321: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 319: basic_direct_declarator ::= ( declarator ) // Rule 322: basic_direct_declarator ::= ( declarator )
// //
case 319: { action. consumeDirectDeclaratorBracketed(); break; case 322: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 320: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 323: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 320: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; case 323: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
} }
// //
// Rule 321: array_direct_declarator ::= array_direct_declarator array_modifier // Rule 324: array_direct_declarator ::= array_direct_declarator array_modifier
// //
case 321: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 324: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 322: array_direct_declarator ::= basic_direct_declarator array_modifier // Rule 325: array_direct_declarator ::= basic_direct_declarator array_modifier
// //
case 322: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 325: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 323: array_modifier ::= [ constant_expression ] // Rule 326: array_modifier ::= [ constant_expression ]
// //
case 323: { action. consumeDirectDeclaratorArrayModifier(true); break; case 326: { action. consumeDirectDeclaratorArrayModifier(true); break;
} }
// //
// Rule 324: array_modifier ::= [ ] // Rule 327: array_modifier ::= [ ]
// //
case 324: { action. consumeDirectDeclaratorArrayModifier(false); break; case 327: { action. consumeDirectDeclaratorArrayModifier(false); break;
} }
// //
// Rule 325: ptr_operator ::= * <openscope-ast> cv_qualifier_seq_opt // Rule 328: ptr_operator ::= pointer_hook * <openscope-ast> cv_qualifier_seq_opt
// //
case 325: { action. consumePointer(); break; case 328: { action. consumePointer(); break;
} }
// //
// Rule 326: ptr_operator ::= & // Rule 329: ptr_operator ::= pointer_hook &
// //
case 326: { action. consumeReferenceOperator(); break; case 329: { action. consumeReferenceOperator(); break;
} }
// //
// Rule 327: ptr_operator ::= dcolon_opt nested_name_specifier * <openscope-ast> cv_qualifier_seq_opt // Rule 330: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * <openscope-ast> cv_qualifier_seq_opt
// //
case 327: { action. consumePointerToMember(); break; case 330: { action. consumePointerToMember(); break;
} }
// //
// Rule 333: cv_qualifier ::= const // Rule 337: cv_qualifier ::= const
// //
case 333: { action. consumeDeclSpecToken(); break; case 337: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 334: cv_qualifier ::= volatile // Rule 338: cv_qualifier ::= volatile
// //
case 334: { action. consumeDeclSpecToken(); break; case 338: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 336: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name // Rule 340: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
// //
case 336: { action. consumeQualifiedId(false); break; case 340: { action. consumeQualifiedId(false); break;
} }
// //
// Rule 337: type_id ::= type_specifier_seq // Rule 341: type_id ::= type_specifier_seq
// //
case 337: { action. consumeTypeId(false); break; case 341: { action. consumeTypeId(false); break;
} }
// //
// Rule 338: type_id ::= type_specifier_seq abstract_declarator // Rule 342: type_id ::= type_specifier_seq abstract_declarator
// //
case 338: { action. consumeTypeId(true); break; case 342: { action. consumeTypeId(true); break;
} }
// //
// Rule 341: abstract_declarator ::= <openscope-ast> ptr_operator_seq // Rule 345: abstract_declarator ::= <openscope-ast> ptr_operator_seq
// //
case 341: { action. consumeDeclaratorWithPointer(false); break; case 345: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 342: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator // Rule 346: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
// //
case 342: { action. consumeDeclaratorWithPointer(true); break; case 346: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 346: basic_direct_abstract_declarator ::= ( abstract_declarator ) // Rule 350: basic_direct_abstract_declarator ::= ( abstract_declarator )
// //
case 346: { action. consumeDirectDeclaratorBracketed(); break; case 350: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 347: basic_direct_abstract_declarator ::= ( ) // Rule 351: basic_direct_abstract_declarator ::= ( )
// //
case 347: { action. consumeAbstractDeclaratorEmpty(); break; case 351: { action. consumeAbstractDeclaratorEmpty(); break;
} }
// //
// Rule 348: array_direct_abstract_declarator ::= array_modifier // Rule 352: array_direct_abstract_declarator ::= array_modifier
// //
case 348: { action. consumeDirectDeclaratorArrayDeclarator(false); break; case 352: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
} }
// //
// Rule 349: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // Rule 353: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
// //
case 349: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 353: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 350: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // Rule 354: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
// //
case 350: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 354: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 351: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 355: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 351: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; case 355: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
} }
// //
// Rule 352: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 356: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 352: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; case 356: { action. consumeDirectDeclaratorFunctionDeclarator(false); break;
} }
// //
// Rule 353: parameter_declaration_clause ::= parameter_declaration_list_opt ... // Rule 357: parameter_declaration_clause ::= parameter_declaration_list_opt ...
// //
case 353: { action. consumePlaceHolder(); break; case 357: { action. consumePlaceHolder(); break;
} }
// //
// Rule 354: parameter_declaration_clause ::= parameter_declaration_list_opt // Rule 358: parameter_declaration_clause ::= parameter_declaration_list_opt
// //
case 354: { action. consumeEmpty(); break; case 358: { action. consumeEmpty(); break;
} }
// //
// Rule 355: parameter_declaration_clause ::= parameter_declaration_list , ... // Rule 359: parameter_declaration_clause ::= parameter_declaration_list , ...
// //
case 355: { action. consumePlaceHolder(); break; case 359: { action. consumePlaceHolder(); break;
} }
// //
// Rule 361: abstract_declarator_opt ::= $Empty // Rule 365: abstract_declarator_opt ::= $Empty
// //
case 361: { action. consumeEmpty(); break; case 365: { action. consumeEmpty(); break;
} }
// //
// Rule 362: parameter_declaration ::= declaration_specifiers parameter_init_declarator // Rule 366: parameter_declaration ::= declaration_specifiers parameter_init_declarator
// //
case 362: { action. consumeParameterDeclaration(); break; case 366: { action. consumeParameterDeclaration(); break;
} }
// //
// Rule 363: parameter_declaration ::= declaration_specifiers // Rule 367: parameter_declaration ::= declaration_specifiers
// //
case 363: { action. consumeParameterDeclarationWithoutDeclarator(); break; case 367: { action. consumeParameterDeclarationWithoutDeclarator(); break;
} }
// //
// Rule 365: parameter_init_declarator ::= declarator = parameter_initializer // Rule 369: parameter_init_declarator ::= declarator = parameter_initializer
// //
case 365: { action. consumeDeclaratorWithInitializer(true); break; case 369: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 367: parameter_init_declarator ::= abstract_declarator = parameter_initializer // Rule 371: parameter_init_declarator ::= abstract_declarator = parameter_initializer
// //
case 367: { action. consumeDeclaratorWithInitializer(true); break; case 371: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 368: parameter_init_declarator ::= = parameter_initializer // Rule 372: parameter_init_declarator ::= = parameter_initializer
// //
case 368: { action. consumeDeclaratorWithInitializer(false); break; case 372: { action. consumeDeclaratorWithInitializer(false); break;
} }
// //
// Rule 369: parameter_initializer ::= assignment_expression // Rule 373: parameter_initializer ::= assignment_expression
// //
case 369: { action. consumeInitializer(); break; case 373: { action. consumeInitializer(); break;
} }
// //
// Rule 370: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body // Rule 374: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
// //
case 370: { action. consumeFunctionDefinition(false); break; case 374: { action. consumeFunctionDefinition(false); break;
} }
// //
// Rule 371: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq // Rule 375: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
// //
case 371: { action. consumeFunctionDefinition(true); break; case 375: { action. consumeFunctionDefinition(true); break;
} }
// //
// Rule 374: initializer ::= ( expression_list ) // Rule 378: initializer ::= ( expression_list )
// //
case 374: { action. consumeInitializerConstructor(); break; case 378: { action. consumeInitializerConstructor(); break;
} }
// //
// Rule 375: initializer_clause ::= assignment_expression // Rule 379: initializer_clause ::= assignment_expression
// //
case 375: { action. consumeInitializer(); break; case 379: { action. consumeInitializer(); break;
} }
// //
// Rule 376: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list , } end_initializer_list // Rule 380: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list , } end_initializer_list
// //
case 376: { action. consumeInitializerList(); break; case 380: { action. consumeInitializerList(); break;
} }
// //
// Rule 377: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list } end_initializer_list // Rule 381: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list } end_initializer_list
// //
case 377: { action. consumeInitializerList(); break; case 381: { action. consumeInitializerList(); break;
} }
// //
// Rule 378: initializer_clause ::= { <openscope-ast> } // Rule 382: initializer_clause ::= { <openscope-ast> }
// //
case 378: { action. consumeInitializerList(); break; case 382: { action. consumeInitializerList(); break;
} }
// //
// Rule 379: start_initializer_list ::= $Empty // Rule 383: start_initializer_list ::= $Empty
// //
case 379: { action. initializerListStart(); break; case 383: { action. initializerListStart(); break;
} }
// //
// Rule 380: end_initializer_list ::= $Empty // Rule 384: end_initializer_list ::= $Empty
// //
case 380: { action. initializerListEnd(); break; case 384: { action. initializerListEnd(); break;
} }
// //
// Rule 385: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt } // Rule 389: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
// //
case 385: { action. consumeClassSpecifier(); break; case 389: { action. consumeClassSpecifier(); break;
} }
// //
// Rule 386: class_head ::= class_keyword identifier_name_opt <openscope-ast> base_clause_opt // Rule 390: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 386: { action. consumeClassHead(false); break; case 390: { action. consumeClassHead(false); break;
} }
// //
// Rule 387: class_head ::= class_keyword template_id_name <openscope-ast> base_clause_opt // Rule 391: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 387: { action. consumeClassHead(false); break; case 391: { action. consumeClassHead(false); break;
} }
// //
// Rule 388: class_head ::= class_keyword nested_name_specifier identifier_name <openscope-ast> base_clause_opt // Rule 392: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 388: { action. consumeClassHead(true); break; case 392: { action. consumeClassHead(true); break;
} }
// //
// Rule 389: class_head ::= class_keyword nested_name_specifier template_id_name <openscope-ast> base_clause_opt // Rule 393: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 389: { action. consumeClassHead(true); break; case 393: { action. consumeClassHead(true); break;
} }
// //
// Rule 391: identifier_name_opt ::= $Empty // Rule 397: identifier_name_opt ::= $Empty
// //
case 391: { action. consumeEmpty(); break; case 397: { action. consumeEmpty(); break;
} }
// //
// Rule 395: visibility_label ::= access_specifier_keyword : // Rule 401: visibility_label ::= access_specifier_keyword :
// //
case 395: { action. consumeVisibilityLabel(); break; case 401: { action. consumeVisibilityLabel(); break;
} }
// //
// Rule 396: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ; // Rule 402: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
// //
case 396: { action. consumeDeclarationSimple(true); break; case 402: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 397: member_declaration ::= declaration_specifiers_opt ; // Rule 403: member_declaration ::= declaration_specifiers_opt ;
// //
case 397: { action. consumeDeclarationSimple(false); break; case 403: { action. consumeDeclarationSimple(false); break;
} }
// //
// Rule 400: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; // Rule 406: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
// //
case 400: { action. consumeMemberDeclarationQualifiedId(); break; case 406: { action. consumeMemberDeclarationQualifiedId(); break;
} }
// //
// Rule 406: member_declaration ::= ERROR_TOKEN // Rule 412: member_declaration ::= ERROR_TOKEN
// //
case 406: { action. consumeDeclarationProblem(); break; case 412: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 414: member_declarator ::= declarator constant_initializer // Rule 421: member_declarator ::= declarator constant_initializer
// //
case 414: { action. consumeMemberDeclaratorWithInitializer(); break; case 421: { action. consumeMemberDeclaratorWithInitializer(); break;
} }
// //
// Rule 415: member_declarator ::= bit_field_declarator : constant_expression // Rule 422: member_declarator ::= bit_field_declarator : constant_expression
// //
case 415: { action. consumeBitField(true); break; case 422: { action. consumeBitField(true); break;
} }
// //
// Rule 416: member_declarator ::= : constant_expression // Rule 423: member_declarator ::= : constant_expression
// //
case 416: { action. consumeBitField(false); break; case 423: { action. consumeBitField(false); break;
} }
// //
// Rule 417: bit_field_declarator ::= identifier_name // Rule 424: bit_field_declarator ::= identifier_name
// //
case 417: { action. consumeDirectDeclaratorIdentifier(); break; case 424: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 418: constant_initializer ::= = constant_expression // Rule 425: constant_initializer ::= = constant_expression
// //
case 418: { action. consumeInitializer(); break; case 425: { action. consumeInitializer(); break;
} }
// //
// Rule 424: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name // Rule 431: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
// //
case 424: { action. consumeBaseSpecifier(false, false); break; case 431: { action. consumeBaseSpecifier(false, false); break;
} }
// //
// Rule 425: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name // Rule 432: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
// //
case 425: { action. consumeBaseSpecifier(true, true); break; case 432: { action. consumeBaseSpecifier(true, true); break;
} }
// //
// Rule 426: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name // Rule 433: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
// //
case 426: { action. consumeBaseSpecifier(true, true); break; case 433: { action. consumeBaseSpecifier(true, true); break;
} }
// //
// Rule 427: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name // Rule 434: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
// //
case 427: { action. consumeBaseSpecifier(true, false); break; case 434: { action. consumeBaseSpecifier(true, false); break;
} }
// //
// Rule 428: access_specifier_keyword ::= private // Rule 435: access_specifier_keyword ::= private
// //
case 428: { action. consumeToken(); break; case 435: { action. consumeToken(); break;
} }
// //
// Rule 429: access_specifier_keyword ::= protected // Rule 436: access_specifier_keyword ::= protected
// //
case 429: { action. consumeToken(); break; case 436: { action. consumeToken(); break;
} }
// //
// Rule 430: access_specifier_keyword ::= public // Rule 437: access_specifier_keyword ::= public
// //
case 430: { action. consumeToken(); break; case 437: { action. consumeToken(); break;
} }
// //
// Rule 432: access_specifier_keyword_opt ::= $Empty // Rule 439: access_specifier_keyword_opt ::= $Empty
// //
case 432: { action. consumeEmpty(); break; case 439: { action. consumeEmpty(); break;
} }
// //
// Rule 434: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt > // Rule 441: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
// //
case 434: { action. consumeTemplateId(); break; case 441: { action. consumeTemplateId(); break;
} }
// //
// Rule 435: conversion_function_id ::= operator conversion_type_id // Rule 442: conversion_function_id ::= operator conversion_type_id
// //
case 435: { action. consumeConversionName(); break; case 442: { action. consumeConversionName(); break;
} }
// //
// Rule 436: conversion_type_id ::= type_specifier_seq conversion_declarator // Rule 443: conversion_type_id ::= type_specifier_seq conversion_declarator
// //
case 436: { action. consumeTypeId(true); break; case 443: { action. consumeTypeId(true); break;
} }
// //
// Rule 437: conversion_type_id ::= type_specifier_seq // Rule 444: conversion_type_id ::= type_specifier_seq
// //
case 437: { action. consumeTypeId(false); break; case 444: { action. consumeTypeId(false); break;
} }
// //
// Rule 438: conversion_declarator ::= <openscope-ast> ptr_operator_seq // Rule 445: conversion_declarator ::= <openscope-ast> ptr_operator_seq
// //
case 438: { action. consumeDeclaratorWithPointer(false); break; case 445: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 444: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // Rule 451: mem_initializer ::= mem_initializer_name ( expression_list_opt )
// //
case 444: { action. consumeConstructorChainInitializer(); break; case 451: { action. consumeConstructorChainInitializer(); break;
} }
// //
// Rule 445: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // Rule 452: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
// //
case 445: { action. consumeQualifiedId(false); break; case 452: { action. consumeQualifiedId(false); break;
} }
// //
// Rule 448: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt > // Rule 455: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
// //
case 448: { action. consumeTemplateId(); break; case 455: { action. consumeTemplateId(); break;
} }
// //
// Rule 449: operator_id_name ::= operator overloadable_operator // Rule 456: operator_id_name ::= operator overloadable_operator
// //
case 449: { action. consumeOperatorName(); break; case 456: { action. consumeOperatorName(); break;
} }
// //
// Rule 492: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration // Rule 499: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
// //
case 492: { action. consumeTemplateDeclaration(); break; case 499: { action. consumeTemplateDeclaration(); break;
} }
// //
// Rule 493: export_opt ::= export // Rule 500: export_opt ::= export
// //
case 493: { action. consumePlaceHolder(); break; case 500: { action. consumePlaceHolder(); break;
} }
// //
// Rule 494: export_opt ::= $Empty // Rule 501: export_opt ::= $Empty
// //
case 494: { action. consumeEmpty(); break; case 501: { action. consumeEmpty(); break;
} }
// //
// Rule 498: template_parameter ::= parameter_declaration // Rule 505: template_parameter ::= parameter_declaration
// //
case 498: { action. consumeTemplateParamterDeclaration(); break; case 505: { action. consumeTemplateParamterDeclaration(); break;
} }
// //
// Rule 499: type_parameter ::= class identifier_name_opt // Rule 506: type_parameter ::= class identifier_name_opt
// //
case 499: { action. consumeSimpleTypeTemplateParameter(false); break; case 506: { action. consumeSimpleTypeTemplateParameter(false); break;
} }
// //
// Rule 500: type_parameter ::= class identifier_name_opt = type_id // Rule 507: type_parameter ::= class identifier_name_opt = type_id
// //
case 500: { action. consumeSimpleTypeTemplateParameter(true); break; case 507: { action. consumeSimpleTypeTemplateParameter(true); break;
} }
// //
// Rule 501: type_parameter ::= typename identifier_name_opt // Rule 508: type_parameter ::= typename identifier_name_opt
// //
case 501: { action. consumeSimpleTypeTemplateParameter(false); break; case 508: { action. consumeSimpleTypeTemplateParameter(false); break;
} }
// //
// Rule 502: type_parameter ::= typename identifier_name_opt = type_id // Rule 509: type_parameter ::= typename identifier_name_opt = type_id
// //
case 502: { action. consumeSimpleTypeTemplateParameter(true); break; case 509: { action. consumeSimpleTypeTemplateParameter(true); break;
} }
// //
// Rule 503: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt // Rule 510: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
// //
case 503: { action. consumeTemplatedTypeTemplateParameter(false); break; case 510: { action. consumeTemplatedTypeTemplateParameter(false); break;
} }
// //
// Rule 504: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression // Rule 511: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
// //
case 504: { action. consumeTemplatedTypeTemplateParameter(true); break; case 511: { action. consumeTemplatedTypeTemplateParameter(true); break;
} }
// //
// Rule 505: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt > // Rule 512: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
// //
case 505: { action. consumeTemplateId(); break; case 512: { action. consumeTemplateId(); break;
} }
// //
// Rule 510: template_argument ::= assignment_expression // Rule 517: template_argument ::= assignment_expression
// //
case 510: { action. consumeTemplateArgumentExpression(); break; case 517: { action. consumeTemplateArgumentExpression(); break;
} }
// //
// Rule 511: template_argument ::= type_id // Rule 518: template_argument ::= type_id
// //
case 511: { action. consumeTemplateArgumentTypeId(); break; case 518: { action. consumeTemplateArgumentTypeId(); break;
} }
// //
// Rule 512: explicit_instantiation ::= template declaration // Rule 519: explicit_instantiation ::= template declaration
// //
case 512: { action. consumeTemplateExplicitInstantiation(); break; case 519: { action. consumeTemplateExplicitInstantiation(); break;
} }
// //
// Rule 513: explicit_specialization ::= template < > declaration // Rule 520: explicit_specialization ::= template < > declaration
// //
case 513: { action. consumeTemplateExplicitSpecialization(); break; case 520: { action. consumeTemplateExplicitSpecialization(); break;
} }
// //
// Rule 514: try_block ::= try compound_statement <openscope-ast> handler_seq // Rule 521: try_block ::= try compound_statement <openscope-ast> handler_seq
// //
case 514: { action. consumeStatementTryBlock(); break; case 521: { action. consumeStatementTryBlock(); break;
} }
// //
// Rule 517: handler ::= catch ( exception_declaration ) compound_statement // Rule 524: handler ::= catch ( exception_declaration ) compound_statement
// //
case 517: { action. consumeStatementCatchHandler(false); break; case 524: { action. consumeStatementCatchHandler(false); break;
} }
// //
// Rule 518: handler ::= catch ( ... ) compound_statement // Rule 525: handler ::= catch ( ... ) compound_statement
// //
case 518: { action. consumeStatementCatchHandler(true); break; case 525: { action. consumeStatementCatchHandler(true); break;
} }
// //
// Rule 519: exception_declaration ::= type_specifier_seq <openscope-ast> declarator // Rule 526: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
// //
case 519: { action. consumeDeclarationSimple(true); break; case 526: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 520: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator // Rule 527: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
// //
case 520: { action. consumeDeclarationSimple(true); break; case 527: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 521: exception_declaration ::= type_specifier_seq // Rule 528: exception_declaration ::= type_specifier_seq
// //
case 521: { action. consumeDeclarationSimple(false); break; case 528: { action. consumeDeclarationSimple(false); break;
} }
// //
// Rule 523: exception_specification ::= throw ( ) // Rule 530: exception_specification ::= throw ( )
// //
case 523: { action. consumePlaceHolder(); break; case 530: { action. consumePlaceHolder(); break;
} }
// //
// Rule 529: no_cast_start ::= ERROR_TOKEN // Rule 536: no_cast_start ::= ERROR_TOKEN
// //
case 529: { action. consumeExpressionProblem(); break; case 536: { action. consumeExpressionProblem(); break;
} }

View file

@ -62,13 +62,13 @@ public interface CPPNoCastExpressionParsersym {
TK_static_cast = 47, TK_static_cast = 47,
TK_struct = 58, TK_struct = 58,
TK_switch = 86, TK_switch = 86,
TK_template = 55, TK_template = 48,
TK_this = 48, TK_this = 49,
TK_throw = 61, TK_throw = 61,
TK_try = 75, TK_try = 75,
TK_true = 49, TK_true = 50,
TK_typedef = 36, TK_typedef = 36,
TK_typeid = 50, TK_typeid = 51,
TK_typename = 10, TK_typename = 10,
TK_union = 59, TK_union = 59,
TK_unsigned = 19, TK_unsigned = 19,
@ -78,9 +78,9 @@ public interface CPPNoCastExpressionParsersym {
TK_volatile = 24, TK_volatile = 24,
TK_wchar_t = 21, TK_wchar_t = 21,
TK_while = 76, TK_while = 76,
TK_integer = 51, TK_integer = 52,
TK_floating = 52, TK_floating = 53,
TK_charconst = 53, TK_charconst = 54,
TK_stringlit = 39, TK_stringlit = 39,
TK_identifier = 1, TK_identifier = 1,
TK_Completion = 2, TK_Completion = 2,
@ -136,7 +136,7 @@ public interface CPPNoCastExpressionParsersym {
TK_SemiColon = 27, TK_SemiColon = 27,
TK_LeftBrace = 68, TK_LeftBrace = 68,
TK_ERROR_TOKEN = 62, TK_ERROR_TOKEN = 62,
TK_0 = 54, TK_0 = 55,
TK_EOF_TOKEN = 121; TK_EOF_TOKEN = 121;
public final static String orderedTerminalSymbols[] = { public final static String orderedTerminalSymbols[] = {
@ -188,6 +188,7 @@ public interface CPPNoCastExpressionParsersym {
"reinterpret_cast", "reinterpret_cast",
"sizeof", "sizeof",
"static_cast", "static_cast",
"template",
"this", "this",
"true", "true",
"typeid", "typeid",
@ -195,7 +196,6 @@ public interface CPPNoCastExpressionParsersym {
"floating", "floating",
"charconst", "charconst",
"0", "0",
"template",
"LT", "LT",
"enum", "enum",
"struct", "struct",

View file

@ -1258,717 +1258,717 @@ public CPPNoFunctionDeclaratorParser(String[] mapFrom) { // constructor
} }
// //
// Rule 281: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt identifier_name // Rule 281: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
// //
case 281: { action. consumeTypeSpecifierElaborated(false); break; case 281: { action. consumeTypeSpecifierElaborated(false); break;
} }
// //
// Rule 282: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt template_opt template_id_name // Rule 282: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
// //
case 282: { action. consumeTypeSpecifierElaborated(true); break; case 282: { action. consumeTypeSpecifierElaborated(true); break;
} }
// //
// Rule 283: elaborated_type_specifier ::= enum dcolon_opt nested_name_specifier_opt identifier_name // Rule 283: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
// //
case 283: { action. consumeTypeSpecifierElaborated(false); break; case 283: { action. consumeTypeSpecifierElaborated(false); break;
} }
// //
// Rule 284: enum_specifier ::= enum { <openscope-ast> enumerator_list_opt } // Rule 285: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt }
// //
case 284: { action. consumeTypeSpecifierEnumeration(false); break; case 285: { action. consumeTypeSpecifierEnumeration(false); break;
} }
// //
// Rule 285: enum_specifier ::= enum identifier_token { <openscope-ast> enumerator_list_opt } // Rule 286: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt }
// //
case 285: { action. consumeTypeSpecifierEnumeration(true); break; case 286: { action. consumeTypeSpecifierEnumeration(true); break;
} }
// //
// Rule 290: enumerator_definition ::= identifier_token // Rule 292: enumerator_definition ::= identifier_token
// //
case 290: { action. consumeEnumerator(false); break; case 292: { action. consumeEnumerator(false); break;
} }
// //
// Rule 291: enumerator_definition ::= identifier_token = constant_expression // Rule 293: enumerator_definition ::= identifier_token = constant_expression
// //
case 291: { action. consumeEnumerator(true); break; case 293: { action. consumeEnumerator(true); break;
} }
// //
// Rule 295: named_namespace_definition ::= namespace namespace_name { <openscope-ast> declaration_seq_opt } // Rule 297: named_namespace_definition ::= namespace namespace_name { <openscope-ast> declaration_seq_opt }
// //
case 295: { action. consumeNamespaceDefinition(true); break; case 297: { action. consumeNamespaceDefinition(true); break;
} }
// //
// Rule 296: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt } // Rule 298: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt }
// //
case 296: { action. consumeNamespaceDefinition(false); break; case 298: { action. consumeNamespaceDefinition(false); break;
} }
// //
// Rule 297: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; // Rule 299: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
// //
case 297: { action. consumeNamespaceAliasDefinition(); break; case 299: { action. consumeNamespaceAliasDefinition(); break;
} }
// //
// Rule 298: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; // Rule 300: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
// //
case 298: { action. consumeUsingDeclaration(); break; case 300: { action. consumeUsingDeclaration(); break;
} }
// //
// Rule 299: typename_opt ::= typename // Rule 301: typename_opt ::= typename
// //
case 299: { action. consumePlaceHolder(); break; case 301: { action. consumePlaceHolder(); break;
} }
// //
// Rule 300: typename_opt ::= $Empty // Rule 302: typename_opt ::= $Empty
// //
case 300: { action. consumeEmpty(); break; case 302: { action. consumeEmpty(); break;
} }
// //
// Rule 301: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; // Rule 303: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
// //
case 301: { action. consumeUsingDirective(); break; case 303: { action. consumeUsingDirective(); break;
} }
// //
// Rule 302: asm_definition ::= asm ( stringlit ) ; // Rule 304: asm_definition ::= asm ( stringlit ) ;
// //
case 302: { action. consumeDeclarationASM(); break; case 304: { action. consumeDeclarationASM(); break;
} }
// //
// Rule 303: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt } // Rule 305: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
// //
case 303: { action. consumeLinkageSpecification(); break; case 305: { action. consumeLinkageSpecification(); break;
} }
// //
// Rule 304: linkage_specification ::= extern stringlit <openscope-ast> declaration // Rule 306: linkage_specification ::= extern stringlit <openscope-ast> declaration
// //
case 304: { action. consumeLinkageSpecification(); break; case 306: { action. consumeLinkageSpecification(); break;
} }
// //
// Rule 310: init_declarator ::= declarator initializer // Rule 312: init_declarator ::= complete_declarator initializer
// //
case 310: { action. consumeDeclaratorWithInitializer(true); break; case 312: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 312: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // Rule 315: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
// //
case 312: { action. consumeDeclaratorWithPointer(true); break; case 315: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 314: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // Rule 317: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
// //
case 314: { action. consumeDeclaratorWithPointer(true); break; case 317: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 317: basic_direct_declarator ::= declarator_id_name // Rule 320: basic_direct_declarator ::= declarator_id_name
// //
case 317: { action. consumeDirectDeclaratorIdentifier(); break; case 320: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 318: basic_direct_declarator ::= ( declarator ) // Rule 321: basic_direct_declarator ::= ( declarator )
// //
case 318: { action. consumeDirectDeclaratorBracketed(); break; case 321: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 319: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 322: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 319: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; case 322: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
} }
// //
// Rule 320: array_direct_declarator ::= array_direct_declarator array_modifier // Rule 323: array_direct_declarator ::= array_direct_declarator array_modifier
// //
case 320: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 323: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 321: array_direct_declarator ::= basic_direct_declarator array_modifier // Rule 324: array_direct_declarator ::= basic_direct_declarator array_modifier
// //
case 321: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 324: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 322: array_modifier ::= [ constant_expression ] // Rule 325: array_modifier ::= [ constant_expression ]
// //
case 322: { action. consumeDirectDeclaratorArrayModifier(true); break; case 325: { action. consumeDirectDeclaratorArrayModifier(true); break;
} }
// //
// Rule 323: array_modifier ::= [ ] // Rule 326: array_modifier ::= [ ]
// //
case 323: { action. consumeDirectDeclaratorArrayModifier(false); break; case 326: { action. consumeDirectDeclaratorArrayModifier(false); break;
} }
// //
// Rule 324: ptr_operator ::= * <openscope-ast> cv_qualifier_seq_opt // Rule 327: ptr_operator ::= pointer_hook * <openscope-ast> cv_qualifier_seq_opt
// //
case 324: { action. consumePointer(); break; case 327: { action. consumePointer(); break;
} }
// //
// Rule 325: ptr_operator ::= & // Rule 328: ptr_operator ::= pointer_hook &
// //
case 325: { action. consumeReferenceOperator(); break; case 328: { action. consumeReferenceOperator(); break;
} }
// //
// Rule 326: ptr_operator ::= dcolon_opt nested_name_specifier * <openscope-ast> cv_qualifier_seq_opt // Rule 329: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * <openscope-ast> cv_qualifier_seq_opt
// //
case 326: { action. consumePointerToMember(); break; case 329: { action. consumePointerToMember(); break;
} }
// //
// Rule 332: cv_qualifier ::= const // Rule 336: cv_qualifier ::= const
// //
case 332: { action. consumeDeclSpecToken(); break; case 336: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 333: cv_qualifier ::= volatile // Rule 337: cv_qualifier ::= volatile
// //
case 333: { action. consumeDeclSpecToken(); break; case 337: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 335: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name // Rule 339: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
// //
case 335: { action. consumeQualifiedId(false); break; case 339: { action. consumeQualifiedId(false); break;
} }
// //
// Rule 336: type_id ::= type_specifier_seq // Rule 340: type_id ::= type_specifier_seq
// //
case 336: { action. consumeTypeId(false); break; case 340: { action. consumeTypeId(false); break;
} }
// //
// Rule 337: type_id ::= type_specifier_seq abstract_declarator // Rule 341: type_id ::= type_specifier_seq abstract_declarator
// //
case 337: { action. consumeTypeId(true); break; case 341: { action. consumeTypeId(true); break;
} }
// //
// Rule 340: abstract_declarator ::= <openscope-ast> ptr_operator_seq // Rule 344: abstract_declarator ::= <openscope-ast> ptr_operator_seq
// //
case 340: { action. consumeDeclaratorWithPointer(false); break; case 344: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 341: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator // Rule 345: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
// //
case 341: { action. consumeDeclaratorWithPointer(true); break; case 345: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 345: basic_direct_abstract_declarator ::= ( abstract_declarator ) // Rule 349: basic_direct_abstract_declarator ::= ( abstract_declarator )
// //
case 345: { action. consumeDirectDeclaratorBracketed(); break; case 349: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 346: basic_direct_abstract_declarator ::= ( ) // Rule 350: basic_direct_abstract_declarator ::= ( )
// //
case 346: { action. consumeAbstractDeclaratorEmpty(); break; case 350: { action. consumeAbstractDeclaratorEmpty(); break;
} }
// //
// Rule 347: array_direct_abstract_declarator ::= array_modifier // Rule 351: array_direct_abstract_declarator ::= array_modifier
// //
case 347: { action. consumeDirectDeclaratorArrayDeclarator(false); break; case 351: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
} }
// //
// Rule 348: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // Rule 352: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
// //
case 348: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 352: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 349: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // Rule 353: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
// //
case 349: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 353: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 350: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 354: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 350: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; case 354: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
} }
// //
// Rule 351: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 355: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 351: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; case 355: { action. consumeDirectDeclaratorFunctionDeclarator(false); break;
} }
// //
// Rule 352: parameter_declaration_clause ::= parameter_declaration_list_opt ... // Rule 356: parameter_declaration_clause ::= parameter_declaration_list_opt ...
// //
case 352: { action. consumePlaceHolder(); break; case 356: { action. consumePlaceHolder(); break;
} }
// //
// Rule 353: parameter_declaration_clause ::= parameter_declaration_list_opt // Rule 357: parameter_declaration_clause ::= parameter_declaration_list_opt
// //
case 353: { action. consumeEmpty(); break; case 357: { action. consumeEmpty(); break;
} }
// //
// Rule 354: parameter_declaration_clause ::= parameter_declaration_list , ... // Rule 358: parameter_declaration_clause ::= parameter_declaration_list , ...
// //
case 354: { action. consumePlaceHolder(); break; case 358: { action. consumePlaceHolder(); break;
} }
// //
// Rule 360: abstract_declarator_opt ::= $Empty // Rule 364: abstract_declarator_opt ::= $Empty
// //
case 360: { action. consumeEmpty(); break; case 364: { action. consumeEmpty(); break;
} }
// //
// Rule 361: parameter_declaration ::= declaration_specifiers parameter_init_declarator // Rule 365: parameter_declaration ::= declaration_specifiers parameter_init_declarator
// //
case 361: { action. consumeParameterDeclaration(); break; case 365: { action. consumeParameterDeclaration(); break;
} }
// //
// Rule 362: parameter_declaration ::= declaration_specifiers // Rule 366: parameter_declaration ::= declaration_specifiers
// //
case 362: { action. consumeParameterDeclarationWithoutDeclarator(); break; case 366: { action. consumeParameterDeclarationWithoutDeclarator(); break;
} }
// //
// Rule 364: parameter_init_declarator ::= declarator = parameter_initializer // Rule 368: parameter_init_declarator ::= declarator = parameter_initializer
// //
case 364: { action. consumeDeclaratorWithInitializer(true); break; case 368: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 366: parameter_init_declarator ::= abstract_declarator = parameter_initializer // Rule 370: parameter_init_declarator ::= abstract_declarator = parameter_initializer
// //
case 366: { action. consumeDeclaratorWithInitializer(true); break; case 370: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 367: parameter_init_declarator ::= = parameter_initializer // Rule 371: parameter_init_declarator ::= = parameter_initializer
// //
case 367: { action. consumeDeclaratorWithInitializer(false); break; case 371: { action. consumeDeclaratorWithInitializer(false); break;
} }
// //
// Rule 368: parameter_initializer ::= assignment_expression // Rule 372: parameter_initializer ::= assignment_expression
// //
case 368: { action. consumeInitializer(); break; case 372: { action. consumeInitializer(); break;
} }
// //
// Rule 369: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body // Rule 373: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
// //
case 369: { action. consumeFunctionDefinition(false); break; case 373: { action. consumeFunctionDefinition(false); break;
} }
// //
// Rule 370: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq // Rule 374: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
// //
case 370: { action. consumeFunctionDefinition(true); break; case 374: { action. consumeFunctionDefinition(true); break;
} }
// //
// Rule 373: initializer ::= ( expression_list ) // Rule 377: initializer ::= ( expression_list )
// //
case 373: { action. consumeInitializerConstructor(); break; case 377: { action. consumeInitializerConstructor(); break;
} }
// //
// Rule 374: initializer_clause ::= assignment_expression // Rule 378: initializer_clause ::= assignment_expression
// //
case 374: { action. consumeInitializer(); break; case 378: { action. consumeInitializer(); break;
} }
// //
// Rule 375: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list , } end_initializer_list // Rule 379: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list , } end_initializer_list
// //
case 375: { action. consumeInitializerList(); break; case 379: { action. consumeInitializerList(); break;
} }
// //
// Rule 376: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list } end_initializer_list // Rule 380: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list } end_initializer_list
// //
case 376: { action. consumeInitializerList(); break; case 380: { action. consumeInitializerList(); break;
} }
// //
// Rule 377: initializer_clause ::= { <openscope-ast> } // Rule 381: initializer_clause ::= { <openscope-ast> }
// //
case 377: { action. consumeInitializerList(); break; case 381: { action. consumeInitializerList(); break;
} }
// //
// Rule 378: start_initializer_list ::= $Empty // Rule 382: start_initializer_list ::= $Empty
// //
case 378: { action. initializerListStart(); break; case 382: { action. initializerListStart(); break;
} }
// //
// Rule 379: end_initializer_list ::= $Empty // Rule 383: end_initializer_list ::= $Empty
// //
case 379: { action. initializerListEnd(); break; case 383: { action. initializerListEnd(); break;
} }
// //
// Rule 384: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt } // Rule 388: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
// //
case 384: { action. consumeClassSpecifier(); break; case 388: { action. consumeClassSpecifier(); break;
} }
// //
// Rule 385: class_head ::= class_keyword identifier_name_opt <openscope-ast> base_clause_opt // Rule 389: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 385: { action. consumeClassHead(false); break; case 389: { action. consumeClassHead(false); break;
} }
// //
// Rule 386: class_head ::= class_keyword template_id_name <openscope-ast> base_clause_opt // Rule 390: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 386: { action. consumeClassHead(false); break; case 390: { action. consumeClassHead(false); break;
} }
// //
// Rule 387: class_head ::= class_keyword nested_name_specifier identifier_name <openscope-ast> base_clause_opt // Rule 391: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 387: { action. consumeClassHead(true); break; case 391: { action. consumeClassHead(true); break;
} }
// //
// Rule 388: class_head ::= class_keyword nested_name_specifier template_id_name <openscope-ast> base_clause_opt // Rule 392: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 388: { action. consumeClassHead(true); break; case 392: { action. consumeClassHead(true); break;
} }
// //
// Rule 390: identifier_name_opt ::= $Empty // Rule 396: identifier_name_opt ::= $Empty
// //
case 390: { action. consumeEmpty(); break; case 396: { action. consumeEmpty(); break;
} }
// //
// Rule 394: visibility_label ::= access_specifier_keyword : // Rule 400: visibility_label ::= access_specifier_keyword :
// //
case 394: { action. consumeVisibilityLabel(); break; case 400: { action. consumeVisibilityLabel(); break;
} }
// //
// Rule 395: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ; // Rule 401: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
// //
case 395: { action. consumeDeclarationSimple(true); break; case 401: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 396: member_declaration ::= declaration_specifiers_opt ; // Rule 402: member_declaration ::= declaration_specifiers_opt ;
// //
case 396: { action. consumeDeclarationSimple(false); break; case 402: { action. consumeDeclarationSimple(false); break;
} }
// //
// Rule 399: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; // Rule 405: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
// //
case 399: { action. consumeMemberDeclarationQualifiedId(); break; case 405: { action. consumeMemberDeclarationQualifiedId(); break;
} }
// //
// Rule 405: member_declaration ::= ERROR_TOKEN // Rule 411: member_declaration ::= ERROR_TOKEN
// //
case 405: { action. consumeDeclarationProblem(); break; case 411: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 413: member_declarator ::= declarator constant_initializer // Rule 420: member_declarator ::= declarator constant_initializer
// //
case 413: { action. consumeMemberDeclaratorWithInitializer(); break; case 420: { action. consumeMemberDeclaratorWithInitializer(); break;
} }
// //
// Rule 414: member_declarator ::= bit_field_declarator : constant_expression // Rule 421: member_declarator ::= bit_field_declarator : constant_expression
// //
case 414: { action. consumeBitField(true); break; case 421: { action. consumeBitField(true); break;
} }
// //
// Rule 415: member_declarator ::= : constant_expression // Rule 422: member_declarator ::= : constant_expression
// //
case 415: { action. consumeBitField(false); break; case 422: { action. consumeBitField(false); break;
} }
// //
// Rule 416: bit_field_declarator ::= identifier_name // Rule 423: bit_field_declarator ::= identifier_name
// //
case 416: { action. consumeDirectDeclaratorIdentifier(); break; case 423: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 417: constant_initializer ::= = constant_expression // Rule 424: constant_initializer ::= = constant_expression
// //
case 417: { action. consumeInitializer(); break; case 424: { action. consumeInitializer(); break;
} }
// //
// Rule 423: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name // Rule 430: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
// //
case 423: { action. consumeBaseSpecifier(false, false); break; case 430: { action. consumeBaseSpecifier(false, false); break;
} }
// //
// Rule 424: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name // Rule 431: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
// //
case 424: { action. consumeBaseSpecifier(true, true); break; case 431: { action. consumeBaseSpecifier(true, true); break;
} }
// //
// Rule 425: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name // Rule 432: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
// //
case 425: { action. consumeBaseSpecifier(true, true); break; case 432: { action. consumeBaseSpecifier(true, true); break;
} }
// //
// Rule 426: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name // Rule 433: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
// //
case 426: { action. consumeBaseSpecifier(true, false); break; case 433: { action. consumeBaseSpecifier(true, false); break;
} }
// //
// Rule 427: access_specifier_keyword ::= private // Rule 434: access_specifier_keyword ::= private
// //
case 427: { action. consumeToken(); break; case 434: { action. consumeToken(); break;
} }
// //
// Rule 428: access_specifier_keyword ::= protected // Rule 435: access_specifier_keyword ::= protected
// //
case 428: { action. consumeToken(); break; case 435: { action. consumeToken(); break;
} }
// //
// Rule 429: access_specifier_keyword ::= public // Rule 436: access_specifier_keyword ::= public
// //
case 429: { action. consumeToken(); break; case 436: { action. consumeToken(); break;
} }
// //
// Rule 431: access_specifier_keyword_opt ::= $Empty // Rule 438: access_specifier_keyword_opt ::= $Empty
// //
case 431: { action. consumeEmpty(); break; case 438: { action. consumeEmpty(); break;
} }
// //
// Rule 433: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt > // Rule 440: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
// //
case 433: { action. consumeTemplateId(); break; case 440: { action. consumeTemplateId(); break;
} }
// //
// Rule 434: conversion_function_id ::= operator conversion_type_id // Rule 441: conversion_function_id ::= operator conversion_type_id
// //
case 434: { action. consumeConversionName(); break; case 441: { action. consumeConversionName(); break;
} }
// //
// Rule 435: conversion_type_id ::= type_specifier_seq conversion_declarator // Rule 442: conversion_type_id ::= type_specifier_seq conversion_declarator
// //
case 435: { action. consumeTypeId(true); break; case 442: { action. consumeTypeId(true); break;
} }
// //
// Rule 436: conversion_type_id ::= type_specifier_seq // Rule 443: conversion_type_id ::= type_specifier_seq
// //
case 436: { action. consumeTypeId(false); break; case 443: { action. consumeTypeId(false); break;
} }
// //
// Rule 437: conversion_declarator ::= <openscope-ast> ptr_operator_seq // Rule 444: conversion_declarator ::= <openscope-ast> ptr_operator_seq
// //
case 437: { action. consumeDeclaratorWithPointer(false); break; case 444: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 443: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // Rule 450: mem_initializer ::= mem_initializer_name ( expression_list_opt )
// //
case 443: { action. consumeConstructorChainInitializer(); break; case 450: { action. consumeConstructorChainInitializer(); break;
} }
// //
// Rule 444: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // Rule 451: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
// //
case 444: { action. consumeQualifiedId(false); break; case 451: { action. consumeQualifiedId(false); break;
} }
// //
// Rule 447: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt > // Rule 454: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
// //
case 447: { action. consumeTemplateId(); break; case 454: { action. consumeTemplateId(); break;
} }
// //
// Rule 448: operator_id_name ::= operator overloadable_operator // Rule 455: operator_id_name ::= operator overloadable_operator
// //
case 448: { action. consumeOperatorName(); break; case 455: { action. consumeOperatorName(); break;
} }
// //
// Rule 491: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration // Rule 498: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
// //
case 491: { action. consumeTemplateDeclaration(); break; case 498: { action. consumeTemplateDeclaration(); break;
} }
// //
// Rule 492: export_opt ::= export // Rule 499: export_opt ::= export
// //
case 492: { action. consumePlaceHolder(); break; case 499: { action. consumePlaceHolder(); break;
} }
// //
// Rule 493: export_opt ::= $Empty // Rule 500: export_opt ::= $Empty
// //
case 493: { action. consumeEmpty(); break; case 500: { action. consumeEmpty(); break;
} }
// //
// Rule 497: template_parameter ::= parameter_declaration // Rule 504: template_parameter ::= parameter_declaration
// //
case 497: { action. consumeTemplateParamterDeclaration(); break; case 504: { action. consumeTemplateParamterDeclaration(); break;
} }
// //
// Rule 498: type_parameter ::= class identifier_name_opt // Rule 505: type_parameter ::= class identifier_name_opt
// //
case 498: { action. consumeSimpleTypeTemplateParameter(false); break; case 505: { action. consumeSimpleTypeTemplateParameter(false); break;
} }
// //
// Rule 499: type_parameter ::= class identifier_name_opt = type_id // Rule 506: type_parameter ::= class identifier_name_opt = type_id
// //
case 499: { action. consumeSimpleTypeTemplateParameter(true); break; case 506: { action. consumeSimpleTypeTemplateParameter(true); break;
} }
// //
// Rule 500: type_parameter ::= typename identifier_name_opt // Rule 507: type_parameter ::= typename identifier_name_opt
// //
case 500: { action. consumeSimpleTypeTemplateParameter(false); break; case 507: { action. consumeSimpleTypeTemplateParameter(false); break;
} }
// //
// Rule 501: type_parameter ::= typename identifier_name_opt = type_id // Rule 508: type_parameter ::= typename identifier_name_opt = type_id
// //
case 501: { action. consumeSimpleTypeTemplateParameter(true); break; case 508: { action. consumeSimpleTypeTemplateParameter(true); break;
} }
// //
// Rule 502: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt // Rule 509: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
// //
case 502: { action. consumeTemplatedTypeTemplateParameter(false); break; case 509: { action. consumeTemplatedTypeTemplateParameter(false); break;
} }
// //
// Rule 503: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression // Rule 510: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
// //
case 503: { action. consumeTemplatedTypeTemplateParameter(true); break; case 510: { action. consumeTemplatedTypeTemplateParameter(true); break;
} }
// //
// Rule 504: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt > // Rule 511: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
// //
case 504: { action. consumeTemplateId(); break; case 511: { action. consumeTemplateId(); break;
} }
// //
// Rule 509: template_argument ::= assignment_expression // Rule 516: template_argument ::= assignment_expression
// //
case 509: { action. consumeTemplateArgumentExpression(); break; case 516: { action. consumeTemplateArgumentExpression(); break;
} }
// //
// Rule 510: template_argument ::= type_id // Rule 517: template_argument ::= type_id
// //
case 510: { action. consumeTemplateArgumentTypeId(); break; case 517: { action. consumeTemplateArgumentTypeId(); break;
} }
// //
// Rule 511: explicit_instantiation ::= template declaration // Rule 518: explicit_instantiation ::= template declaration
// //
case 511: { action. consumeTemplateExplicitInstantiation(); break; case 518: { action. consumeTemplateExplicitInstantiation(); break;
} }
// //
// Rule 512: explicit_specialization ::= template < > declaration // Rule 519: explicit_specialization ::= template < > declaration
// //
case 512: { action. consumeTemplateExplicitSpecialization(); break; case 519: { action. consumeTemplateExplicitSpecialization(); break;
} }
// //
// Rule 513: try_block ::= try compound_statement <openscope-ast> handler_seq // Rule 520: try_block ::= try compound_statement <openscope-ast> handler_seq
// //
case 513: { action. consumeStatementTryBlock(); break; case 520: { action. consumeStatementTryBlock(); break;
} }
// //
// Rule 516: handler ::= catch ( exception_declaration ) compound_statement // Rule 523: handler ::= catch ( exception_declaration ) compound_statement
// //
case 516: { action. consumeStatementCatchHandler(false); break; case 523: { action. consumeStatementCatchHandler(false); break;
} }
// //
// Rule 517: handler ::= catch ( ... ) compound_statement // Rule 524: handler ::= catch ( ... ) compound_statement
// //
case 517: { action. consumeStatementCatchHandler(true); break; case 524: { action. consumeStatementCatchHandler(true); break;
} }
// //
// Rule 518: exception_declaration ::= type_specifier_seq <openscope-ast> declarator // Rule 525: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
// //
case 518: { action. consumeDeclarationSimple(true); break; case 525: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 519: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator // Rule 526: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
// //
case 519: { action. consumeDeclarationSimple(true); break; case 526: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 520: exception_declaration ::= type_specifier_seq // Rule 527: exception_declaration ::= type_specifier_seq
// //
case 520: { action. consumeDeclarationSimple(false); break; case 527: { action. consumeDeclarationSimple(false); break;
} }
// //
// Rule 522: exception_specification ::= throw ( ) // Rule 529: exception_specification ::= throw ( )
// //
case 522: { action. consumePlaceHolder(); break; case 529: { action. consumePlaceHolder(); break;
} }
// //
// Rule 528: no_function_declarator_start ::= ERROR_TOKEN // Rule 535: no_function_declarator_start ::= ERROR_TOKEN
// //
case 528: { action. consumeDeclarationProblem(); break; case 535: { action. consumeDeclarationProblem(); break;
} }

View file

@ -27,7 +27,7 @@ public interface CPPNoFunctionDeclaratorParsersym {
TK_const_cast = 42, TK_const_cast = 42,
TK_continue = 79, TK_continue = 79,
TK_default = 80, TK_default = 80,
TK_delete = 67, TK_delete = 66,
TK_do = 81, TK_do = 81,
TK_double = 13, TK_double = 13,
TK_dynamic_cast = 43, TK_dynamic_cast = 43,
@ -47,7 +47,7 @@ public interface CPPNoFunctionDeclaratorParsersym {
TK_long = 16, TK_long = 16,
TK_mutable = 31, TK_mutable = 31,
TK_namespace = 60, TK_namespace = 60,
TK_new = 68, TK_new = 67,
TK_operator = 7, TK_operator = 7,
TK_private = 103, TK_private = 103,
TK_protected = 104, TK_protected = 104,
@ -134,7 +134,7 @@ public interface CPPNoFunctionDeclaratorParsersym {
TK_RightParen = 74, TK_RightParen = 74,
TK_RightBrace = 72, TK_RightBrace = 72,
TK_SemiColon = 25, TK_SemiColon = 25,
TK_LeftBrace = 66, TK_LeftBrace = 68,
TK_ERROR_TOKEN = 61, TK_ERROR_TOKEN = 61,
TK_0 = 56, TK_0 = 56,
TK_EOF_TOKEN = 121; TK_EOF_TOKEN = 121;
@ -206,9 +206,9 @@ public interface CPPNoFunctionDeclaratorParsersym {
"using", "using",
"LeftBracket", "LeftBracket",
"asm", "asm",
"LeftBrace",
"delete", "delete",
"new", "new",
"LeftBrace",
"GT", "GT",
"Assign", "Assign",
"Comma", "Comma",

View file

@ -1258,717 +1258,717 @@ public CPPParser(String[] mapFrom) { // constructor
} }
// //
// Rule 281: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt identifier_name // Rule 281: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
// //
case 281: { action. consumeTypeSpecifierElaborated(false); break; case 281: { action. consumeTypeSpecifierElaborated(false); break;
} }
// //
// Rule 282: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt template_opt template_id_name // Rule 282: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
// //
case 282: { action. consumeTypeSpecifierElaborated(true); break; case 282: { action. consumeTypeSpecifierElaborated(true); break;
} }
// //
// Rule 283: elaborated_type_specifier ::= enum dcolon_opt nested_name_specifier_opt identifier_name // Rule 283: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
// //
case 283: { action. consumeTypeSpecifierElaborated(false); break; case 283: { action. consumeTypeSpecifierElaborated(false); break;
} }
// //
// Rule 284: enum_specifier ::= enum { <openscope-ast> enumerator_list_opt } // Rule 285: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt }
// //
case 284: { action. consumeTypeSpecifierEnumeration(false); break; case 285: { action. consumeTypeSpecifierEnumeration(false); break;
} }
// //
// Rule 285: enum_specifier ::= enum identifier_token { <openscope-ast> enumerator_list_opt } // Rule 286: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt }
// //
case 285: { action. consumeTypeSpecifierEnumeration(true); break; case 286: { action. consumeTypeSpecifierEnumeration(true); break;
} }
// //
// Rule 290: enumerator_definition ::= identifier_token // Rule 292: enumerator_definition ::= identifier_token
// //
case 290: { action. consumeEnumerator(false); break; case 292: { action. consumeEnumerator(false); break;
} }
// //
// Rule 291: enumerator_definition ::= identifier_token = constant_expression // Rule 293: enumerator_definition ::= identifier_token = constant_expression
// //
case 291: { action. consumeEnumerator(true); break; case 293: { action. consumeEnumerator(true); break;
} }
// //
// Rule 295: named_namespace_definition ::= namespace namespace_name { <openscope-ast> declaration_seq_opt } // Rule 297: named_namespace_definition ::= namespace namespace_name { <openscope-ast> declaration_seq_opt }
// //
case 295: { action. consumeNamespaceDefinition(true); break; case 297: { action. consumeNamespaceDefinition(true); break;
} }
// //
// Rule 296: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt } // Rule 298: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt }
// //
case 296: { action. consumeNamespaceDefinition(false); break; case 298: { action. consumeNamespaceDefinition(false); break;
} }
// //
// Rule 297: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; // Rule 299: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
// //
case 297: { action. consumeNamespaceAliasDefinition(); break; case 299: { action. consumeNamespaceAliasDefinition(); break;
} }
// //
// Rule 298: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; // Rule 300: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
// //
case 298: { action. consumeUsingDeclaration(); break; case 300: { action. consumeUsingDeclaration(); break;
} }
// //
// Rule 299: typename_opt ::= typename // Rule 301: typename_opt ::= typename
// //
case 299: { action. consumePlaceHolder(); break; case 301: { action. consumePlaceHolder(); break;
} }
// //
// Rule 300: typename_opt ::= $Empty // Rule 302: typename_opt ::= $Empty
// //
case 300: { action. consumeEmpty(); break; case 302: { action. consumeEmpty(); break;
} }
// //
// Rule 301: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; // Rule 303: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
// //
case 301: { action. consumeUsingDirective(); break; case 303: { action. consumeUsingDirective(); break;
} }
// //
// Rule 302: asm_definition ::= asm ( stringlit ) ; // Rule 304: asm_definition ::= asm ( stringlit ) ;
// //
case 302: { action. consumeDeclarationASM(); break; case 304: { action. consumeDeclarationASM(); break;
} }
// //
// Rule 303: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt } // Rule 305: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
// //
case 303: { action. consumeLinkageSpecification(); break; case 305: { action. consumeLinkageSpecification(); break;
} }
// //
// Rule 304: linkage_specification ::= extern stringlit <openscope-ast> declaration // Rule 306: linkage_specification ::= extern stringlit <openscope-ast> declaration
// //
case 304: { action. consumeLinkageSpecification(); break; case 306: { action. consumeLinkageSpecification(); break;
} }
// //
// Rule 309: init_declarator_complete ::= init_declarator // Rule 311: init_declarator_complete ::= init_declarator
// //
case 309: { action. consumeInitDeclaratorComplete(); break; case 311: { action. consumeInitDeclaratorComplete(); break;
} }
// //
// Rule 311: init_declarator ::= declarator initializer // Rule 313: init_declarator ::= complete_declarator initializer
// //
case 311: { action. consumeDeclaratorWithInitializer(true); break; case 313: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 313: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // Rule 316: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
// //
case 313: { action. consumeDeclaratorWithPointer(true); break; case 316: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 315: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // Rule 318: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
// //
case 315: { action. consumeDeclaratorWithPointer(true); break; case 318: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 319: basic_direct_declarator ::= declarator_id_name // Rule 322: basic_direct_declarator ::= declarator_id_name
// //
case 319: { action. consumeDirectDeclaratorIdentifier(); break; case 322: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 320: basic_direct_declarator ::= ( declarator ) // Rule 323: basic_direct_declarator ::= ( declarator )
// //
case 320: { action. consumeDirectDeclaratorBracketed(); break; case 323: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 321: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 324: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 321: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; case 324: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
} }
// //
// Rule 322: array_direct_declarator ::= array_direct_declarator array_modifier // Rule 325: array_direct_declarator ::= array_direct_declarator array_modifier
// //
case 322: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 325: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 323: array_direct_declarator ::= basic_direct_declarator array_modifier // Rule 326: array_direct_declarator ::= basic_direct_declarator array_modifier
// //
case 323: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 326: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 324: array_modifier ::= [ constant_expression ] // Rule 327: array_modifier ::= [ constant_expression ]
// //
case 324: { action. consumeDirectDeclaratorArrayModifier(true); break; case 327: { action. consumeDirectDeclaratorArrayModifier(true); break;
} }
// //
// Rule 325: array_modifier ::= [ ] // Rule 328: array_modifier ::= [ ]
// //
case 325: { action. consumeDirectDeclaratorArrayModifier(false); break; case 328: { action. consumeDirectDeclaratorArrayModifier(false); break;
} }
// //
// Rule 326: ptr_operator ::= * <openscope-ast> cv_qualifier_seq_opt // Rule 329: ptr_operator ::= pointer_hook * <openscope-ast> cv_qualifier_seq_opt
// //
case 326: { action. consumePointer(); break; case 329: { action. consumePointer(); break;
} }
// //
// Rule 327: ptr_operator ::= & // Rule 330: ptr_operator ::= pointer_hook &
// //
case 327: { action. consumeReferenceOperator(); break; case 330: { action. consumeReferenceOperator(); break;
} }
// //
// Rule 328: ptr_operator ::= dcolon_opt nested_name_specifier * <openscope-ast> cv_qualifier_seq_opt // Rule 331: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * <openscope-ast> cv_qualifier_seq_opt
// //
case 328: { action. consumePointerToMember(); break; case 331: { action. consumePointerToMember(); break;
} }
// //
// Rule 334: cv_qualifier ::= const // Rule 338: cv_qualifier ::= const
// //
case 334: { action. consumeDeclSpecToken(); break; case 338: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 335: cv_qualifier ::= volatile // Rule 339: cv_qualifier ::= volatile
// //
case 335: { action. consumeDeclSpecToken(); break; case 339: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 337: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name // Rule 341: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
// //
case 337: { action. consumeQualifiedId(false); break; case 341: { action. consumeQualifiedId(false); break;
} }
// //
// Rule 338: type_id ::= type_specifier_seq // Rule 342: type_id ::= type_specifier_seq
// //
case 338: { action. consumeTypeId(false); break; case 342: { action. consumeTypeId(false); break;
} }
// //
// Rule 339: type_id ::= type_specifier_seq abstract_declarator // Rule 343: type_id ::= type_specifier_seq abstract_declarator
// //
case 339: { action. consumeTypeId(true); break; case 343: { action. consumeTypeId(true); break;
} }
// //
// Rule 342: abstract_declarator ::= <openscope-ast> ptr_operator_seq // Rule 346: abstract_declarator ::= <openscope-ast> ptr_operator_seq
// //
case 342: { action. consumeDeclaratorWithPointer(false); break; case 346: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 343: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator // Rule 347: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
// //
case 343: { action. consumeDeclaratorWithPointer(true); break; case 347: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 347: basic_direct_abstract_declarator ::= ( abstract_declarator ) // Rule 351: basic_direct_abstract_declarator ::= ( abstract_declarator )
// //
case 347: { action. consumeDirectDeclaratorBracketed(); break; case 351: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 348: basic_direct_abstract_declarator ::= ( ) // Rule 352: basic_direct_abstract_declarator ::= ( )
// //
case 348: { action. consumeAbstractDeclaratorEmpty(); break; case 352: { action. consumeAbstractDeclaratorEmpty(); break;
} }
// //
// Rule 349: array_direct_abstract_declarator ::= array_modifier // Rule 353: array_direct_abstract_declarator ::= array_modifier
// //
case 349: { action. consumeDirectDeclaratorArrayDeclarator(false); break; case 353: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
} }
// //
// Rule 350: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // Rule 354: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
// //
case 350: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 354: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 351: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // Rule 355: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
// //
case 351: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 355: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 352: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 356: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 352: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; case 356: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
} }
// //
// Rule 353: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 357: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 353: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; case 357: { action. consumeDirectDeclaratorFunctionDeclarator(false); break;
} }
// //
// Rule 354: parameter_declaration_clause ::= parameter_declaration_list_opt ... // Rule 358: parameter_declaration_clause ::= parameter_declaration_list_opt ...
// //
case 354: { action. consumePlaceHolder(); break; case 358: { action. consumePlaceHolder(); break;
} }
// //
// Rule 355: parameter_declaration_clause ::= parameter_declaration_list_opt // Rule 359: parameter_declaration_clause ::= parameter_declaration_list_opt
// //
case 355: { action. consumeEmpty(); break; case 359: { action. consumeEmpty(); break;
} }
// //
// Rule 356: parameter_declaration_clause ::= parameter_declaration_list , ... // Rule 360: parameter_declaration_clause ::= parameter_declaration_list , ...
// //
case 356: { action. consumePlaceHolder(); break; case 360: { action. consumePlaceHolder(); break;
} }
// //
// Rule 362: abstract_declarator_opt ::= $Empty // Rule 366: abstract_declarator_opt ::= $Empty
// //
case 362: { action. consumeEmpty(); break; case 366: { action. consumeEmpty(); break;
} }
// //
// Rule 363: parameter_declaration ::= declaration_specifiers parameter_init_declarator // Rule 367: parameter_declaration ::= declaration_specifiers parameter_init_declarator
// //
case 363: { action. consumeParameterDeclaration(); break; case 367: { action. consumeParameterDeclaration(); break;
} }
// //
// Rule 364: parameter_declaration ::= declaration_specifiers // Rule 368: parameter_declaration ::= declaration_specifiers
// //
case 364: { action. consumeParameterDeclarationWithoutDeclarator(); break; case 368: { action. consumeParameterDeclarationWithoutDeclarator(); break;
} }
// //
// Rule 366: parameter_init_declarator ::= declarator = parameter_initializer // Rule 370: parameter_init_declarator ::= declarator = parameter_initializer
// //
case 366: { action. consumeDeclaratorWithInitializer(true); break; case 370: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 368: parameter_init_declarator ::= abstract_declarator = parameter_initializer // Rule 372: parameter_init_declarator ::= abstract_declarator = parameter_initializer
// //
case 368: { action. consumeDeclaratorWithInitializer(true); break; case 372: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 369: parameter_init_declarator ::= = parameter_initializer // Rule 373: parameter_init_declarator ::= = parameter_initializer
// //
case 369: { action. consumeDeclaratorWithInitializer(false); break; case 373: { action. consumeDeclaratorWithInitializer(false); break;
} }
// //
// Rule 370: parameter_initializer ::= assignment_expression // Rule 374: parameter_initializer ::= assignment_expression
// //
case 370: { action. consumeInitializer(); break; case 374: { action. consumeInitializer(); break;
} }
// //
// Rule 371: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body // Rule 375: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
// //
case 371: { action. consumeFunctionDefinition(false); break; case 375: { action. consumeFunctionDefinition(false); break;
} }
// //
// Rule 372: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq // Rule 376: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
// //
case 372: { action. consumeFunctionDefinition(true); break; case 376: { action. consumeFunctionDefinition(true); break;
} }
// //
// Rule 375: initializer ::= ( expression_list ) // Rule 379: initializer ::= ( expression_list )
// //
case 375: { action. consumeInitializerConstructor(); break; case 379: { action. consumeInitializerConstructor(); break;
} }
// //
// Rule 376: initializer_clause ::= assignment_expression // Rule 380: initializer_clause ::= assignment_expression
// //
case 376: { action. consumeInitializer(); break; case 380: { action. consumeInitializer(); break;
} }
// //
// Rule 377: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list , } end_initializer_list // Rule 381: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list , } end_initializer_list
// //
case 377: { action. consumeInitializerList(); break; case 381: { action. consumeInitializerList(); break;
} }
// //
// Rule 378: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list } end_initializer_list // Rule 382: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list } end_initializer_list
// //
case 378: { action. consumeInitializerList(); break; case 382: { action. consumeInitializerList(); break;
} }
// //
// Rule 379: initializer_clause ::= { <openscope-ast> } // Rule 383: initializer_clause ::= { <openscope-ast> }
// //
case 379: { action. consumeInitializerList(); break; case 383: { action. consumeInitializerList(); break;
} }
// //
// Rule 380: start_initializer_list ::= $Empty // Rule 384: start_initializer_list ::= $Empty
// //
case 380: { action. initializerListStart(); break; case 384: { action. initializerListStart(); break;
} }
// //
// Rule 381: end_initializer_list ::= $Empty // Rule 385: end_initializer_list ::= $Empty
// //
case 381: { action. initializerListEnd(); break; case 385: { action. initializerListEnd(); break;
} }
// //
// Rule 386: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt } // Rule 390: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
// //
case 386: { action. consumeClassSpecifier(); break; case 390: { action. consumeClassSpecifier(); break;
} }
// //
// Rule 387: class_head ::= class_keyword identifier_name_opt <openscope-ast> base_clause_opt // Rule 391: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 387: { action. consumeClassHead(false); break; case 391: { action. consumeClassHead(false); break;
} }
// //
// Rule 388: class_head ::= class_keyword template_id_name <openscope-ast> base_clause_opt // Rule 392: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 388: { action. consumeClassHead(false); break; case 392: { action. consumeClassHead(false); break;
} }
// //
// Rule 389: class_head ::= class_keyword nested_name_specifier identifier_name <openscope-ast> base_clause_opt // Rule 393: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 389: { action. consumeClassHead(true); break; case 393: { action. consumeClassHead(true); break;
} }
// //
// Rule 390: class_head ::= class_keyword nested_name_specifier template_id_name <openscope-ast> base_clause_opt // Rule 394: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 390: { action. consumeClassHead(true); break; case 394: { action. consumeClassHead(true); break;
} }
// //
// Rule 392: identifier_name_opt ::= $Empty // Rule 398: identifier_name_opt ::= $Empty
// //
case 392: { action. consumeEmpty(); break; case 398: { action. consumeEmpty(); break;
} }
// //
// Rule 396: visibility_label ::= access_specifier_keyword : // Rule 402: visibility_label ::= access_specifier_keyword :
// //
case 396: { action. consumeVisibilityLabel(); break; case 402: { action. consumeVisibilityLabel(); break;
} }
// //
// Rule 397: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ; // Rule 403: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
// //
case 397: { action. consumeDeclarationSimple(true); break; case 403: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 398: member_declaration ::= declaration_specifiers_opt ; // Rule 404: member_declaration ::= declaration_specifiers_opt ;
// //
case 398: { action. consumeDeclarationSimple(false); break; case 404: { action. consumeDeclarationSimple(false); break;
} }
// //
// Rule 401: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; // Rule 407: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
// //
case 401: { action. consumeMemberDeclarationQualifiedId(); break; case 407: { action. consumeMemberDeclarationQualifiedId(); break;
} }
// //
// Rule 407: member_declaration ::= ERROR_TOKEN // Rule 413: member_declaration ::= ERROR_TOKEN
// //
case 407: { action. consumeDeclarationProblem(); break; case 413: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 415: member_declarator ::= declarator constant_initializer // Rule 422: member_declarator ::= declarator constant_initializer
// //
case 415: { action. consumeMemberDeclaratorWithInitializer(); break; case 422: { action. consumeMemberDeclaratorWithInitializer(); break;
} }
// //
// Rule 416: member_declarator ::= bit_field_declarator : constant_expression // Rule 423: member_declarator ::= bit_field_declarator : constant_expression
// //
case 416: { action. consumeBitField(true); break; case 423: { action. consumeBitField(true); break;
} }
// //
// Rule 417: member_declarator ::= : constant_expression // Rule 424: member_declarator ::= : constant_expression
// //
case 417: { action. consumeBitField(false); break; case 424: { action. consumeBitField(false); break;
} }
// //
// Rule 418: bit_field_declarator ::= identifier_name // Rule 425: bit_field_declarator ::= identifier_name
// //
case 418: { action. consumeDirectDeclaratorIdentifier(); break; case 425: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 419: constant_initializer ::= = constant_expression // Rule 426: constant_initializer ::= = constant_expression
// //
case 419: { action. consumeInitializer(); break; case 426: { action. consumeInitializer(); break;
} }
// //
// Rule 425: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name // Rule 432: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
// //
case 425: { action. consumeBaseSpecifier(false, false); break; case 432: { action. consumeBaseSpecifier(false, false); break;
} }
// //
// Rule 426: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name // Rule 433: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
// //
case 426: { action. consumeBaseSpecifier(true, true); break; case 433: { action. consumeBaseSpecifier(true, true); break;
} }
// //
// Rule 427: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name // Rule 434: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
// //
case 427: { action. consumeBaseSpecifier(true, true); break; case 434: { action. consumeBaseSpecifier(true, true); break;
} }
// //
// Rule 428: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name // Rule 435: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
// //
case 428: { action. consumeBaseSpecifier(true, false); break; case 435: { action. consumeBaseSpecifier(true, false); break;
} }
// //
// Rule 429: access_specifier_keyword ::= private // Rule 436: access_specifier_keyword ::= private
// //
case 429: { action. consumeToken(); break; case 436: { action. consumeToken(); break;
} }
// //
// Rule 430: access_specifier_keyword ::= protected // Rule 437: access_specifier_keyword ::= protected
// //
case 430: { action. consumeToken(); break; case 437: { action. consumeToken(); break;
} }
// //
// Rule 431: access_specifier_keyword ::= public // Rule 438: access_specifier_keyword ::= public
// //
case 431: { action. consumeToken(); break; case 438: { action. consumeToken(); break;
} }
// //
// Rule 433: access_specifier_keyword_opt ::= $Empty // Rule 440: access_specifier_keyword_opt ::= $Empty
// //
case 433: { action. consumeEmpty(); break; case 440: { action. consumeEmpty(); break;
} }
// //
// Rule 435: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt > // Rule 442: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
// //
case 435: { action. consumeTemplateId(); break; case 442: { action. consumeTemplateId(); break;
} }
// //
// Rule 436: conversion_function_id ::= operator conversion_type_id // Rule 443: conversion_function_id ::= operator conversion_type_id
// //
case 436: { action. consumeConversionName(); break; case 443: { action. consumeConversionName(); break;
} }
// //
// Rule 437: conversion_type_id ::= type_specifier_seq conversion_declarator // Rule 444: conversion_type_id ::= type_specifier_seq conversion_declarator
// //
case 437: { action. consumeTypeId(true); break; case 444: { action. consumeTypeId(true); break;
} }
// //
// Rule 438: conversion_type_id ::= type_specifier_seq // Rule 445: conversion_type_id ::= type_specifier_seq
// //
case 438: { action. consumeTypeId(false); break; case 445: { action. consumeTypeId(false); break;
} }
// //
// Rule 439: conversion_declarator ::= <openscope-ast> ptr_operator_seq // Rule 446: conversion_declarator ::= <openscope-ast> ptr_operator_seq
// //
case 439: { action. consumeDeclaratorWithPointer(false); break; case 446: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 445: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // Rule 452: mem_initializer ::= mem_initializer_name ( expression_list_opt )
// //
case 445: { action. consumeConstructorChainInitializer(); break; case 452: { action. consumeConstructorChainInitializer(); break;
} }
// //
// Rule 446: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // Rule 453: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
// //
case 446: { action. consumeQualifiedId(false); break; case 453: { action. consumeQualifiedId(false); break;
} }
// //
// Rule 449: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt > // Rule 456: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
// //
case 449: { action. consumeTemplateId(); break; case 456: { action. consumeTemplateId(); break;
} }
// //
// Rule 450: operator_id_name ::= operator overloadable_operator // Rule 457: operator_id_name ::= operator overloadable_operator
// //
case 450: { action. consumeOperatorName(); break; case 457: { action. consumeOperatorName(); break;
} }
// //
// Rule 493: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration // Rule 500: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
// //
case 493: { action. consumeTemplateDeclaration(); break; case 500: { action. consumeTemplateDeclaration(); break;
} }
// //
// Rule 494: export_opt ::= export // Rule 501: export_opt ::= export
// //
case 494: { action. consumePlaceHolder(); break; case 501: { action. consumePlaceHolder(); break;
} }
// //
// Rule 495: export_opt ::= $Empty // Rule 502: export_opt ::= $Empty
// //
case 495: { action. consumeEmpty(); break; case 502: { action. consumeEmpty(); break;
} }
// //
// Rule 499: template_parameter ::= parameter_declaration // Rule 506: template_parameter ::= parameter_declaration
// //
case 499: { action. consumeTemplateParamterDeclaration(); break; case 506: { action. consumeTemplateParamterDeclaration(); break;
} }
// //
// Rule 500: type_parameter ::= class identifier_name_opt // Rule 507: type_parameter ::= class identifier_name_opt
// //
case 500: { action. consumeSimpleTypeTemplateParameter(false); break; case 507: { action. consumeSimpleTypeTemplateParameter(false); break;
} }
// //
// Rule 501: type_parameter ::= class identifier_name_opt = type_id // Rule 508: type_parameter ::= class identifier_name_opt = type_id
// //
case 501: { action. consumeSimpleTypeTemplateParameter(true); break; case 508: { action. consumeSimpleTypeTemplateParameter(true); break;
} }
// //
// Rule 502: type_parameter ::= typename identifier_name_opt // Rule 509: type_parameter ::= typename identifier_name_opt
// //
case 502: { action. consumeSimpleTypeTemplateParameter(false); break; case 509: { action. consumeSimpleTypeTemplateParameter(false); break;
} }
// //
// Rule 503: type_parameter ::= typename identifier_name_opt = type_id // Rule 510: type_parameter ::= typename identifier_name_opt = type_id
// //
case 503: { action. consumeSimpleTypeTemplateParameter(true); break; case 510: { action. consumeSimpleTypeTemplateParameter(true); break;
} }
// //
// Rule 504: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt // Rule 511: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
// //
case 504: { action. consumeTemplatedTypeTemplateParameter(false); break; case 511: { action. consumeTemplatedTypeTemplateParameter(false); break;
} }
// //
// Rule 505: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression // Rule 512: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
// //
case 505: { action. consumeTemplatedTypeTemplateParameter(true); break; case 512: { action. consumeTemplatedTypeTemplateParameter(true); break;
} }
// //
// Rule 506: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt > // Rule 513: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
// //
case 506: { action. consumeTemplateId(); break; case 513: { action. consumeTemplateId(); break;
} }
// //
// Rule 511: template_argument ::= assignment_expression // Rule 518: template_argument ::= assignment_expression
// //
case 511: { action. consumeTemplateArgumentExpression(); break; case 518: { action. consumeTemplateArgumentExpression(); break;
} }
// //
// Rule 512: template_argument ::= type_id // Rule 519: template_argument ::= type_id
// //
case 512: { action. consumeTemplateArgumentTypeId(); break; case 519: { action. consumeTemplateArgumentTypeId(); break;
} }
// //
// Rule 513: explicit_instantiation ::= template declaration // Rule 520: explicit_instantiation ::= template declaration
// //
case 513: { action. consumeTemplateExplicitInstantiation(); break; case 520: { action. consumeTemplateExplicitInstantiation(); break;
} }
// //
// Rule 514: explicit_specialization ::= template < > declaration // Rule 521: explicit_specialization ::= template < > declaration
// //
case 514: { action. consumeTemplateExplicitSpecialization(); break; case 521: { action. consumeTemplateExplicitSpecialization(); break;
} }
// //
// Rule 515: try_block ::= try compound_statement <openscope-ast> handler_seq // Rule 522: try_block ::= try compound_statement <openscope-ast> handler_seq
// //
case 515: { action. consumeStatementTryBlock(); break; case 522: { action. consumeStatementTryBlock(); break;
} }
// //
// Rule 518: handler ::= catch ( exception_declaration ) compound_statement // Rule 525: handler ::= catch ( exception_declaration ) compound_statement
// //
case 518: { action. consumeStatementCatchHandler(false); break; case 525: { action. consumeStatementCatchHandler(false); break;
} }
// //
// Rule 519: handler ::= catch ( ... ) compound_statement // Rule 526: handler ::= catch ( ... ) compound_statement
// //
case 519: { action. consumeStatementCatchHandler(true); break; case 526: { action. consumeStatementCatchHandler(true); break;
} }
// //
// Rule 520: exception_declaration ::= type_specifier_seq <openscope-ast> declarator // Rule 527: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
// //
case 520: { action. consumeDeclarationSimple(true); break; case 527: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 521: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator // Rule 528: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
// //
case 521: { action. consumeDeclarationSimple(true); break; case 528: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 522: exception_declaration ::= type_specifier_seq // Rule 529: exception_declaration ::= type_specifier_seq
// //
case 522: { action. consumeDeclarationSimple(false); break; case 529: { action. consumeDeclarationSimple(false); break;
} }
// //
// Rule 524: exception_specification ::= throw ( ) // Rule 531: exception_specification ::= throw ( )
// //
case 524: { action. consumePlaceHolder(); break; case 531: { action. consumePlaceHolder(); break;
} }

View file

@ -27,7 +27,7 @@ public interface CPPParsersym {
TK_const_cast = 43, TK_const_cast = 43,
TK_continue = 79, TK_continue = 79,
TK_default = 80, TK_default = 80,
TK_delete = 67, TK_delete = 66,
TK_do = 81, TK_do = 81,
TK_double = 13, TK_double = 13,
TK_dynamic_cast = 44, TK_dynamic_cast = 44,
@ -47,7 +47,7 @@ public interface CPPParsersym {
TK_long = 16, TK_long = 16,
TK_mutable = 31, TK_mutable = 31,
TK_namespace = 60, TK_namespace = 60,
TK_new = 68, TK_new = 67,
TK_operator = 7, TK_operator = 7,
TK_private = 103, TK_private = 103,
TK_protected = 104, TK_protected = 104,
@ -134,7 +134,7 @@ public interface CPPParsersym {
TK_RightParen = 74, TK_RightParen = 74,
TK_RightBrace = 72, TK_RightBrace = 72,
TK_SemiColon = 25, TK_SemiColon = 25,
TK_LeftBrace = 66, TK_LeftBrace = 68,
TK_ERROR_TOKEN = 62, TK_ERROR_TOKEN = 62,
TK_0 = 59, TK_0 = 59,
TK_EOF_TOKEN = 121; TK_EOF_TOKEN = 121;
@ -206,9 +206,9 @@ public interface CPPParsersym {
"throw", "throw",
"asm", "asm",
"LeftBracket", "LeftBracket",
"LeftBrace",
"delete", "delete",
"new", "new",
"LeftBrace",
"GT", "GT",
"Assign", "Assign",
"Comma", "Comma",

View file

@ -1246,723 +1246,723 @@ public CPPSizeofExpressionParser(String[] mapFrom) { // constructor
} }
// //
// Rule 279: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt identifier_name // Rule 279: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
// //
case 279: { action. consumeTypeSpecifierElaborated(false); break; case 279: { action. consumeTypeSpecifierElaborated(false); break;
} }
// //
// Rule 280: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt template_opt template_id_name // Rule 280: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
// //
case 280: { action. consumeTypeSpecifierElaborated(true); break; case 280: { action. consumeTypeSpecifierElaborated(true); break;
} }
// //
// Rule 281: elaborated_type_specifier ::= enum dcolon_opt nested_name_specifier_opt identifier_name // Rule 281: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
// //
case 281: { action. consumeTypeSpecifierElaborated(false); break; case 281: { action. consumeTypeSpecifierElaborated(false); break;
} }
// //
// Rule 282: enum_specifier ::= enum { <openscope-ast> enumerator_list_opt } // Rule 283: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt }
// //
case 282: { action. consumeTypeSpecifierEnumeration(false); break; case 283: { action. consumeTypeSpecifierEnumeration(false); break;
} }
// //
// Rule 283: enum_specifier ::= enum identifier_token { <openscope-ast> enumerator_list_opt } // Rule 284: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt }
// //
case 283: { action. consumeTypeSpecifierEnumeration(true); break; case 284: { action. consumeTypeSpecifierEnumeration(true); break;
} }
// //
// Rule 288: enumerator_definition ::= identifier_token // Rule 290: enumerator_definition ::= identifier_token
// //
case 288: { action. consumeEnumerator(false); break; case 290: { action. consumeEnumerator(false); break;
} }
// //
// Rule 289: enumerator_definition ::= identifier_token = constant_expression // Rule 291: enumerator_definition ::= identifier_token = constant_expression
// //
case 289: { action. consumeEnumerator(true); break; case 291: { action. consumeEnumerator(true); break;
} }
// //
// Rule 293: named_namespace_definition ::= namespace namespace_name { <openscope-ast> declaration_seq_opt } // Rule 295: named_namespace_definition ::= namespace namespace_name { <openscope-ast> declaration_seq_opt }
// //
case 293: { action. consumeNamespaceDefinition(true); break; case 295: { action. consumeNamespaceDefinition(true); break;
} }
// //
// Rule 294: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt } // Rule 296: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt }
// //
case 294: { action. consumeNamespaceDefinition(false); break; case 296: { action. consumeNamespaceDefinition(false); break;
} }
// //
// Rule 295: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; // Rule 297: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
// //
case 295: { action. consumeNamespaceAliasDefinition(); break; case 297: { action. consumeNamespaceAliasDefinition(); break;
} }
// //
// Rule 296: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; // Rule 298: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
// //
case 296: { action. consumeUsingDeclaration(); break; case 298: { action. consumeUsingDeclaration(); break;
} }
// //
// Rule 297: typename_opt ::= typename // Rule 299: typename_opt ::= typename
// //
case 297: { action. consumePlaceHolder(); break; case 299: { action. consumePlaceHolder(); break;
} }
// //
// Rule 298: typename_opt ::= $Empty // Rule 300: typename_opt ::= $Empty
// //
case 298: { action. consumeEmpty(); break; case 300: { action. consumeEmpty(); break;
} }
// //
// Rule 299: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; // Rule 301: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
// //
case 299: { action. consumeUsingDirective(); break; case 301: { action. consumeUsingDirective(); break;
} }
// //
// Rule 300: asm_definition ::= asm ( stringlit ) ; // Rule 302: asm_definition ::= asm ( stringlit ) ;
// //
case 300: { action. consumeDeclarationASM(); break; case 302: { action. consumeDeclarationASM(); break;
} }
// //
// Rule 301: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt } // Rule 303: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
// //
case 301: { action. consumeLinkageSpecification(); break; case 303: { action. consumeLinkageSpecification(); break;
} }
// //
// Rule 302: linkage_specification ::= extern stringlit <openscope-ast> declaration // Rule 304: linkage_specification ::= extern stringlit <openscope-ast> declaration
// //
case 302: { action. consumeLinkageSpecification(); break; case 304: { action. consumeLinkageSpecification(); break;
} }
// //
// Rule 307: init_declarator_complete ::= init_declarator // Rule 309: init_declarator_complete ::= init_declarator
// //
case 307: { action. consumeInitDeclaratorComplete(); break; case 309: { action. consumeInitDeclaratorComplete(); break;
} }
// //
// Rule 309: init_declarator ::= declarator initializer // Rule 311: init_declarator ::= complete_declarator initializer
// //
case 309: { action. consumeDeclaratorWithInitializer(true); break; case 311: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 311: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // Rule 314: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
// //
case 311: { action. consumeDeclaratorWithPointer(true); break; case 314: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 313: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // Rule 316: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
// //
case 313: { action. consumeDeclaratorWithPointer(true); break; case 316: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 317: basic_direct_declarator ::= declarator_id_name // Rule 320: basic_direct_declarator ::= declarator_id_name
// //
case 317: { action. consumeDirectDeclaratorIdentifier(); break; case 320: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 318: basic_direct_declarator ::= ( declarator ) // Rule 321: basic_direct_declarator ::= ( declarator )
// //
case 318: { action. consumeDirectDeclaratorBracketed(); break; case 321: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 319: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 322: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 319: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; case 322: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
} }
// //
// Rule 320: array_direct_declarator ::= array_direct_declarator array_modifier // Rule 323: array_direct_declarator ::= array_direct_declarator array_modifier
// //
case 320: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 323: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 321: array_direct_declarator ::= basic_direct_declarator array_modifier // Rule 324: array_direct_declarator ::= basic_direct_declarator array_modifier
// //
case 321: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 324: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 322: array_modifier ::= [ constant_expression ] // Rule 325: array_modifier ::= [ constant_expression ]
// //
case 322: { action. consumeDirectDeclaratorArrayModifier(true); break; case 325: { action. consumeDirectDeclaratorArrayModifier(true); break;
} }
// //
// Rule 323: array_modifier ::= [ ] // Rule 326: array_modifier ::= [ ]
// //
case 323: { action. consumeDirectDeclaratorArrayModifier(false); break; case 326: { action. consumeDirectDeclaratorArrayModifier(false); break;
} }
// //
// Rule 324: ptr_operator ::= * <openscope-ast> cv_qualifier_seq_opt // Rule 327: ptr_operator ::= pointer_hook * <openscope-ast> cv_qualifier_seq_opt
// //
case 324: { action. consumePointer(); break; case 327: { action. consumePointer(); break;
} }
// //
// Rule 325: ptr_operator ::= & // Rule 328: ptr_operator ::= pointer_hook &
// //
case 325: { action. consumeReferenceOperator(); break; case 328: { action. consumeReferenceOperator(); break;
} }
// //
// Rule 326: ptr_operator ::= dcolon_opt nested_name_specifier * <openscope-ast> cv_qualifier_seq_opt // Rule 329: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * <openscope-ast> cv_qualifier_seq_opt
// //
case 326: { action. consumePointerToMember(); break; case 329: { action. consumePointerToMember(); break;
} }
// //
// Rule 332: cv_qualifier ::= const // Rule 336: cv_qualifier ::= const
// //
case 332: { action. consumeDeclSpecToken(); break; case 336: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 333: cv_qualifier ::= volatile // Rule 337: cv_qualifier ::= volatile
// //
case 333: { action. consumeDeclSpecToken(); break; case 337: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 335: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name // Rule 339: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
// //
case 335: { action. consumeQualifiedId(false); break; case 339: { action. consumeQualifiedId(false); break;
} }
// //
// Rule 336: type_id ::= type_specifier_seq // Rule 340: type_id ::= type_specifier_seq
// //
case 336: { action. consumeTypeId(false); break; case 340: { action. consumeTypeId(false); break;
} }
// //
// Rule 337: type_id ::= type_specifier_seq abstract_declarator // Rule 341: type_id ::= type_specifier_seq abstract_declarator
// //
case 337: { action. consumeTypeId(true); break; case 341: { action. consumeTypeId(true); break;
} }
// //
// Rule 340: abstract_declarator ::= <openscope-ast> ptr_operator_seq // Rule 344: abstract_declarator ::= <openscope-ast> ptr_operator_seq
// //
case 340: { action. consumeDeclaratorWithPointer(false); break; case 344: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 341: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator // Rule 345: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
// //
case 341: { action. consumeDeclaratorWithPointer(true); break; case 345: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 345: basic_direct_abstract_declarator ::= ( abstract_declarator ) // Rule 349: basic_direct_abstract_declarator ::= ( abstract_declarator )
// //
case 345: { action. consumeDirectDeclaratorBracketed(); break; case 349: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 346: basic_direct_abstract_declarator ::= ( ) // Rule 350: basic_direct_abstract_declarator ::= ( )
// //
case 346: { action. consumeAbstractDeclaratorEmpty(); break; case 350: { action. consumeAbstractDeclaratorEmpty(); break;
} }
// //
// Rule 347: array_direct_abstract_declarator ::= array_modifier // Rule 351: array_direct_abstract_declarator ::= array_modifier
// //
case 347: { action. consumeDirectDeclaratorArrayDeclarator(false); break; case 351: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
} }
// //
// Rule 348: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // Rule 352: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
// //
case 348: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 352: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 349: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // Rule 353: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
// //
case 349: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 353: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 350: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 354: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 350: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; case 354: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
} }
// //
// Rule 351: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 355: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 351: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; case 355: { action. consumeDirectDeclaratorFunctionDeclarator(false); break;
} }
// //
// Rule 352: parameter_declaration_clause ::= parameter_declaration_list_opt ... // Rule 356: parameter_declaration_clause ::= parameter_declaration_list_opt ...
// //
case 352: { action. consumePlaceHolder(); break; case 356: { action. consumePlaceHolder(); break;
} }
// //
// Rule 353: parameter_declaration_clause ::= parameter_declaration_list_opt // Rule 357: parameter_declaration_clause ::= parameter_declaration_list_opt
// //
case 353: { action. consumeEmpty(); break; case 357: { action. consumeEmpty(); break;
} }
// //
// Rule 354: parameter_declaration_clause ::= parameter_declaration_list , ... // Rule 358: parameter_declaration_clause ::= parameter_declaration_list , ...
// //
case 354: { action. consumePlaceHolder(); break; case 358: { action. consumePlaceHolder(); break;
} }
// //
// Rule 360: abstract_declarator_opt ::= $Empty // Rule 364: abstract_declarator_opt ::= $Empty
// //
case 360: { action. consumeEmpty(); break; case 364: { action. consumeEmpty(); break;
} }
// //
// Rule 361: parameter_declaration ::= declaration_specifiers parameter_init_declarator // Rule 365: parameter_declaration ::= declaration_specifiers parameter_init_declarator
// //
case 361: { action. consumeParameterDeclaration(); break; case 365: { action. consumeParameterDeclaration(); break;
} }
// //
// Rule 362: parameter_declaration ::= declaration_specifiers // Rule 366: parameter_declaration ::= declaration_specifiers
// //
case 362: { action. consumeParameterDeclarationWithoutDeclarator(); break; case 366: { action. consumeParameterDeclarationWithoutDeclarator(); break;
} }
// //
// Rule 364: parameter_init_declarator ::= declarator = parameter_initializer // Rule 368: parameter_init_declarator ::= declarator = parameter_initializer
// //
case 364: { action. consumeDeclaratorWithInitializer(true); break; case 368: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 366: parameter_init_declarator ::= abstract_declarator = parameter_initializer // Rule 370: parameter_init_declarator ::= abstract_declarator = parameter_initializer
// //
case 366: { action. consumeDeclaratorWithInitializer(true); break; case 370: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 367: parameter_init_declarator ::= = parameter_initializer // Rule 371: parameter_init_declarator ::= = parameter_initializer
// //
case 367: { action. consumeDeclaratorWithInitializer(false); break; case 371: { action. consumeDeclaratorWithInitializer(false); break;
} }
// //
// Rule 368: parameter_initializer ::= assignment_expression // Rule 372: parameter_initializer ::= assignment_expression
// //
case 368: { action. consumeInitializer(); break; case 372: { action. consumeInitializer(); break;
} }
// //
// Rule 369: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body // Rule 373: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
// //
case 369: { action. consumeFunctionDefinition(false); break; case 373: { action. consumeFunctionDefinition(false); break;
} }
// //
// Rule 370: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq // Rule 374: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
// //
case 370: { action. consumeFunctionDefinition(true); break; case 374: { action. consumeFunctionDefinition(true); break;
} }
// //
// Rule 373: initializer ::= ( expression_list ) // Rule 377: initializer ::= ( expression_list )
// //
case 373: { action. consumeInitializerConstructor(); break; case 377: { action. consumeInitializerConstructor(); break;
} }
// //
// Rule 374: initializer_clause ::= assignment_expression // Rule 378: initializer_clause ::= assignment_expression
// //
case 374: { action. consumeInitializer(); break; case 378: { action. consumeInitializer(); break;
} }
// //
// Rule 375: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list , } end_initializer_list // Rule 379: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list , } end_initializer_list
// //
case 375: { action. consumeInitializerList(); break; case 379: { action. consumeInitializerList(); break;
} }
// //
// Rule 376: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list } end_initializer_list // Rule 380: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list } end_initializer_list
// //
case 376: { action. consumeInitializerList(); break; case 380: { action. consumeInitializerList(); break;
} }
// //
// Rule 377: initializer_clause ::= { <openscope-ast> } // Rule 381: initializer_clause ::= { <openscope-ast> }
// //
case 377: { action. consumeInitializerList(); break; case 381: { action. consumeInitializerList(); break;
} }
// //
// Rule 378: start_initializer_list ::= $Empty // Rule 382: start_initializer_list ::= $Empty
// //
case 378: { action. initializerListStart(); break; case 382: { action. initializerListStart(); break;
} }
// //
// Rule 379: end_initializer_list ::= $Empty // Rule 383: end_initializer_list ::= $Empty
// //
case 379: { action. initializerListEnd(); break; case 383: { action. initializerListEnd(); break;
} }
// //
// Rule 384: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt } // Rule 388: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
// //
case 384: { action. consumeClassSpecifier(); break; case 388: { action. consumeClassSpecifier(); break;
} }
// //
// Rule 385: class_head ::= class_keyword identifier_name_opt <openscope-ast> base_clause_opt // Rule 389: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 385: { action. consumeClassHead(false); break; case 389: { action. consumeClassHead(false); break;
} }
// //
// Rule 386: class_head ::= class_keyword template_id_name <openscope-ast> base_clause_opt // Rule 390: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 386: { action. consumeClassHead(false); break; case 390: { action. consumeClassHead(false); break;
} }
// //
// Rule 387: class_head ::= class_keyword nested_name_specifier identifier_name <openscope-ast> base_clause_opt // Rule 391: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 387: { action. consumeClassHead(true); break; case 391: { action. consumeClassHead(true); break;
} }
// //
// Rule 388: class_head ::= class_keyword nested_name_specifier template_id_name <openscope-ast> base_clause_opt // Rule 392: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 388: { action. consumeClassHead(true); break; case 392: { action. consumeClassHead(true); break;
} }
// //
// Rule 390: identifier_name_opt ::= $Empty // Rule 396: identifier_name_opt ::= $Empty
// //
case 390: { action. consumeEmpty(); break; case 396: { action. consumeEmpty(); break;
} }
// //
// Rule 394: visibility_label ::= access_specifier_keyword : // Rule 400: visibility_label ::= access_specifier_keyword :
// //
case 394: { action. consumeVisibilityLabel(); break; case 400: { action. consumeVisibilityLabel(); break;
} }
// //
// Rule 395: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ; // Rule 401: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
// //
case 395: { action. consumeDeclarationSimple(true); break; case 401: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 396: member_declaration ::= declaration_specifiers_opt ; // Rule 402: member_declaration ::= declaration_specifiers_opt ;
// //
case 396: { action. consumeDeclarationSimple(false); break; case 402: { action. consumeDeclarationSimple(false); break;
} }
// //
// Rule 399: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; // Rule 405: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
// //
case 399: { action. consumeMemberDeclarationQualifiedId(); break; case 405: { action. consumeMemberDeclarationQualifiedId(); break;
} }
// //
// Rule 405: member_declaration ::= ERROR_TOKEN // Rule 411: member_declaration ::= ERROR_TOKEN
// //
case 405: { action. consumeDeclarationProblem(); break; case 411: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 413: member_declarator ::= declarator constant_initializer // Rule 420: member_declarator ::= declarator constant_initializer
// //
case 413: { action. consumeMemberDeclaratorWithInitializer(); break; case 420: { action. consumeMemberDeclaratorWithInitializer(); break;
} }
// //
// Rule 414: member_declarator ::= bit_field_declarator : constant_expression // Rule 421: member_declarator ::= bit_field_declarator : constant_expression
// //
case 414: { action. consumeBitField(true); break; case 421: { action. consumeBitField(true); break;
} }
// //
// Rule 415: member_declarator ::= : constant_expression // Rule 422: member_declarator ::= : constant_expression
// //
case 415: { action. consumeBitField(false); break; case 422: { action. consumeBitField(false); break;
} }
// //
// Rule 416: bit_field_declarator ::= identifier_name // Rule 423: bit_field_declarator ::= identifier_name
// //
case 416: { action. consumeDirectDeclaratorIdentifier(); break; case 423: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 417: constant_initializer ::= = constant_expression // Rule 424: constant_initializer ::= = constant_expression
// //
case 417: { action. consumeInitializer(); break; case 424: { action. consumeInitializer(); break;
} }
// //
// Rule 423: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name // Rule 430: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
// //
case 423: { action. consumeBaseSpecifier(false, false); break; case 430: { action. consumeBaseSpecifier(false, false); break;
} }
// //
// Rule 424: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name // Rule 431: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
// //
case 424: { action. consumeBaseSpecifier(true, true); break; case 431: { action. consumeBaseSpecifier(true, true); break;
} }
// //
// Rule 425: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name // Rule 432: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
// //
case 425: { action. consumeBaseSpecifier(true, true); break; case 432: { action. consumeBaseSpecifier(true, true); break;
} }
// //
// Rule 426: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name // Rule 433: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
// //
case 426: { action. consumeBaseSpecifier(true, false); break; case 433: { action. consumeBaseSpecifier(true, false); break;
} }
// //
// Rule 427: access_specifier_keyword ::= private // Rule 434: access_specifier_keyword ::= private
// //
case 427: { action. consumeToken(); break; case 434: { action. consumeToken(); break;
} }
// //
// Rule 428: access_specifier_keyword ::= protected // Rule 435: access_specifier_keyword ::= protected
// //
case 428: { action. consumeToken(); break; case 435: { action. consumeToken(); break;
} }
// //
// Rule 429: access_specifier_keyword ::= public // Rule 436: access_specifier_keyword ::= public
// //
case 429: { action. consumeToken(); break; case 436: { action. consumeToken(); break;
} }
// //
// Rule 431: access_specifier_keyword_opt ::= $Empty // Rule 438: access_specifier_keyword_opt ::= $Empty
// //
case 431: { action. consumeEmpty(); break; case 438: { action. consumeEmpty(); break;
} }
// //
// Rule 433: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt > // Rule 440: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
// //
case 433: { action. consumeTemplateId(); break; case 440: { action. consumeTemplateId(); break;
} }
// //
// Rule 434: conversion_function_id ::= operator conversion_type_id // Rule 441: conversion_function_id ::= operator conversion_type_id
// //
case 434: { action. consumeConversionName(); break; case 441: { action. consumeConversionName(); break;
} }
// //
// Rule 435: conversion_type_id ::= type_specifier_seq conversion_declarator // Rule 442: conversion_type_id ::= type_specifier_seq conversion_declarator
// //
case 435: { action. consumeTypeId(true); break; case 442: { action. consumeTypeId(true); break;
} }
// //
// Rule 436: conversion_type_id ::= type_specifier_seq // Rule 443: conversion_type_id ::= type_specifier_seq
// //
case 436: { action. consumeTypeId(false); break; case 443: { action. consumeTypeId(false); break;
} }
// //
// Rule 437: conversion_declarator ::= <openscope-ast> ptr_operator_seq // Rule 444: conversion_declarator ::= <openscope-ast> ptr_operator_seq
// //
case 437: { action. consumeDeclaratorWithPointer(false); break; case 444: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 443: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // Rule 450: mem_initializer ::= mem_initializer_name ( expression_list_opt )
// //
case 443: { action. consumeConstructorChainInitializer(); break; case 450: { action. consumeConstructorChainInitializer(); break;
} }
// //
// Rule 444: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // Rule 451: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
// //
case 444: { action. consumeQualifiedId(false); break; case 451: { action. consumeQualifiedId(false); break;
} }
// //
// Rule 447: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt > // Rule 454: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
// //
case 447: { action. consumeTemplateId(); break; case 454: { action. consumeTemplateId(); break;
} }
// //
// Rule 448: operator_id_name ::= operator overloadable_operator // Rule 455: operator_id_name ::= operator overloadable_operator
// //
case 448: { action. consumeOperatorName(); break; case 455: { action. consumeOperatorName(); break;
} }
// //
// Rule 491: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration // Rule 498: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
// //
case 491: { action. consumeTemplateDeclaration(); break; case 498: { action. consumeTemplateDeclaration(); break;
} }
// //
// Rule 492: export_opt ::= export // Rule 499: export_opt ::= export
// //
case 492: { action. consumePlaceHolder(); break; case 499: { action. consumePlaceHolder(); break;
} }
// //
// Rule 493: export_opt ::= $Empty // Rule 500: export_opt ::= $Empty
// //
case 493: { action. consumeEmpty(); break; case 500: { action. consumeEmpty(); break;
} }
// //
// Rule 497: template_parameter ::= parameter_declaration // Rule 504: template_parameter ::= parameter_declaration
// //
case 497: { action. consumeTemplateParamterDeclaration(); break; case 504: { action. consumeTemplateParamterDeclaration(); break;
} }
// //
// Rule 498: type_parameter ::= class identifier_name_opt // Rule 505: type_parameter ::= class identifier_name_opt
// //
case 498: { action. consumeSimpleTypeTemplateParameter(false); break; case 505: { action. consumeSimpleTypeTemplateParameter(false); break;
} }
// //
// Rule 499: type_parameter ::= class identifier_name_opt = type_id // Rule 506: type_parameter ::= class identifier_name_opt = type_id
// //
case 499: { action. consumeSimpleTypeTemplateParameter(true); break; case 506: { action. consumeSimpleTypeTemplateParameter(true); break;
} }
// //
// Rule 500: type_parameter ::= typename identifier_name_opt // Rule 507: type_parameter ::= typename identifier_name_opt
// //
case 500: { action. consumeSimpleTypeTemplateParameter(false); break; case 507: { action. consumeSimpleTypeTemplateParameter(false); break;
} }
// //
// Rule 501: type_parameter ::= typename identifier_name_opt = type_id // Rule 508: type_parameter ::= typename identifier_name_opt = type_id
// //
case 501: { action. consumeSimpleTypeTemplateParameter(true); break; case 508: { action. consumeSimpleTypeTemplateParameter(true); break;
} }
// //
// Rule 502: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt // Rule 509: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
// //
case 502: { action. consumeTemplatedTypeTemplateParameter(false); break; case 509: { action. consumeTemplatedTypeTemplateParameter(false); break;
} }
// //
// Rule 503: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression // Rule 510: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
// //
case 503: { action. consumeTemplatedTypeTemplateParameter(true); break; case 510: { action. consumeTemplatedTypeTemplateParameter(true); break;
} }
// //
// Rule 504: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt > // Rule 511: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
// //
case 504: { action. consumeTemplateId(); break; case 511: { action. consumeTemplateId(); break;
} }
// //
// Rule 509: template_argument ::= assignment_expression // Rule 516: template_argument ::= assignment_expression
// //
case 509: { action. consumeTemplateArgumentExpression(); break; case 516: { action. consumeTemplateArgumentExpression(); break;
} }
// //
// Rule 510: template_argument ::= type_id // Rule 517: template_argument ::= type_id
// //
case 510: { action. consumeTemplateArgumentTypeId(); break; case 517: { action. consumeTemplateArgumentTypeId(); break;
} }
// //
// Rule 511: explicit_instantiation ::= template declaration // Rule 518: explicit_instantiation ::= template declaration
// //
case 511: { action. consumeTemplateExplicitInstantiation(); break; case 518: { action. consumeTemplateExplicitInstantiation(); break;
} }
// //
// Rule 512: explicit_specialization ::= template < > declaration // Rule 519: explicit_specialization ::= template < > declaration
// //
case 512: { action. consumeTemplateExplicitSpecialization(); break; case 519: { action. consumeTemplateExplicitSpecialization(); break;
} }
// //
// Rule 513: try_block ::= try compound_statement <openscope-ast> handler_seq // Rule 520: try_block ::= try compound_statement <openscope-ast> handler_seq
// //
case 513: { action. consumeStatementTryBlock(); break; case 520: { action. consumeStatementTryBlock(); break;
} }
// //
// Rule 516: handler ::= catch ( exception_declaration ) compound_statement // Rule 523: handler ::= catch ( exception_declaration ) compound_statement
// //
case 516: { action. consumeStatementCatchHandler(false); break; case 523: { action. consumeStatementCatchHandler(false); break;
} }
// //
// Rule 517: handler ::= catch ( ... ) compound_statement // Rule 524: handler ::= catch ( ... ) compound_statement
// //
case 517: { action. consumeStatementCatchHandler(true); break; case 524: { action. consumeStatementCatchHandler(true); break;
} }
// //
// Rule 518: exception_declaration ::= type_specifier_seq <openscope-ast> declarator // Rule 525: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
// //
case 518: { action. consumeDeclarationSimple(true); break; case 525: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 519: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator // Rule 526: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
// //
case 519: { action. consumeDeclarationSimple(true); break; case 526: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 520: exception_declaration ::= type_specifier_seq // Rule 527: exception_declaration ::= type_specifier_seq
// //
case 520: { action. consumeDeclarationSimple(false); break; case 527: { action. consumeDeclarationSimple(false); break;
} }
// //
// Rule 522: exception_specification ::= throw ( ) // Rule 529: exception_specification ::= throw ( )
// //
case 522: { action. consumePlaceHolder(); break; case 529: { action. consumePlaceHolder(); break;
} }
// //
// Rule 528: no_sizeof_type_name_start ::= ERROR_TOKEN // Rule 535: no_sizeof_type_name_start ::= ERROR_TOKEN
// //
case 528: { action. consumeExpressionProblem(); break; case 535: { action. consumeExpressionProblem(); break;
} }

View file

@ -62,13 +62,13 @@ public interface CPPSizeofExpressionParsersym {
TK_static_cast = 47, TK_static_cast = 47,
TK_struct = 58, TK_struct = 58,
TK_switch = 86, TK_switch = 86,
TK_template = 55, TK_template = 48,
TK_this = 48, TK_this = 49,
TK_throw = 61, TK_throw = 61,
TK_try = 75, TK_try = 75,
TK_true = 49, TK_true = 50,
TK_typedef = 36, TK_typedef = 36,
TK_typeid = 50, TK_typeid = 51,
TK_typename = 10, TK_typename = 10,
TK_union = 59, TK_union = 59,
TK_unsigned = 19, TK_unsigned = 19,
@ -78,9 +78,9 @@ public interface CPPSizeofExpressionParsersym {
TK_volatile = 24, TK_volatile = 24,
TK_wchar_t = 21, TK_wchar_t = 21,
TK_while = 76, TK_while = 76,
TK_integer = 51, TK_integer = 52,
TK_floating = 52, TK_floating = 53,
TK_charconst = 53, TK_charconst = 54,
TK_stringlit = 39, TK_stringlit = 39,
TK_identifier = 1, TK_identifier = 1,
TK_Completion = 2, TK_Completion = 2,
@ -136,7 +136,7 @@ public interface CPPSizeofExpressionParsersym {
TK_SemiColon = 27, TK_SemiColon = 27,
TK_LeftBrace = 68, TK_LeftBrace = 68,
TK_ERROR_TOKEN = 62, TK_ERROR_TOKEN = 62,
TK_0 = 54, TK_0 = 55,
TK_EOF_TOKEN = 121; TK_EOF_TOKEN = 121;
public final static String orderedTerminalSymbols[] = { public final static String orderedTerminalSymbols[] = {
@ -188,6 +188,7 @@ public interface CPPSizeofExpressionParsersym {
"reinterpret_cast", "reinterpret_cast",
"sizeof", "sizeof",
"static_cast", "static_cast",
"template",
"this", "this",
"true", "true",
"typeid", "typeid",
@ -195,7 +196,6 @@ public interface CPPSizeofExpressionParsersym {
"floating", "floating",
"charconst", "charconst",
"0", "0",
"template",
"LT", "LT",
"enum", "enum",
"struct", "struct",

View file

@ -1258,723 +1258,723 @@ public CPPTemplateTypeParameterParser(String[] mapFrom) { // constructor
} }
// //
// Rule 281: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt identifier_name // Rule 281: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
// //
case 281: { action. consumeTypeSpecifierElaborated(false); break; case 281: { action. consumeTypeSpecifierElaborated(false); break;
} }
// //
// Rule 282: elaborated_type_specifier ::= class_keyword dcolon_opt nested_name_specifier_opt template_opt template_id_name // Rule 282: elaborated_type_specifier ::= class_keyword elaborated_specifier_hook dcolon_opt nested_name_specifier_opt template_opt template_id_name
// //
case 282: { action. consumeTypeSpecifierElaborated(true); break; case 282: { action. consumeTypeSpecifierElaborated(true); break;
} }
// //
// Rule 283: elaborated_type_specifier ::= enum dcolon_opt nested_name_specifier_opt identifier_name // Rule 283: elaborated_type_specifier ::= enum elaborated_specifier_hook dcolon_opt nested_name_specifier_opt identifier_name
// //
case 283: { action. consumeTypeSpecifierElaborated(false); break; case 283: { action. consumeTypeSpecifierElaborated(false); break;
} }
// //
// Rule 284: enum_specifier ::= enum { <openscope-ast> enumerator_list_opt } // Rule 285: enum_specifier ::= enum enum_specifier_hook { <openscope-ast> enumerator_list_opt }
// //
case 284: { action. consumeTypeSpecifierEnumeration(false); break; case 285: { action. consumeTypeSpecifierEnumeration(false); break;
} }
// //
// Rule 285: enum_specifier ::= enum identifier_token { <openscope-ast> enumerator_list_opt } // Rule 286: enum_specifier ::= enum enum_specifier_hook identifier_token { <openscope-ast> enumerator_list_opt }
// //
case 285: { action. consumeTypeSpecifierEnumeration(true); break; case 286: { action. consumeTypeSpecifierEnumeration(true); break;
} }
// //
// Rule 290: enumerator_definition ::= identifier_token // Rule 292: enumerator_definition ::= identifier_token
// //
case 290: { action. consumeEnumerator(false); break; case 292: { action. consumeEnumerator(false); break;
} }
// //
// Rule 291: enumerator_definition ::= identifier_token = constant_expression // Rule 293: enumerator_definition ::= identifier_token = constant_expression
// //
case 291: { action. consumeEnumerator(true); break; case 293: { action. consumeEnumerator(true); break;
} }
// //
// Rule 295: named_namespace_definition ::= namespace namespace_name { <openscope-ast> declaration_seq_opt } // Rule 297: named_namespace_definition ::= namespace namespace_name { <openscope-ast> declaration_seq_opt }
// //
case 295: { action. consumeNamespaceDefinition(true); break; case 297: { action. consumeNamespaceDefinition(true); break;
} }
// //
// Rule 296: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt } // Rule 298: unnamed_namespace_definition ::= namespace { <openscope-ast> declaration_seq_opt }
// //
case 296: { action. consumeNamespaceDefinition(false); break; case 298: { action. consumeNamespaceDefinition(false); break;
} }
// //
// Rule 297: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ; // Rule 299: namespace_alias_definition ::= namespace identifier_token = dcolon_opt nested_name_specifier_opt namespace_name ;
// //
case 297: { action. consumeNamespaceAliasDefinition(); break; case 299: { action. consumeNamespaceAliasDefinition(); break;
} }
// //
// Rule 298: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ; // Rule 300: using_declaration ::= using typename_opt dcolon_opt nested_name_specifier_opt unqualified_id_name ;
// //
case 298: { action. consumeUsingDeclaration(); break; case 300: { action. consumeUsingDeclaration(); break;
} }
// //
// Rule 299: typename_opt ::= typename // Rule 301: typename_opt ::= typename
// //
case 299: { action. consumePlaceHolder(); break; case 301: { action. consumePlaceHolder(); break;
} }
// //
// Rule 300: typename_opt ::= $Empty // Rule 302: typename_opt ::= $Empty
// //
case 300: { action. consumeEmpty(); break; case 302: { action. consumeEmpty(); break;
} }
// //
// Rule 301: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ; // Rule 303: using_directive ::= using namespace dcolon_opt nested_name_specifier_opt namespace_name ;
// //
case 301: { action. consumeUsingDirective(); break; case 303: { action. consumeUsingDirective(); break;
} }
// //
// Rule 302: asm_definition ::= asm ( stringlit ) ; // Rule 304: asm_definition ::= asm ( stringlit ) ;
// //
case 302: { action. consumeDeclarationASM(); break; case 304: { action. consumeDeclarationASM(); break;
} }
// //
// Rule 303: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt } // Rule 305: linkage_specification ::= extern stringlit { <openscope-ast> declaration_seq_opt }
// //
case 303: { action. consumeLinkageSpecification(); break; case 305: { action. consumeLinkageSpecification(); break;
} }
// //
// Rule 304: linkage_specification ::= extern stringlit <openscope-ast> declaration // Rule 306: linkage_specification ::= extern stringlit <openscope-ast> declaration
// //
case 304: { action. consumeLinkageSpecification(); break; case 306: { action. consumeLinkageSpecification(); break;
} }
// //
// Rule 309: init_declarator_complete ::= init_declarator // Rule 311: init_declarator_complete ::= init_declarator
// //
case 309: { action. consumeInitDeclaratorComplete(); break; case 311: { action. consumeInitDeclaratorComplete(); break;
} }
// //
// Rule 311: init_declarator ::= declarator initializer // Rule 313: init_declarator ::= complete_declarator initializer
// //
case 311: { action. consumeDeclaratorWithInitializer(true); break; case 313: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 313: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // Rule 316: declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
// //
case 313: { action. consumeDeclaratorWithPointer(true); break; case 316: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 315: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator // Rule 318: function_declarator ::= <openscope-ast> ptr_operator_seq direct_declarator
// //
case 315: { action. consumeDeclaratorWithPointer(true); break; case 318: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 319: basic_direct_declarator ::= declarator_id_name // Rule 322: basic_direct_declarator ::= declarator_id_name
// //
case 319: { action. consumeDirectDeclaratorIdentifier(); break; case 322: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 320: basic_direct_declarator ::= ( declarator ) // Rule 323: basic_direct_declarator ::= ( declarator )
// //
case 320: { action. consumeDirectDeclaratorBracketed(); break; case 323: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 321: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 324: function_direct_declarator ::= basic_direct_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 321: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; case 324: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
} }
// //
// Rule 322: array_direct_declarator ::= array_direct_declarator array_modifier // Rule 325: array_direct_declarator ::= array_direct_declarator array_modifier
// //
case 322: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 325: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 323: array_direct_declarator ::= basic_direct_declarator array_modifier // Rule 326: array_direct_declarator ::= basic_direct_declarator array_modifier
// //
case 323: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 326: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 324: array_modifier ::= [ constant_expression ] // Rule 327: array_modifier ::= [ constant_expression ]
// //
case 324: { action. consumeDirectDeclaratorArrayModifier(true); break; case 327: { action. consumeDirectDeclaratorArrayModifier(true); break;
} }
// //
// Rule 325: array_modifier ::= [ ] // Rule 328: array_modifier ::= [ ]
// //
case 325: { action. consumeDirectDeclaratorArrayModifier(false); break; case 328: { action. consumeDirectDeclaratorArrayModifier(false); break;
} }
// //
// Rule 326: ptr_operator ::= * <openscope-ast> cv_qualifier_seq_opt // Rule 329: ptr_operator ::= pointer_hook * <openscope-ast> cv_qualifier_seq_opt
// //
case 326: { action. consumePointer(); break; case 329: { action. consumePointer(); break;
} }
// //
// Rule 327: ptr_operator ::= & // Rule 330: ptr_operator ::= pointer_hook &
// //
case 327: { action. consumeReferenceOperator(); break; case 330: { action. consumeReferenceOperator(); break;
} }
// //
// Rule 328: ptr_operator ::= dcolon_opt nested_name_specifier * <openscope-ast> cv_qualifier_seq_opt // Rule 331: ptr_operator ::= dcolon_opt nested_name_specifier pointer_hook * <openscope-ast> cv_qualifier_seq_opt
// //
case 328: { action. consumePointerToMember(); break; case 331: { action. consumePointerToMember(); break;
} }
// //
// Rule 334: cv_qualifier ::= const // Rule 338: cv_qualifier ::= const
// //
case 334: { action. consumeDeclSpecToken(); break; case 338: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 335: cv_qualifier ::= volatile // Rule 339: cv_qualifier ::= volatile
// //
case 335: { action. consumeDeclSpecToken(); break; case 339: { action. consumeDeclSpecToken(); break;
} }
// //
// Rule 337: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name // Rule 341: declarator_id_name ::= dcolon_opt nested_name_specifier_opt type_name
// //
case 337: { action. consumeQualifiedId(false); break; case 341: { action. consumeQualifiedId(false); break;
} }
// //
// Rule 338: type_id ::= type_specifier_seq // Rule 342: type_id ::= type_specifier_seq
// //
case 338: { action. consumeTypeId(false); break; case 342: { action. consumeTypeId(false); break;
} }
// //
// Rule 339: type_id ::= type_specifier_seq abstract_declarator // Rule 343: type_id ::= type_specifier_seq abstract_declarator
// //
case 339: { action. consumeTypeId(true); break; case 343: { action. consumeTypeId(true); break;
} }
// //
// Rule 342: abstract_declarator ::= <openscope-ast> ptr_operator_seq // Rule 346: abstract_declarator ::= <openscope-ast> ptr_operator_seq
// //
case 342: { action. consumeDeclaratorWithPointer(false); break; case 346: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 343: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator // Rule 347: abstract_declarator ::= <openscope-ast> ptr_operator_seq direct_abstract_declarator
// //
case 343: { action. consumeDeclaratorWithPointer(true); break; case 347: { action. consumeDeclaratorWithPointer(true); break;
} }
// //
// Rule 347: basic_direct_abstract_declarator ::= ( abstract_declarator ) // Rule 351: basic_direct_abstract_declarator ::= ( abstract_declarator )
// //
case 347: { action. consumeDirectDeclaratorBracketed(); break; case 351: { action. consumeDirectDeclaratorBracketed(); break;
} }
// //
// Rule 348: basic_direct_abstract_declarator ::= ( ) // Rule 352: basic_direct_abstract_declarator ::= ( )
// //
case 348: { action. consumeAbstractDeclaratorEmpty(); break; case 352: { action. consumeAbstractDeclaratorEmpty(); break;
} }
// //
// Rule 349: array_direct_abstract_declarator ::= array_modifier // Rule 353: array_direct_abstract_declarator ::= array_modifier
// //
case 349: { action. consumeDirectDeclaratorArrayDeclarator(false); break; case 353: { action. consumeDirectDeclaratorArrayDeclarator(false); break;
} }
// //
// Rule 350: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier // Rule 354: array_direct_abstract_declarator ::= array_direct_abstract_declarator array_modifier
// //
case 350: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 354: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 351: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier // Rule 355: array_direct_abstract_declarator ::= basic_direct_abstract_declarator array_modifier
// //
case 351: { action. consumeDirectDeclaratorArrayDeclarator(true); break; case 355: { action. consumeDirectDeclaratorArrayDeclarator(true); break;
} }
// //
// Rule 352: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 356: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 352: { action. consumeDirectDeclaratorFunctionDeclarator(true); break; case 356: { action. consumeDirectDeclaratorFunctionDeclarator(true); break;
} }
// //
// Rule 353: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt // Rule 357: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_declaration_clause ) <openscope-ast> cv_qualifier_seq_opt <openscope-ast> exception_specification_opt
// //
case 353: { action. consumeDirectDeclaratorFunctionDeclarator(false); break; case 357: { action. consumeDirectDeclaratorFunctionDeclarator(false); break;
} }
// //
// Rule 354: parameter_declaration_clause ::= parameter_declaration_list_opt ... // Rule 358: parameter_declaration_clause ::= parameter_declaration_list_opt ...
// //
case 354: { action. consumePlaceHolder(); break; case 358: { action. consumePlaceHolder(); break;
} }
// //
// Rule 355: parameter_declaration_clause ::= parameter_declaration_list_opt // Rule 359: parameter_declaration_clause ::= parameter_declaration_list_opt
// //
case 355: { action. consumeEmpty(); break; case 359: { action. consumeEmpty(); break;
} }
// //
// Rule 356: parameter_declaration_clause ::= parameter_declaration_list , ... // Rule 360: parameter_declaration_clause ::= parameter_declaration_list , ...
// //
case 356: { action. consumePlaceHolder(); break; case 360: { action. consumePlaceHolder(); break;
} }
// //
// Rule 362: abstract_declarator_opt ::= $Empty // Rule 366: abstract_declarator_opt ::= $Empty
// //
case 362: { action. consumeEmpty(); break; case 366: { action. consumeEmpty(); break;
} }
// //
// Rule 363: parameter_declaration ::= declaration_specifiers parameter_init_declarator // Rule 367: parameter_declaration ::= declaration_specifiers parameter_init_declarator
// //
case 363: { action. consumeParameterDeclaration(); break; case 367: { action. consumeParameterDeclaration(); break;
} }
// //
// Rule 364: parameter_declaration ::= declaration_specifiers // Rule 368: parameter_declaration ::= declaration_specifiers
// //
case 364: { action. consumeParameterDeclarationWithoutDeclarator(); break; case 368: { action. consumeParameterDeclarationWithoutDeclarator(); break;
} }
// //
// Rule 366: parameter_init_declarator ::= declarator = parameter_initializer // Rule 370: parameter_init_declarator ::= declarator = parameter_initializer
// //
case 366: { action. consumeDeclaratorWithInitializer(true); break; case 370: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 368: parameter_init_declarator ::= abstract_declarator = parameter_initializer // Rule 372: parameter_init_declarator ::= abstract_declarator = parameter_initializer
// //
case 368: { action. consumeDeclaratorWithInitializer(true); break; case 372: { action. consumeDeclaratorWithInitializer(true); break;
} }
// //
// Rule 369: parameter_init_declarator ::= = parameter_initializer // Rule 373: parameter_init_declarator ::= = parameter_initializer
// //
case 369: { action. consumeDeclaratorWithInitializer(false); break; case 373: { action. consumeDeclaratorWithInitializer(false); break;
} }
// //
// Rule 370: parameter_initializer ::= assignment_expression // Rule 374: parameter_initializer ::= assignment_expression
// //
case 370: { action. consumeInitializer(); break; case 374: { action. consumeInitializer(); break;
} }
// //
// Rule 371: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body // Rule 375: function_definition ::= declaration_specifiers_opt function_declarator <openscope-ast> ctor_initializer_list_opt function_body
// //
case 371: { action. consumeFunctionDefinition(false); break; case 375: { action. consumeFunctionDefinition(false); break;
} }
// //
// Rule 372: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq // Rule 376: function_definition ::= declaration_specifiers_opt function_declarator try <openscope-ast> ctor_initializer_list_opt function_body <openscope-ast> handler_seq
// //
case 372: { action. consumeFunctionDefinition(true); break; case 376: { action. consumeFunctionDefinition(true); break;
} }
// //
// Rule 375: initializer ::= ( expression_list ) // Rule 379: initializer ::= ( expression_list )
// //
case 375: { action. consumeInitializerConstructor(); break; case 379: { action. consumeInitializerConstructor(); break;
} }
// //
// Rule 376: initializer_clause ::= assignment_expression // Rule 380: initializer_clause ::= assignment_expression
// //
case 376: { action. consumeInitializer(); break; case 380: { action. consumeInitializer(); break;
} }
// //
// Rule 377: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list , } end_initializer_list // Rule 381: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list , } end_initializer_list
// //
case 377: { action. consumeInitializerList(); break; case 381: { action. consumeInitializerList(); break;
} }
// //
// Rule 378: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list } end_initializer_list // Rule 382: initializer_clause ::= start_initializer_list { <openscope-ast> initializer_list } end_initializer_list
// //
case 378: { action. consumeInitializerList(); break; case 382: { action. consumeInitializerList(); break;
} }
// //
// Rule 379: initializer_clause ::= { <openscope-ast> } // Rule 383: initializer_clause ::= { <openscope-ast> }
// //
case 379: { action. consumeInitializerList(); break; case 383: { action. consumeInitializerList(); break;
} }
// //
// Rule 380: start_initializer_list ::= $Empty // Rule 384: start_initializer_list ::= $Empty
// //
case 380: { action. initializerListStart(); break; case 384: { action. initializerListStart(); break;
} }
// //
// Rule 381: end_initializer_list ::= $Empty // Rule 385: end_initializer_list ::= $Empty
// //
case 381: { action. initializerListEnd(); break; case 385: { action. initializerListEnd(); break;
} }
// //
// Rule 386: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt } // Rule 390: class_specifier ::= class_head { <openscope-ast> member_declaration_list_opt }
// //
case 386: { action. consumeClassSpecifier(); break; case 390: { action. consumeClassSpecifier(); break;
} }
// //
// Rule 387: class_head ::= class_keyword identifier_name_opt <openscope-ast> base_clause_opt // Rule 391: class_head ::= class_keyword composite_specifier_hook identifier_name_opt class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 387: { action. consumeClassHead(false); break; case 391: { action. consumeClassHead(false); break;
} }
// //
// Rule 388: class_head ::= class_keyword template_id_name <openscope-ast> base_clause_opt // Rule 392: class_head ::= class_keyword composite_specifier_hook template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 388: { action. consumeClassHead(false); break; case 392: { action. consumeClassHead(false); break;
} }
// //
// Rule 389: class_head ::= class_keyword nested_name_specifier identifier_name <openscope-ast> base_clause_opt // Rule 393: class_head ::= class_keyword composite_specifier_hook nested_name_specifier identifier_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 389: { action. consumeClassHead(true); break; case 393: { action. consumeClassHead(true); break;
} }
// //
// Rule 390: class_head ::= class_keyword nested_name_specifier template_id_name <openscope-ast> base_clause_opt // Rule 394: class_head ::= class_keyword composite_specifier_hook nested_name_specifier template_id_name class_name_suffix_hook <openscope-ast> base_clause_opt
// //
case 390: { action. consumeClassHead(true); break; case 394: { action. consumeClassHead(true); break;
} }
// //
// Rule 392: identifier_name_opt ::= $Empty // Rule 398: identifier_name_opt ::= $Empty
// //
case 392: { action. consumeEmpty(); break; case 398: { action. consumeEmpty(); break;
} }
// //
// Rule 396: visibility_label ::= access_specifier_keyword : // Rule 402: visibility_label ::= access_specifier_keyword :
// //
case 396: { action. consumeVisibilityLabel(); break; case 402: { action. consumeVisibilityLabel(); break;
} }
// //
// Rule 397: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ; // Rule 403: member_declaration ::= declaration_specifiers_opt <openscope-ast> member_declarator_list ;
// //
case 397: { action. consumeDeclarationSimple(true); break; case 403: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 398: member_declaration ::= declaration_specifiers_opt ; // Rule 404: member_declaration ::= declaration_specifiers_opt ;
// //
case 398: { action. consumeDeclarationSimple(false); break; case 404: { action. consumeDeclarationSimple(false); break;
} }
// //
// Rule 401: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ; // Rule 407: member_declaration ::= dcolon_opt nested_name_specifier template_opt unqualified_id_name ;
// //
case 401: { action. consumeMemberDeclarationQualifiedId(); break; case 407: { action. consumeMemberDeclarationQualifiedId(); break;
} }
// //
// Rule 407: member_declaration ::= ERROR_TOKEN // Rule 413: member_declaration ::= ERROR_TOKEN
// //
case 407: { action. consumeDeclarationProblem(); break; case 413: { action. consumeDeclarationProblem(); break;
} }
// //
// Rule 415: member_declarator ::= declarator constant_initializer // Rule 422: member_declarator ::= declarator constant_initializer
// //
case 415: { action. consumeMemberDeclaratorWithInitializer(); break; case 422: { action. consumeMemberDeclaratorWithInitializer(); break;
} }
// //
// Rule 416: member_declarator ::= bit_field_declarator : constant_expression // Rule 423: member_declarator ::= bit_field_declarator : constant_expression
// //
case 416: { action. consumeBitField(true); break; case 423: { action. consumeBitField(true); break;
} }
// //
// Rule 417: member_declarator ::= : constant_expression // Rule 424: member_declarator ::= : constant_expression
// //
case 417: { action. consumeBitField(false); break; case 424: { action. consumeBitField(false); break;
} }
// //
// Rule 418: bit_field_declarator ::= identifier_name // Rule 425: bit_field_declarator ::= identifier_name
// //
case 418: { action. consumeDirectDeclaratorIdentifier(); break; case 425: { action. consumeDirectDeclaratorIdentifier(); break;
} }
// //
// Rule 419: constant_initializer ::= = constant_expression // Rule 426: constant_initializer ::= = constant_expression
// //
case 419: { action. consumeInitializer(); break; case 426: { action. consumeInitializer(); break;
} }
// //
// Rule 425: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name // Rule 432: base_specifier ::= dcolon_opt nested_name_specifier_opt class_name
// //
case 425: { action. consumeBaseSpecifier(false, false); break; case 432: { action. consumeBaseSpecifier(false, false); break;
} }
// //
// Rule 426: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name // Rule 433: base_specifier ::= virtual access_specifier_keyword_opt dcolon_opt nested_name_specifier_opt class_name
// //
case 426: { action. consumeBaseSpecifier(true, true); break; case 433: { action. consumeBaseSpecifier(true, true); break;
} }
// //
// Rule 427: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name // Rule 434: base_specifier ::= access_specifier_keyword virtual dcolon_opt nested_name_specifier_opt class_name
// //
case 427: { action. consumeBaseSpecifier(true, true); break; case 434: { action. consumeBaseSpecifier(true, true); break;
} }
// //
// Rule 428: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name // Rule 435: base_specifier ::= access_specifier_keyword dcolon_opt nested_name_specifier_opt class_name
// //
case 428: { action. consumeBaseSpecifier(true, false); break; case 435: { action. consumeBaseSpecifier(true, false); break;
} }
// //
// Rule 429: access_specifier_keyword ::= private // Rule 436: access_specifier_keyword ::= private
// //
case 429: { action. consumeToken(); break; case 436: { action. consumeToken(); break;
} }
// //
// Rule 430: access_specifier_keyword ::= protected // Rule 437: access_specifier_keyword ::= protected
// //
case 430: { action. consumeToken(); break; case 437: { action. consumeToken(); break;
} }
// //
// Rule 431: access_specifier_keyword ::= public // Rule 438: access_specifier_keyword ::= public
// //
case 431: { action. consumeToken(); break; case 438: { action. consumeToken(); break;
} }
// //
// Rule 433: access_specifier_keyword_opt ::= $Empty // Rule 440: access_specifier_keyword_opt ::= $Empty
// //
case 433: { action. consumeEmpty(); break; case 440: { action. consumeEmpty(); break;
} }
// //
// Rule 435: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt > // Rule 442: conversion_function_id_name ::= conversion_function_id < <openscope-ast> template_argument_list_opt >
// //
case 435: { action. consumeTemplateId(); break; case 442: { action. consumeTemplateId(); break;
} }
// //
// Rule 436: conversion_function_id ::= operator conversion_type_id // Rule 443: conversion_function_id ::= operator conversion_type_id
// //
case 436: { action. consumeConversionName(); break; case 443: { action. consumeConversionName(); break;
} }
// //
// Rule 437: conversion_type_id ::= type_specifier_seq conversion_declarator // Rule 444: conversion_type_id ::= type_specifier_seq conversion_declarator
// //
case 437: { action. consumeTypeId(true); break; case 444: { action. consumeTypeId(true); break;
} }
// //
// Rule 438: conversion_type_id ::= type_specifier_seq // Rule 445: conversion_type_id ::= type_specifier_seq
// //
case 438: { action. consumeTypeId(false); break; case 445: { action. consumeTypeId(false); break;
} }
// //
// Rule 439: conversion_declarator ::= <openscope-ast> ptr_operator_seq // Rule 446: conversion_declarator ::= <openscope-ast> ptr_operator_seq
// //
case 439: { action. consumeDeclaratorWithPointer(false); break; case 446: { action. consumeDeclaratorWithPointer(false); break;
} }
// //
// Rule 445: mem_initializer ::= mem_initializer_name ( expression_list_opt ) // Rule 452: mem_initializer ::= mem_initializer_name ( expression_list_opt )
// //
case 445: { action. consumeConstructorChainInitializer(); break; case 452: { action. consumeConstructorChainInitializer(); break;
} }
// //
// Rule 446: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name // Rule 453: mem_initializer_name ::= dcolon_opt nested_name_specifier_opt class_name
// //
case 446: { action. consumeQualifiedId(false); break; case 453: { action. consumeQualifiedId(false); break;
} }
// //
// Rule 449: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt > // Rule 456: operator_function_id_name ::= operator_id_name < <openscope-ast> template_argument_list_opt >
// //
case 449: { action. consumeTemplateId(); break; case 456: { action. consumeTemplateId(); break;
} }
// //
// Rule 450: operator_id_name ::= operator overloadable_operator // Rule 457: operator_id_name ::= operator overloadable_operator
// //
case 450: { action. consumeOperatorName(); break; case 457: { action. consumeOperatorName(); break;
} }
// //
// Rule 493: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration // Rule 500: template_declaration ::= export_opt template < <openscope-ast> template_parameter_list > declaration
// //
case 493: { action. consumeTemplateDeclaration(); break; case 500: { action. consumeTemplateDeclaration(); break;
} }
// //
// Rule 494: export_opt ::= export // Rule 501: export_opt ::= export
// //
case 494: { action. consumePlaceHolder(); break; case 501: { action. consumePlaceHolder(); break;
} }
// //
// Rule 495: export_opt ::= $Empty // Rule 502: export_opt ::= $Empty
// //
case 495: { action. consumeEmpty(); break; case 502: { action. consumeEmpty(); break;
} }
// //
// Rule 499: template_parameter ::= parameter_declaration // Rule 506: template_parameter ::= parameter_declaration
// //
case 499: { action. consumeTemplateParamterDeclaration(); break; case 506: { action. consumeTemplateParamterDeclaration(); break;
} }
// //
// Rule 500: type_parameter ::= class identifier_name_opt // Rule 507: type_parameter ::= class identifier_name_opt
// //
case 500: { action. consumeSimpleTypeTemplateParameter(false); break; case 507: { action. consumeSimpleTypeTemplateParameter(false); break;
} }
// //
// Rule 501: type_parameter ::= class identifier_name_opt = type_id // Rule 508: type_parameter ::= class identifier_name_opt = type_id
// //
case 501: { action. consumeSimpleTypeTemplateParameter(true); break; case 508: { action. consumeSimpleTypeTemplateParameter(true); break;
} }
// //
// Rule 502: type_parameter ::= typename identifier_name_opt // Rule 509: type_parameter ::= typename identifier_name_opt
// //
case 502: { action. consumeSimpleTypeTemplateParameter(false); break; case 509: { action. consumeSimpleTypeTemplateParameter(false); break;
} }
// //
// Rule 503: type_parameter ::= typename identifier_name_opt = type_id // Rule 510: type_parameter ::= typename identifier_name_opt = type_id
// //
case 503: { action. consumeSimpleTypeTemplateParameter(true); break; case 510: { action. consumeSimpleTypeTemplateParameter(true); break;
} }
// //
// Rule 504: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt // Rule 511: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt
// //
case 504: { action. consumeTemplatedTypeTemplateParameter(false); break; case 511: { action. consumeTemplatedTypeTemplateParameter(false); break;
} }
// //
// Rule 505: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression // Rule 512: type_parameter ::= template < <openscope-ast> template_parameter_list > class identifier_name_opt = id_expression
// //
case 505: { action. consumeTemplatedTypeTemplateParameter(true); break; case 512: { action. consumeTemplatedTypeTemplateParameter(true); break;
} }
// //
// Rule 506: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt > // Rule 513: template_id_name ::= identifier_name < <openscope-ast> template_argument_list_opt >
// //
case 506: { action. consumeTemplateId(); break; case 513: { action. consumeTemplateId(); break;
} }
// //
// Rule 511: template_argument ::= assignment_expression // Rule 518: template_argument ::= assignment_expression
// //
case 511: { action. consumeTemplateArgumentExpression(); break; case 518: { action. consumeTemplateArgumentExpression(); break;
} }
// //
// Rule 512: template_argument ::= type_id // Rule 519: template_argument ::= type_id
// //
case 512: { action. consumeTemplateArgumentTypeId(); break; case 519: { action. consumeTemplateArgumentTypeId(); break;
} }
// //
// Rule 513: explicit_instantiation ::= template declaration // Rule 520: explicit_instantiation ::= template declaration
// //
case 513: { action. consumeTemplateExplicitInstantiation(); break; case 520: { action. consumeTemplateExplicitInstantiation(); break;
} }
// //
// Rule 514: explicit_specialization ::= template < > declaration // Rule 521: explicit_specialization ::= template < > declaration
// //
case 514: { action. consumeTemplateExplicitSpecialization(); break; case 521: { action. consumeTemplateExplicitSpecialization(); break;
} }
// //
// Rule 515: try_block ::= try compound_statement <openscope-ast> handler_seq // Rule 522: try_block ::= try compound_statement <openscope-ast> handler_seq
// //
case 515: { action. consumeStatementTryBlock(); break; case 522: { action. consumeStatementTryBlock(); break;
} }
// //
// Rule 518: handler ::= catch ( exception_declaration ) compound_statement // Rule 525: handler ::= catch ( exception_declaration ) compound_statement
// //
case 518: { action. consumeStatementCatchHandler(false); break; case 525: { action. consumeStatementCatchHandler(false); break;
} }
// //
// Rule 519: handler ::= catch ( ... ) compound_statement // Rule 526: handler ::= catch ( ... ) compound_statement
// //
case 519: { action. consumeStatementCatchHandler(true); break; case 526: { action. consumeStatementCatchHandler(true); break;
} }
// //
// Rule 520: exception_declaration ::= type_specifier_seq <openscope-ast> declarator // Rule 527: exception_declaration ::= type_specifier_seq <openscope-ast> declarator
// //
case 520: { action. consumeDeclarationSimple(true); break; case 527: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 521: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator // Rule 528: exception_declaration ::= type_specifier_seq <openscope-ast> abstract_declarator
// //
case 521: { action. consumeDeclarationSimple(true); break; case 528: { action. consumeDeclarationSimple(true); break;
} }
// //
// Rule 522: exception_declaration ::= type_specifier_seq // Rule 529: exception_declaration ::= type_specifier_seq
// //
case 522: { action. consumeDeclarationSimple(false); break; case 529: { action. consumeDeclarationSimple(false); break;
} }
// //
// Rule 524: exception_specification ::= throw ( ) // Rule 531: exception_specification ::= throw ( )
// //
case 524: { action. consumePlaceHolder(); break; case 531: { action. consumePlaceHolder(); break;
} }
// //
// Rule 530: type_parameter_start ::= ERROR_TOKEN // Rule 537: type_parameter_start ::= ERROR_TOKEN
// //
case 530: { action. consumeDeclarationProblem(); break; case 537: { action. consumeDeclarationProblem(); break;
} }

View file

@ -27,7 +27,7 @@ public interface CPPTemplateTypeParameterParsersym {
TK_const_cast = 43, TK_const_cast = 43,
TK_continue = 79, TK_continue = 79,
TK_default = 80, TK_default = 80,
TK_delete = 67, TK_delete = 66,
TK_do = 81, TK_do = 81,
TK_double = 13, TK_double = 13,
TK_dynamic_cast = 44, TK_dynamic_cast = 44,
@ -47,8 +47,8 @@ public interface CPPTemplateTypeParameterParsersym {
TK_long = 16, TK_long = 16,
TK_mutable = 31, TK_mutable = 31,
TK_namespace = 60, TK_namespace = 60,
TK_new = 68, TK_new = 67,
TK_operator = 8, TK_operator = 7,
TK_private = 103, TK_private = 103,
TK_protected = 104, TK_protected = 104,
TK_public = 105, TK_public = 105,
@ -84,7 +84,7 @@ public interface CPPTemplateTypeParameterParsersym {
TK_stringlit = 40, TK_stringlit = 40,
TK_identifier = 1, TK_identifier = 1,
TK_Completion = 2, TK_Completion = 2,
TK_EndOfCompletion = 7, TK_EndOfCompletion = 8,
TK_Invalid = 123, TK_Invalid = 123,
TK_LeftBracket = 64, TK_LeftBracket = 64,
TK_LeftParen = 3, TK_LeftParen = 3,
@ -134,7 +134,7 @@ public interface CPPTemplateTypeParameterParsersym {
TK_RightParen = 74, TK_RightParen = 74,
TK_RightBrace = 72, TK_RightBrace = 72,
TK_SemiColon = 25, TK_SemiColon = 25,
TK_LeftBrace = 66, TK_LeftBrace = 68,
TK_ERROR_TOKEN = 61, TK_ERROR_TOKEN = 61,
TK_0 = 56, TK_0 = 56,
TK_EOF_TOKEN = 121; TK_EOF_TOKEN = 121;
@ -147,8 +147,8 @@ public interface CPPTemplateTypeParameterParsersym {
"ColonColon", "ColonColon",
"Tilde", "Tilde",
"Star", "Star",
"EndOfCompletion",
"operator", "operator",
"EndOfCompletion",
"And", "And",
"typename", "typename",
"bool", "bool",
@ -206,9 +206,9 @@ public interface CPPTemplateTypeParameterParsersym {
"using", "using",
"LeftBracket", "LeftBracket",
"asm", "asm",
"LeftBrace",
"delete", "delete",
"new", "new",
"LeftBrace",
"GT", "GT",
"Assign", "Assign",
"Comma", "Comma",

View file

@ -0,0 +1,214 @@
/*******************************************************************************
* 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*********************************************************************************/
// This file was generated by LPG
package org.eclipse.cdt.internal.core.dom.lrparser.gcc;
public interface GCCParsersym {
public final static int
TK_auto = 26,
TK_break = 33,
TK_case = 34,
TK_char = 45,
TK_const = 21,
TK_continue = 35,
TK_default = 36,
TK_do = 37,
TK_double = 46,
TK_else = 81,
TK_enum = 57,
TK_extern = 27,
TK_float = 47,
TK_for = 38,
TK_goto = 39,
TK_if = 40,
TK_inline = 28,
TK_int = 48,
TK_long = 49,
TK_register = 29,
TK_restrict = 22,
TK_return = 41,
TK_short = 50,
TK_signed = 51,
TK_sizeof = 14,
TK_static = 25,
TK_struct = 58,
TK_switch = 42,
TK_typedef = 30,
TK_union = 59,
TK_unsigned = 52,
TK_void = 53,
TK_volatile = 23,
TK_while = 32,
TK__Bool = 54,
TK__Complex = 55,
TK__Imaginary = 56,
TK_integer = 15,
TK_floating = 16,
TK_charconst = 17,
TK_stringlit = 18,
TK_identifier = 1,
TK_Completion = 6,
TK_EndOfCompletion = 3,
TK_Invalid = 95,
TK_LeftBracket = 43,
TK_LeftParen = 2,
TK_LeftBrace = 8,
TK_Dot = 68,
TK_Arrow = 82,
TK_PlusPlus = 12,
TK_MinusMinus = 13,
TK_And = 11,
TK_Star = 7,
TK_Plus = 9,
TK_Minus = 10,
TK_Tilde = 19,
TK_Bang = 20,
TK_Slash = 69,
TK_Percent = 70,
TK_RightShift = 64,
TK_LeftShift = 65,
TK_LT = 71,
TK_GT = 72,
TK_LE = 73,
TK_GE = 74,
TK_EQ = 76,
TK_NE = 77,
TK_Caret = 78,
TK_Or = 79,
TK_AndAnd = 80,
TK_OrOr = 83,
TK_Question = 84,
TK_Colon = 62,
TK_DotDotDot = 66,
TK_Assign = 63,
TK_StarAssign = 85,
TK_SlashAssign = 86,
TK_PercentAssign = 87,
TK_PlusAssign = 88,
TK_MinusAssign = 89,
TK_RightShiftAssign = 90,
TK_LeftShiftAssign = 91,
TK_AndAssign = 92,
TK_CaretAssign = 93,
TK_OrAssign = 94,
TK_Comma = 60,
TK_RightBracket = 67,
TK_RightParen = 44,
TK_RightBrace = 61,
TK_SemiColon = 24,
TK___attribute__ = 4,
TK___declspec = 5,
TK_ERROR_TOKEN = 31,
TK_EOF_TOKEN = 75;
public final static String orderedTerminalSymbols[] = {
"",
"identifier",
"LeftParen",
"EndOfCompletion",
"__attribute__",
"__declspec",
"Completion",
"Star",
"LeftBrace",
"Plus",
"Minus",
"And",
"PlusPlus",
"MinusMinus",
"sizeof",
"integer",
"floating",
"charconst",
"stringlit",
"Tilde",
"Bang",
"const",
"restrict",
"volatile",
"SemiColon",
"static",
"auto",
"extern",
"inline",
"register",
"typedef",
"ERROR_TOKEN",
"while",
"break",
"case",
"continue",
"default",
"do",
"for",
"goto",
"if",
"return",
"switch",
"LeftBracket",
"RightParen",
"char",
"double",
"float",
"int",
"long",
"short",
"signed",
"unsigned",
"void",
"_Bool",
"_Complex",
"_Imaginary",
"enum",
"struct",
"union",
"Comma",
"RightBrace",
"Colon",
"Assign",
"RightShift",
"LeftShift",
"DotDotDot",
"RightBracket",
"Dot",
"Slash",
"Percent",
"LT",
"GT",
"LE",
"GE",
"EOF_TOKEN",
"EQ",
"NE",
"Caret",
"Or",
"AndAnd",
"else",
"Arrow",
"OrOr",
"Question",
"StarAssign",
"SlashAssign",
"PercentAssign",
"PlusAssign",
"MinusAssign",
"RightShiftAssign",
"LeftShiftAssign",
"AndAssign",
"CaretAssign",
"OrAssign",
"Invalid"
};
public final static boolean isValidForParser = true;
}

View file

@ -0,0 +1,274 @@
/*******************************************************************************
* 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
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*********************************************************************************/
// This file was generated by LPG
package org.eclipse.cdt.internal.core.dom.lrparser.gpp;
public interface GPPParsersym {
public final static int
TK_asm = 66,
TK_auto = 28,
TK_bool = 13,
TK_break = 79,
TK_case = 80,
TK_catch = 121,
TK_char = 14,
TK_class = 42,
TK_const = 24,
TK_const_cast = 45,
TK_continue = 81,
TK_default = 82,
TK_delete = 68,
TK_do = 83,
TK_double = 15,
TK_dynamic_cast = 46,
TK_else = 124,
TK_enum = 58,
TK_explicit = 29,
TK_export = 89,
TK_extern = 30,
TK_false = 47,
TK_float = 16,
TK_for = 84,
TK_friend = 31,
TK_goto = 85,
TK_if = 86,
TK_inline = 32,
TK_int = 17,
TK_long = 18,
TK_mutable = 33,
TK_namespace = 62,
TK_new = 69,
TK_operator = 8,
TK_private = 105,
TK_protected = 106,
TK_public = 107,
TK_register = 34,
TK_reinterpret_cast = 48,
TK_return = 87,
TK_short = 19,
TK_signed = 20,
TK_sizeof = 49,
TK_static = 35,
TK_static_cast = 50,
TK_struct = 59,
TK_switch = 88,
TK_template = 43,
TK_this = 51,
TK_throw = 63,
TK_try = 77,
TK_true = 52,
TK_typedef = 36,
TK_typeid = 53,
TK_typename = 12,
TK_union = 60,
TK_unsigned = 21,
TK_using = 64,
TK_virtual = 25,
TK_void = 22,
TK_volatile = 27,
TK_wchar_t = 23,
TK_while = 78,
TK_integer = 54,
TK_floating = 55,
TK_charconst = 56,
TK_stringlit = 41,
TK_identifier = 1,
TK_Completion = 2,
TK_EndOfCompletion = 10,
TK_Invalid = 125,
TK_LeftBracket = 67,
TK_LeftParen = 3,
TK_Dot = 122,
TK_DotStar = 94,
TK_Arrow = 108,
TK_ArrowStar = 92,
TK_PlusPlus = 39,
TK_MinusMinus = 40,
TK_And = 11,
TK_Star = 9,
TK_Plus = 37,
TK_Minus = 38,
TK_Tilde = 7,
TK_Bang = 44,
TK_Slash = 95,
TK_Percent = 96,
TK_RightShift = 90,
TK_LeftShift = 91,
TK_LT = 61,
TK_GT = 73,
TK_LE = 97,
TK_GE = 98,
TK_EQ = 99,
TK_NE = 100,
TK_Caret = 101,
TK_Or = 102,
TK_AndAnd = 103,
TK_OrOr = 104,
TK_Question = 109,
TK_Colon = 74,
TK_ColonColon = 4,
TK_DotDotDot = 93,
TK_Assign = 75,
TK_StarAssign = 110,
TK_SlashAssign = 111,
TK_PercentAssign = 112,
TK_PlusAssign = 113,
TK_MinusAssign = 114,
TK_RightShiftAssign = 115,
TK_LeftShiftAssign = 116,
TK_AndAssign = 117,
TK_CaretAssign = 118,
TK_OrAssign = 119,
TK_Comma = 70,
TK_RightBracket = 120,
TK_RightParen = 71,
TK_RightBrace = 76,
TK_SemiColon = 26,
TK_LeftBrace = 72,
TK___attribute__ = 5,
TK___declspec = 6,
TK_ERROR_TOKEN = 65,
TK_0 = 57,
TK_EOF_TOKEN = 123;
public final static String orderedTerminalSymbols[] = {
"",
"identifier",
"Completion",
"LeftParen",
"ColonColon",
"__attribute__",
"__declspec",
"Tilde",
"operator",
"Star",
"EndOfCompletion",
"And",
"typename",
"bool",
"char",
"double",
"float",
"int",
"long",
"short",
"signed",
"unsigned",
"void",
"wchar_t",
"const",
"virtual",
"SemiColon",
"volatile",
"auto",
"explicit",
"extern",
"friend",
"inline",
"mutable",
"register",
"static",
"typedef",
"Plus",
"Minus",
"PlusPlus",
"MinusMinus",
"stringlit",
"class",
"template",
"Bang",
"const_cast",
"dynamic_cast",
"false",
"reinterpret_cast",
"sizeof",
"static_cast",
"this",
"true",
"typeid",
"integer",
"floating",
"charconst",
"0",
"enum",
"struct",
"union",
"LT",
"namespace",
"throw",
"using",
"ERROR_TOKEN",
"asm",
"LeftBracket",
"delete",
"new",
"Comma",
"RightParen",
"LeftBrace",
"GT",
"Colon",
"Assign",
"RightBrace",
"try",
"while",
"break",
"case",
"continue",
"default",
"do",
"for",
"goto",
"if",
"return",
"switch",
"export",
"RightShift",
"LeftShift",
"ArrowStar",
"DotDotDot",
"DotStar",
"Slash",
"Percent",
"LE",
"GE",
"EQ",
"NE",
"Caret",
"Or",
"AndAnd",
"OrOr",
"private",
"protected",
"public",
"Arrow",
"Question",
"StarAssign",
"SlashAssign",
"PercentAssign",
"PlusAssign",
"MinusAssign",
"RightShiftAssign",
"LeftShiftAssign",
"AndAssign",
"CaretAssign",
"OrAssign",
"RightBracket",
"catch",
"Dot",
"EOF_TOKEN",
"else",
"Invalid"
};
public final static boolean isValidForParser = true;
}

View file

@ -17,7 +17,7 @@ import org.eclipse.cdt.core.model.ILanguage;
public class UPCCommentTests extends LRCommentTests { public class UPCCommentTests extends LRCommentTests {
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }
} }

View file

@ -17,7 +17,7 @@ import org.eclipse.cdt.core.model.ILanguage;
public class UPCCompleteParser2Tests extends LRCompleteParser2Tests { public class UPCCompleteParser2Tests extends LRCompleteParser2Tests {
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }

View file

@ -19,7 +19,7 @@ public class UPCCompletionBasicTest extends LRCompletionBasicTest {
public UPCCompletionBasicTest() { } public UPCCompletionBasicTest() { }
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return C99Language.getDefault(); return C99Language.getDefault();
} }

View file

@ -20,7 +20,7 @@ public class UPCCompletionParseTest extends LRCompletionParseTest {
public UPCCompletionParseTest(String name) { super(name); } public UPCCompletionParseTest(String name) { super(name); }
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }
} }

View file

@ -24,7 +24,7 @@ public class UPCDOMLocationInclusionTests extends LRDOMLocationInclusionTests {
} }
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }
} }

View file

@ -20,7 +20,7 @@ public class UPCDOMLocationMacroTests extends LRDOMLocationMacroTests {
} }
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }
} }

View file

@ -24,7 +24,7 @@ public class UPCDOMLocationTests extends LRDOMLocationTests {
} }
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }
} }

View file

@ -17,7 +17,7 @@ import org.eclipse.cdt.core.model.ILanguage;
public class UPCDOMPreprocessorInformationTest extends LRDOMPreprocessorInformationTest { public class UPCDOMPreprocessorInformationTest extends LRDOMPreprocessorInformationTest {
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }

View file

@ -24,7 +24,7 @@ public class UPCGCCTests extends LRGCCTests {
} }
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }

View file

@ -20,7 +20,7 @@ public class UPCKnRTests extends LRKnRTests {
} }
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }

View file

@ -21,7 +21,7 @@ public class UPCSelectionParseTest extends LRSelectionParseTest {
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }
} }

View file

@ -17,7 +17,7 @@ import org.eclipse.cdt.core.model.ILanguage;
public class UPCTaskParserTest extends LRTaskParserTest { public class UPCTaskParserTest extends LRTaskParserTest {
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }

View file

@ -30,7 +30,7 @@ public class UPCTests extends LRTests {
} }
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }

View file

@ -17,7 +17,7 @@ import org.eclipse.cdt.core.model.ILanguage;
public class UPCUtilOldTests extends LRUtilOldTests { public class UPCUtilOldTests extends LRUtilOldTests {
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }

View file

@ -17,7 +17,7 @@ import org.eclipse.cdt.core.model.ILanguage;
public class UPCUtilTests extends LRUtilTests { public class UPCUtilTests extends LRUtilTests {
@Override @Override
protected ILanguage getC99Language() { protected ILanguage getCLanguage() {
return UPCLanguage.getDefault(); return UPCLanguage.getDefault();
} }

View file

@ -63,6 +63,7 @@ public enum UPCKeyword {
tokenMap.put(name.toCharArray(), keyword.tokenKind); tokenMap.put(name.toCharArray(), keyword.tokenKind);
} }
// TODO change to GCC language when gcc support is added
ICLanguageKeywords c99Keywords = (ICLanguageKeywords) C99Language.getDefault().getAdapter(ICLanguageKeywords.class); ICLanguageKeywords c99Keywords = (ICLanguageKeywords) C99Language.getDefault().getAdapter(ICLanguageKeywords.class);
String[] c99ks = c99Keywords.getKeywords(); String[] c99ks = c99Keywords.getKeywords();
allKeywords = new String[upcKeywords.length + c99ks.length]; allKeywords = new String[upcKeywords.length + c99ks.length];

View file

@ -19,17 +19,12 @@ import org.eclipse.cdt.core.dom.lrparser.ScannerExtensionConfiguration;
import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration; import org.eclipse.cdt.core.dom.parser.IScannerExtensionConfiguration;
import org.eclipse.cdt.core.dom.parser.upc.DOMToUPCTokenMap; import org.eclipse.cdt.core.dom.parser.upc.DOMToUPCTokenMap;
import org.eclipse.cdt.core.dom.parser.upc.UPCLanguageKeywords; import org.eclipse.cdt.core.dom.parser.upc.UPCLanguageKeywords;
import org.eclipse.cdt.core.index.IIndex;
import org.eclipse.cdt.core.model.ICLanguageKeywords; import org.eclipse.cdt.core.model.ICLanguageKeywords;
import org.eclipse.cdt.core.model.IContributedModelBuilder; import org.eclipse.cdt.core.model.IContributedModelBuilder;
import org.eclipse.cdt.core.model.ITranslationUnit; import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.parser.IScanner;
import org.eclipse.cdt.core.parser.ParserLanguage; import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.internal.core.dom.parser.c.CASTTranslationUnit;
import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory; import org.eclipse.cdt.internal.core.dom.parser.c.CNodeFactory;
import org.eclipse.cdt.internal.core.dom.parser.upc.UPCParser; import org.eclipse.cdt.internal.core.dom.parser.upc.UPCParser;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMLinkageFactory;
import org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory;
/** /**
@ -40,23 +35,17 @@ import org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory;
@SuppressWarnings("restriction") @SuppressWarnings("restriction")
public class UPCLanguage extends BaseExtensibleLanguage { public class UPCLanguage extends BaseExtensibleLanguage {
public static final String PLUGIN_ID = "org.eclipse.cdt.core.parser.upc"; //$NON-NLS-1$ public static final String ID = "org.eclipse.cdt.core.parser.upc.upc"; //$NON-NLS-1$
public static final String ID = PLUGIN_ID + ".upc"; //$NON-NLS-1$
private static final IDOMTokenMap TOKEN_MAP = new DOMToUPCTokenMap();
private static final UPCLanguage myDefault = new UPCLanguage(); private static final UPCLanguage myDefault = new UPCLanguage();
private static final IScannerExtensionConfiguration SCANNER_CONFIGURATION = ScannerExtensionConfiguration.createC();
public static UPCLanguage getDefault() { public static UPCLanguage getDefault() {
return myDefault; return myDefault;
} }
@Override @Override
protected IDOMTokenMap getTokenMap() { protected IDOMTokenMap getTokenMap() {
return TOKEN_MAP; return new DOMToUPCTokenMap();
} }
@Override @Override
@ -80,13 +69,11 @@ public class UPCLanguage extends BaseExtensibleLanguage {
} }
private static final ICLanguageKeywords upcKeywords = new UPCLanguageKeywords(SCANNER_CONFIGURATION); private static final ICLanguageKeywords upcKeywords = new UPCLanguageKeywords(ScannerExtensionConfiguration.createC());
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Override @Override
public Object getAdapter(Class adapter) { public Object getAdapter(Class adapter) {
if(IPDOMLinkageFactory.class.equals(adapter))
return new PDOMCLinkageFactory();
if(ICLanguageKeywords.class.equals(adapter)) if(ICLanguageKeywords.class.equals(adapter))
return upcKeywords; return upcKeywords;
@ -102,18 +89,13 @@ public class UPCLanguage extends BaseExtensibleLanguage {
* Gets the translation unit object and sets the index and the location resolver. * Gets the translation unit object and sets the index and the location resolver.
*/ */
@Override @Override
protected IASTTranslationUnit createASTTranslationUnit(IIndex index, IScanner preprocessor) { protected IASTTranslationUnit createASTTranslationUnit() {
IASTTranslationUnit tu = CNodeFactory.getDefault().newTranslationUnit(); return CNodeFactory.getDefault().newTranslationUnit();
tu.setIndex(index);
if(tu instanceof CASTTranslationUnit) {
((CASTTranslationUnit)tu).setLocationResolver(preprocessor.getLocationResolver());
}
return tu;
} }
@Override @Override
protected IScannerExtensionConfiguration getScannerExtensionConfiguration() { protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
return SCANNER_CONFIGURATION; return ScannerExtensionConfiguration.createC();
} }
} }

View file

@ -18,65 +18,65 @@ public interface UPCExpressionParsersym {
TK_auto = 33, TK_auto = 33,
TK_break = 90, TK_break = 90,
TK_case = 91, TK_case = 91,
TK_char = 38, TK_char = 40,
TK_const = 8, TK_const = 11,
TK_continue = 92, TK_continue = 92,
TK_default = 93, TK_default = 93,
TK_do = 94, TK_do = 94,
TK_double = 39, TK_double = 41,
TK_else = 95, TK_else = 95,
TK_enum = 52, TK_enum = 53,
TK_extern = 34, TK_extern = 34,
TK_float = 40, TK_float = 42,
TK_for = 96, TK_for = 96,
TK_goto = 97, TK_goto = 97,
TK_if = 98, TK_if = 98,
TK_inline = 35, TK_inline = 35,
TK_int = 41, TK_int = 43,
TK_long = 42, TK_long = 44,
TK_register = 36, TK_register = 36,
TK_restrict = 9, TK_restrict = 12,
TK_return = 99, TK_return = 99,
TK_short = 43, TK_short = 45,
TK_signed = 44, TK_signed = 46,
TK_sizeof = 17, TK_sizeof = 13,
TK_static = 31, TK_static = 32,
TK_struct = 53, TK_struct = 54,
TK_switch = 100, TK_switch = 100,
TK_typedef = 37, TK_typedef = 37,
TK_union = 54, TK_union = 55,
TK_unsigned = 45, TK_unsigned = 47,
TK_void = 46, TK_void = 48,
TK_volatile = 10, TK_volatile = 14,
TK_while = 101, TK_while = 101,
TK__Bool = 47, TK__Bool = 49,
TK__Complex = 48, TK__Complex = 50,
TK__Imaginary = 49, TK__Imaginary = 51,
TK_integer = 18, TK_integer = 15,
TK_floating = 19, TK_floating = 16,
TK_charconst = 20, TK_charconst = 17,
TK_stringlit = 21, TK_stringlit = 18,
TK_identifier = 1, TK_identifier = 1,
TK_Completion = 3, TK_Completion = 3,
TK_EndOfCompletion = 5, TK_EndOfCompletion = 5,
TK_Invalid = 102, TK_Invalid = 102,
TK_LeftBracket = 32, TK_LeftBracket = 31,
TK_LeftParen = 2, TK_LeftParen = 2,
TK_LeftBrace = 30, TK_LeftBrace = 19,
TK_Dot = 61, TK_Dot = 61,
TK_Arrow = 76, TK_Arrow = 76,
TK_PlusPlus = 15, TK_PlusPlus = 9,
TK_MinusMinus = 16, TK_MinusMinus = 10,
TK_And = 11, TK_And = 8,
TK_Star = 4, TK_Star = 4,
TK_Plus = 6, TK_Plus = 6,
TK_Minus = 7, TK_Minus = 7,
TK_Tilde = 22, TK_Tilde = 20,
TK_Bang = 23, TK_Bang = 21,
TK_Slash = 62, TK_Slash = 62,
TK_Percent = 63, TK_Percent = 63,
TK_RightShift = 57, TK_RightShift = 56,
TK_LeftShift = 58, TK_LeftShift = 57,
TK_LT = 64, TK_LT = 64,
TK_GT = 65, TK_GT = 65,
TK_LE = 66, TK_LE = 66,
@ -89,7 +89,7 @@ public interface UPCExpressionParsersym {
TK_OrOr = 77, TK_OrOr = 77,
TK_Question = 78, TK_Question = 78,
TK_Colon = 68, TK_Colon = 68,
TK_DotDotDot = 60, TK_DotDotDot = 59,
TK_Assign = 69, TK_Assign = 69,
TK_StarAssign = 79, TK_StarAssign = 79,
TK_SlashAssign = 80, TK_SlashAssign = 80,
@ -101,26 +101,26 @@ public interface UPCExpressionParsersym {
TK_AndAssign = 86, TK_AndAssign = 86,
TK_CaretAssign = 87, TK_CaretAssign = 87,
TK_OrAssign = 88, TK_OrAssign = 88,
TK_Comma = 55, TK_Comma = 39,
TK_RightBracket = 59, TK_RightBracket = 58,
TK_RightParen = 50, TK_RightParen = 38,
TK_RightBrace = 51, TK_RightBrace = 52,
TK_SemiColon = 75, TK_SemiColon = 75,
TK_MYTHREAD = 24, TK_MYTHREAD = 22,
TK_THREADS = 25, TK_THREADS = 23,
TK_UPC_MAX_BLOCKSIZE = 26, TK_UPC_MAX_BLOCKSIZE = 24,
TK_relaxed = 12, TK_relaxed = 25,
TK_shared = 13, TK_shared = 26,
TK_strict = 14, TK_strict = 27,
TK_upc_barrier = 103, TK_upc_barrier = 103,
TK_upc_localsizeof = 27, TK_upc_localsizeof = 28,
TK_upc_blocksizeof = 28, TK_upc_blocksizeof = 29,
TK_upc_elemsizeof = 29, TK_upc_elemsizeof = 30,
TK_upc_notify = 104, TK_upc_notify = 104,
TK_upc_fence = 105, TK_upc_fence = 105,
TK_upc_wait = 106, TK_upc_wait = 106,
TK_upc_forall = 107, TK_upc_forall = 107,
TK_ERROR_TOKEN = 56, TK_ERROR_TOKEN = 60,
TK_EOF_TOKEN = 89; TK_EOF_TOKEN = 89;
public final static String orderedTerminalSymbols[] = { public final static String orderedTerminalSymbols[] = {
@ -132,36 +132,38 @@ public interface UPCExpressionParsersym {
"EndOfCompletion", "EndOfCompletion",
"Plus", "Plus",
"Minus", "Minus",
"const",
"restrict",
"volatile",
"And", "And",
"relaxed",
"shared",
"strict",
"PlusPlus", "PlusPlus",
"MinusMinus", "MinusMinus",
"const",
"restrict",
"sizeof", "sizeof",
"volatile",
"integer", "integer",
"floating", "floating",
"charconst", "charconst",
"stringlit", "stringlit",
"LeftBrace",
"Tilde", "Tilde",
"Bang", "Bang",
"MYTHREAD", "MYTHREAD",
"THREADS", "THREADS",
"UPC_MAX_BLOCKSIZE", "UPC_MAX_BLOCKSIZE",
"relaxed",
"shared",
"strict",
"upc_localsizeof", "upc_localsizeof",
"upc_blocksizeof", "upc_blocksizeof",
"upc_elemsizeof", "upc_elemsizeof",
"LeftBrace",
"static",
"LeftBracket", "LeftBracket",
"static",
"auto", "auto",
"extern", "extern",
"inline", "inline",
"register", "register",
"typedef", "typedef",
"RightParen",
"Comma",
"char", "char",
"double", "double",
"float", "float",
@ -174,17 +176,15 @@ public interface UPCExpressionParsersym {
"_Bool", "_Bool",
"_Complex", "_Complex",
"_Imaginary", "_Imaginary",
"RightParen",
"RightBrace", "RightBrace",
"enum", "enum",
"struct", "struct",
"union", "union",
"Comma",
"ERROR_TOKEN",
"RightShift", "RightShift",
"LeftShift", "LeftShift",
"RightBracket", "RightBracket",
"DotDotDot", "DotDotDot",
"ERROR_TOKEN",
"Dot", "Dot",
"Slash", "Slash",
"Percent", "Percent",

Some files were not shown because too many files have changed in this diff Show more