1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-19 15:05:36 +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.lrparser.BaseExtensibleLanguage;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2CPPSpecFailingTest;
@ -57,11 +57,11 @@ public class LRCPPSpecFailingTest extends AST2CPPSpecFailingTest {
protected BaseExtensibleLanguage getCLanguage() {
return C99Language.getDefault();
return GCCLanguage.getDefault();
}
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.lrparser.BaseExtensibleLanguage;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2CPPSpecTest;
@ -78,11 +78,11 @@ public class LRCPPSpecTest extends AST2CPPSpecTest {
protected BaseExtensibleLanguage getCLanguage() {
return C99Language.getDefault();
return GCCLanguage.getDefault();
}
protected BaseExtensibleLanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault();
return GPPLanguage.getDefault();
}

View file

@ -14,8 +14,8 @@ import junit.framework.AssertionFailedError;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2CPPTests;
@ -40,7 +40,7 @@ public class LRCPPTests extends AST2CPPTests {
@Override
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();
options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems);
@ -48,12 +48,12 @@ public class LRCPPTests extends AST2CPPTests {
return ParseHelper.parse(code, language, options);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault();
return GPPLanguage.getDefault();
}

View file

@ -14,8 +14,8 @@ import junit.framework.AssertionFailedError;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2CSpecTest;
@ -60,11 +60,11 @@ public class LRCSpecTests extends AST2CSpecTest {
}
protected ILanguage getCLanguage() {
return C99Language.getDefault();
return GCCLanguage.getDefault();
}
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.IASTFileLocation;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.CommentTests;
@ -33,7 +33,7 @@ public class LRCommentTests extends CommentTests {
@Override
@SuppressWarnings("unused")
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);
}
@ -44,7 +44,7 @@ public class LRCommentTests extends CommentTests {
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();
options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems);
@ -52,12 +52,12 @@ public class LRCommentTests extends CommentTests {
return ParseHelper.commentParse(code, language);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault();
return GPPLanguage.getDefault();
}

View file

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

View file

@ -13,8 +13,8 @@ package org.eclipse.cdt.core.lrparser.tests;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.CodeReader;
import org.eclipse.cdt.core.parser.ExtendedScannerInfo;
@ -45,7 +45,7 @@ public class LRDOMLocationInclusionTests extends DOMLocationInclusionTests {
@Override
protected IASTTranslationUnit parse(IFile code, IScannerInfo s)throws Exception {
// 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());
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() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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 org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.DOMLocationMacroTests;
@ -34,18 +34,18 @@ public class LRDOMLocationMacroTests extends DOMLocationMacroTests {
@Override
@SuppressWarnings("unused")
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);
return ParseHelper.parse(code, language, options);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault();
return GPPLanguage.getDefault();
}

View file

@ -14,8 +14,8 @@ import junit.framework.AssertionFailedError;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.DOMLocationTests;
@ -34,17 +34,17 @@ public class LRDOMLocationTests extends DOMLocationTests {
@Override
@SuppressWarnings("unused")
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);
return ParseHelper.parse(code, language, options);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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 org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.DOMPreprocessorInformationTest;
@ -30,18 +30,18 @@ public class LRDOMPreprocessorInformationTest extends DOMPreprocessorInformation
@Override
@SuppressWarnings("unused")
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);
return ParseHelper.parse(code, language, options);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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.IASTTranslationUnit;
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;
@ -60,7 +60,7 @@ public class LRDigraphTrigraphTests extends TestCase {
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 org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.GCCTests;
@ -34,18 +34,18 @@ public class LRGCCTests extends GCCTests {
@Override
@SuppressWarnings("unused")
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);
return ParseHelper.parse(code, language, options);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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 org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.ImageLocationTests;
@ -33,7 +33,7 @@ public class LRImageLocationTests extends ImageLocationTests {
@SuppressWarnings("unused")
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();
options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems);
@ -41,12 +41,12 @@ public class LRImageLocationTests extends ImageLocationTests {
return ParseHelper.parse(code, language, options);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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 org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2KnRTests;
@ -33,17 +33,17 @@ public class LRKnRTests extends AST2KnRTests {
@Override
@SuppressWarnings("unused")
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);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault();
return GPPLanguage.getDefault();
}
// LPG handles syntax errors differently than the DOM parser

View file

@ -15,8 +15,8 @@ import java.io.IOException;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.ASTNodeSelectorTest;
@ -35,7 +35,7 @@ public class LRNodeSelectorTest extends ASTNodeSelectorTest {
@Override
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();
options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems);
@ -51,12 +51,12 @@ public class LRNodeSelectorTest extends ASTNodeSelectorTest {
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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 org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.QuickParser2Tests;
@ -25,7 +25,7 @@ public class LRQuickParser2Tests extends QuickParser2Tests {
@Override
protected void parse(String code, boolean expectedToPass,
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)
ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectedToPass);
@ -34,12 +34,12 @@ public class LRQuickParser2Tests extends QuickParser2Tests {
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.CodeReader;
import org.eclipse.cdt.core.parser.IScannerInfo;
@ -55,7 +55,7 @@ public class LRSelectionParseTest extends AST2SelectionParseTest {
@Override
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();
options.setCheckPreprocessorProblems(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 ) {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language();
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
String fileName = file.getLocation().toOSString();
ICodeReaderFactory fileCreator = SavedCodeReaderFactory.getInstance();
@ -85,12 +85,12 @@ public class LRSelectionParseTest extends AST2SelectionParseTest {
return parse(file, lang, new ScannerInfo(), useGNUExtensions, expectNoProblems);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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 org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.SemanticsTests;
@ -33,7 +33,7 @@ public class LRSemanticsTests extends SemanticsTests {
@Override
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();
options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems);
@ -41,11 +41,11 @@ public class LRSemanticsTests extends SemanticsTests {
return ParseHelper.parse(code, language, options);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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 org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.TaskParserTest;
@ -28,14 +28,13 @@ public class LRTaskParserTest extends TaskParserTest {
}
@Override
@SuppressWarnings("unused")
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems ) throws ParserException {
return parse(code, lang, useGNUExtensions, expectNoProblems, false);
}
@Override
protected IASTTranslationUnit parse( String code, ParserLanguage lang, boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getC99Language();
protected IASTTranslationUnit parse( String code, ParserLanguage lang, @SuppressWarnings("unused") boolean useGNUExtensions, boolean expectNoProblems, boolean skipTrivialInitializers) throws ParserException {
ILanguage language = lang.isCPP() ? getCPPLanguage() : getCLanguage();
ParseHelper.Options options = new ParseHelper.Options();
options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems);
@ -43,11 +42,11 @@ public class LRTaskParserTest extends TaskParserTest {
return ParseHelper.parse(code, language, options);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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 org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2TemplateTests;
@ -32,7 +32,7 @@ public class LRTemplateTests extends AST2TemplateTests {
@Override
@SuppressWarnings("unused")
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();
options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems);
@ -40,12 +40,12 @@ public class LRTemplateTests extends AST2TemplateTests {
return ParseHelper.parse(code, language, options);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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.IASTTranslationUnit;
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.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2Tests;
@ -48,7 +48,7 @@ public class LRTests extends AST2Tests {
@Override
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();
options.setCheckSyntaxProblems(expectNoProblems);
options.setCheckPreprocessorProblems(expectNoProblems);
@ -56,12 +56,12 @@ public class LRTests extends AST2Tests {
return ParseHelper.parse(code, language, options);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
protected ILanguage getCPPLanguage() {
return ISOCPPLanguage.getDefault();
return GPPLanguage.getDefault();
}

View file

@ -14,8 +14,8 @@ import junit.framework.AssertionFailedError;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2UtilOldTests;
@ -32,17 +32,17 @@ public class LRUtilOldTests extends AST2UtilOldTests {
@Override
@SuppressWarnings("unused")
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);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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 org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.lrparser.c99.C99Language;
import org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage;
import org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage;
import org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.parser.ParserLanguage;
import org.eclipse.cdt.core.parser.tests.ast2.AST2UtilTests;
@ -40,16 +40,16 @@ public class LRUtilTests extends AST2UtilTests {
@Override
@SuppressWarnings("unused")
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);
}
protected ILanguage getC99Language() {
return C99Language.getDefault();
protected ILanguage getCLanguage() {
return GCCLanguage.getDefault();
}
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,
org.eclipse.cdt.core.dom.lrparser.action,
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.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.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-Vendor: %Bundle-Vendor.0
Bundle-RequiredExecutionEnvironment: J2SE-1.5

View file

@ -9,7 +9,7 @@
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>
@ -24,23 +24,22 @@
</fail>
<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="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">
<delete>
<fileset dir="${c99_location}" includes="**/*.l"/>
<fileset dir="${gcc_location}" includes="**/*.l"/>
<fileset dir="${cpp_location}" includes="**/*.l"/>
<fileset dir="${gpp_location}" includes="**/*.l"/>
</delete>
</target>
<target name="both" depends="cpp, c99">
<description>Generates the C99 and C++ parsers</description>
<echo message="Done"/>
</target>
<target name="c99">
<description>Generate the C99 parser</description>
<!-- Generate main parser -->
@ -61,7 +60,33 @@
</antcall>
</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">
<description>Generate the C++ parser</description>
<antcall target="generate_cpp">
@ -89,16 +114,6 @@
</antcall>
</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">
<antcall target="generate">
<param name="grammar_dir" value="cpp"/>
@ -108,6 +123,25 @@
</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">
<property name="grammar_file" value="${grammar_dir}/${grammar_name}.g"/>
<echo message="lpg_exe=${lpg_exe}"/>
@ -118,6 +152,7 @@
<exec executable="${lpg_exe}">
<arg value="${grammar_file}"/>
<env key="LPG_TEMPLATE" path="${lpg_template}"/>
</exec>
<move overwrite="true" toDir="${output_dir}">

View file

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

View file

@ -959,26 +959,32 @@ type_name_specifier -- all identifiers of some kind
-- used for forward declaration and incomplete types
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 ./
| 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 ./
| '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 ./
elaborated_specifier_hook
::= $empty
-- there is currently no way to disambiguate identifier tokens
--enum_name
-- ::= identifier_token
enum_specifier
::= 'enum' '{' <openscope-ast> enumerator_list_opt '}'
::= 'enum' enum_specifier_hook '{' <openscope-ast> enumerator_list_opt '}'
/. $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 ./
enum_specifier_hook
::= $empty
enumerator_list
::= enumerator_definition
| enumerator_list ',' enumerator_definition
@ -1074,10 +1080,12 @@ init_declarator_complete
init_declarator
::= declarator
| declarator initializer
::= complete_declarator
| complete_declarator initializer
/. $Build consumeDeclaratorWithInitializer(true); $EndBuild ./
complete_declarator
::= declarator
declarator
::= direct_declarator
@ -1123,14 +1131,16 @@ array_modifier
ptr_operator
::= '*' <openscope-ast> cv_qualifier_seq_opt
::= pointer_hook '*' <openscope-ast> cv_qualifier_seq_opt
/. $Build consumePointer(); $EndBuild ./
| '&'
| pointer_hook '&'
/. $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 ./
pointer_hook
::= $empty
ptr_operator_seq
::= ptr_operator
| ptr_operator_seq ptr_operator
@ -1331,15 +1341,20 @@ class_specifier
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 ./
| 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 ./
| 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 ./
| 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 ./
composite_specifier_hook
::= $empty
class_name_suffix_hook
::= $empty
identifier_name_opt
::= identifier_name
@ -1388,10 +1403,13 @@ member_declaration_list_opt
member_declarator_list
::= member_declarator
| member_declarator_list ',' member_declarator
::= member_declarator_complete
| member_declarator_list ',' member_declarator_complete
member_declarator_complete
::= member_declarator
member_declarator
::= declarator
-- 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"
name="%language.name.c99">
</language>
<language
class="org.eclipse.cdt.core.dom.lrparser.gcc.GCCLanguage"
id="gcc"
name="LR GCC">
</language>
<language
class="org.eclipse.cdt.core.dom.lrparser.cpp.ISOCPPLanguage"
id="isocpp"
name="%language.name.isocpp">
</language>
<language
class="org.eclipse.cdt.core.dom.lrparser.gpp.GPPLanguage"
id="gpp"
name="LR GPP">
</language>
<pdomLinkageFactory
class="org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory"
id="c99"/>
<pdomLinkageFactory
class="org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory"
id="gcc"/>
<pdomLinkageFactory
class="org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory"
id="isocpp"/>
<pdomLinkageFactory
class="org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory"
id="gpp"/>
</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.gnu.c.GCCLanguage;
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.index.IIndex;
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.parser.CodeReader;
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.DebugUtil;
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.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;
@ -76,7 +85,7 @@ public abstract class BaseExtensibleLanguage extends AbstractLanguage {
*
* @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
// can fill in the preprocessor AST nodes.
IASTTranslationUnit tu = createASTTranslationUnit(index, preprocessor);
IASTTranslationUnit tu = getASTTranslationUnit(index, preprocessor);
IParser parser = getParser();
CPreprocessorAdapter.runCPreprocessor(preprocessor, parser, getTokenMap(), tu);
@ -182,7 +191,7 @@ public abstract class BaseExtensibleLanguage extends AbstractLanguage {
preprocessor.setContentAssistMode(offset);
IParser parser = getParser();
IASTTranslationUnit tu = createASTTranslationUnit(index, preprocessor);
IASTTranslationUnit tu = getASTTranslationUnit(index, preprocessor);
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.
*/
@ -226,6 +244,21 @@ public abstract class BaseExtensibleLanguage extends AbstractLanguage {
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
tokenCollector.addToken(createDummyToken());
preprocessor.getLocationResolver().setRootNode(tu);
org.eclipse.cdt.core.parser.IToken lastToken = null;
try {
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.
*/

View file

@ -18,6 +18,7 @@ import java.util.List;
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.IASTDeclSpecifier;
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
*/
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();
ICASTCompositeTypeSpecifier typeSpec = nodeFactory.newCompositeTypeSpecifier(key, name);

View file

@ -1136,6 +1136,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
// * declaration_specifiers ::= <openscope> type_name_declaration_specifiers
// */
public void consumeDeclarationSpecifiersTypeName() {
System.out.println("consumeDeclarationSpecifiersTypeName");
List<Object> topScope = astStack.closeScope();
// There's a name somewhere on the stack, find it
IASTName typeName = findFirstAndRemove(topScope, IASTName.class);
@ -1150,7 +1151,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
// the only way there could be a typename token
for(IToken token : parser.getRuleTokens()) {
if(token.getKind() == TK_typename) {
if(baseKind(token) == TK_typename) {
declSpec.setIsTypename(true);
break;
}
@ -1485,9 +1486,7 @@ public class CPPBuildASTParserAction extends BuildASTParserAction {
private void addCVQualifiersToPointer(IASTPointer pointer, List<Object> tokens) {
for(Object t : tokens) {
IToken token = (IToken) t;
int kind = baseKind(token);
switch(kind) {
switch(baseKind((IToken) t)) {
default : assert false;
case TK_const: pointer.setConst(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.IParser;
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.index.IIndex;
import org.eclipse.cdt.core.model.ICLanguageKeywords;
import org.eclipse.cdt.core.model.IContributedModelBuilder;
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.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.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.
@ -38,11 +31,7 @@ import org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory;
@SuppressWarnings("restriction")
public class C99Language extends BaseExtensibleLanguage {
public static final String PLUGIN_ID = "org.eclipse.cdt.core.lrparser"; //$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();
public static final String ID = "org.eclipse.cdt.core.lrparser.c99"; //$NON-NLS-1$
private static C99Language DEFAULT = new C99Language();
@ -58,12 +47,12 @@ public class C99Language extends BaseExtensibleLanguage {
@Override
protected IDOMTokenMap getTokenMap() {
return TOKEN_MAP;
return DOMToC99TokenMap.DEFAULT_MAP;
}
@Override
protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
return SCANNER_CONFIGURATION;
return ScannerExtensionConfiguration.createC();
}
public IContributedModelBuilder createModelBuilder(@SuppressWarnings("unused") ITranslationUnit tu) {
@ -83,34 +72,9 @@ public class C99Language extends BaseExtensibleLanguage {
return ParserLanguage.C;
}
private ICLanguageKeywords cLanguageKeywords = new CLanguageKeywords(ParserLanguage.C, SCANNER_CONFIGURATION);
@SuppressWarnings("unchecked")
@Override
public Object getAdapter(Class adapter) {
if(IPDOMLinkageFactory.class.equals(adapter))
return new PDOMCLinkageFactory();
if(ICLanguageKeywords.class.equals(adapter))
return cLanguageKeywords;
return super.getAdapter(adapter);
protected IASTTranslationUnit createASTTranslationUnit() {
return CNodeFactory.getDefault().newTranslationUnit();
}
/**
* 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.IParser;
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.index.IIndex;
import org.eclipse.cdt.core.model.ICLanguageKeywords;
import org.eclipse.cdt.core.model.IContributedModelBuilder;
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.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.pdom.dom.IPDOMLinkageFactory;
import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory;
/**
* ILanguage implementation for the C++ parser.
@ -38,17 +31,10 @@ import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory;
@SuppressWarnings("restriction")
public class ISOCPPLanguage extends BaseExtensibleLanguage {
public static final String PLUGIN_ID = "org.eclipse.cdt.core.lrparser"; //$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();
public static final String ID = "org.eclipse.cdt.core.lrparser.isocpp"; //$NON-NLS-1$
private static ISOCPPLanguage DEFAULT = new ISOCPPLanguage();
public static ISOCPPLanguage getDefault() {
return DEFAULT;
}
@ -60,12 +46,12 @@ public class ISOCPPLanguage extends BaseExtensibleLanguage {
@Override
protected IDOMTokenMap getTokenMap() {
return TOKEN_MAP;
return DOMToISOCPPTokenMap.DEFAULT_MAP;
}
@Override
protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
return SCANNER_CONFIGURATION;
return ScannerExtensionConfiguration.createCPP();
}
public IContributedModelBuilder createModelBuilder(@SuppressWarnings("unused") ITranslationUnit tu) {
@ -85,31 +71,12 @@ public class ISOCPPLanguage extends BaseExtensibleLanguage {
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.
*/
@Override
protected IASTTranslationUnit createASTTranslationUnit(IIndex index, IScanner preprocessor) {
IASTTranslationUnit tu = CPPNodeFactory.getDefault().newTranslationUnit();
tu.setIndex(index);
if(tu instanceof CPPASTTranslationUnit) {
((CPPASTTranslationUnit)tu).setLocationResolver(preprocessor.getLocationResolver());
}
return tu;
protected IASTTranslationUnit createASTTranslationUnit() {
return CPPNodeFactory.getDefault().newTranslationUnit();
}

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;
}
@ -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;
}
@ -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
//
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
// Rule 215: type_qualifier ::= type_qualifier_token
//
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 279: function_direct_abstract_declarator ::= ( )
//
case 279: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break;
}
//
// Rule 275: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
// Rule 280: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
//
case 275: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
case 280: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
}
//
// Rule 276: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
// Rule 281: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
//
case 276: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
case 281: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
}
//
// Rule 277: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
// Rule 282: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
//
case 277: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
case 282: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
}
//
// Rule 278: initializer ::= assignment_expression
// Rule 283: initializer ::= assignment_expression
//
case 278: { action. consumeInitializer(); break;
case 283: { action. consumeInitializer(); break;
}
//
// Rule 279: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list
// Rule 284: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list
//
case 279: { action. consumeInitializerList(); break;
case 284: { action. consumeInitializerList(); break;
}
//
// Rule 280: initializer ::= { <openscope-ast> }
// Rule 285: initializer ::= { <openscope-ast> }
//
case 280: { action. consumeInitializerList(); break;
case 285: { action. consumeInitializerList(); break;
}
//
// Rule 281: start_initializer_list ::= $Empty
// Rule 286: start_initializer_list ::= $Empty
//
case 281: { action. initializerListStart(); break;
case 286: { action. initializerListStart(); break;
}
//
// Rule 282: end_initializer_list ::= $Empty
// Rule 287: end_initializer_list ::= $Empty
//
case 282: { action. initializerListEnd(); break;
case 287: { action. initializerListEnd(); break;
}
//
// Rule 287: designated_initializer ::= <openscope-ast> designation = initializer
// Rule 292: designated_initializer ::= <openscope-ast> designation = initializer
//
case 287: { action. consumeInitializerDesignated(); break;
case 292: { action. consumeInitializerDesignated(); break;
}
//
// Rule 291: designator_base ::= [ constant_expression ]
// Rule 296: designator_base ::= [ constant_expression ]
//
case 291: { action. consumeDesignatorArray(); break;
case 296: { action. consumeDesignatorArray(); break;
}
//
// Rule 292: designator_base ::= . identifier_or_typedefname
// Rule 297: designator_base ::= . identifier_token
//
case 292: { action. consumeDesignatorField(); break;
case 297: { action. consumeDesignatorField(); break;
}
//
// Rule 293: designator ::= [ constant_expression ]
// Rule 298: designator ::= [ constant_expression ]
//
case 293: { action. consumeDesignatorArray(); break;
case 298: { action. consumeDesignatorArray(); break;
}
//
// Rule 294: designator ::= . identifier_or_typedefname
// Rule 299: designator ::= . identifier_token
//
case 294: { action. consumeDesignatorField(); break;
case 299: { action. consumeDesignatorField(); break;
}
//
// Rule 295: translation_unit ::= external_declaration_list
// Rule 300: translation_unit ::= external_declaration_list
//
case 295: { action. consumeTranslationUnit(); break;
case 300: { action. consumeTranslationUnit(); break;
}
//
// Rule 296: translation_unit ::= $Empty
// Rule 301: translation_unit ::= $Empty
//
case 296: { action. consumeTranslationUnit(); break;
case 301: { action. consumeTranslationUnit(); break;
}
//
// Rule 301: external_declaration ::= ;
// Rule 306: external_declaration ::= ;
//
case 301: { action. consumeDeclarationEmpty(); break;
case 306: { action. consumeDeclarationEmpty(); break;
}
//
// Rule 302: external_declaration ::= ERROR_TOKEN
// Rule 307: external_declaration ::= ERROR_TOKEN
//
case 302: { action. consumeDeclarationProblem(); break;
case 307: { action. consumeDeclarationProblem(); break;
}
//
// Rule 305: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
// Rule 310: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
//
case 305: { action. consumeFunctionDefinition(true); break;
case 310: { action. consumeFunctionDefinition(true); break;
}
//
// Rule 306: function_definition ::= <openscope-ast> function_declarator function_body
// Rule 311: function_definition ::= <openscope-ast> function_declarator function_body
//
case 306: { action. consumeFunctionDefinition(false); break;
case 311: { action. consumeFunctionDefinition(false); break;
}
//
// Rule 307: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
// Rule 312: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
//
case 307: { action. consumeFunctionDefinitionKnR(); break;
case 312: { action. consumeFunctionDefinitionKnR(); break;
}
//
// Rule 308: function_body ::= { }
// Rule 313: function_body ::= { }
//
case 308: { action. consumeStatementCompoundStatement(false); break;
case 313: { action. consumeStatementCompoundStatement(false); break;
}
//
// Rule 309: function_body ::= { <openscope-ast> block_item_list }
// Rule 314: function_body ::= { <openscope-ast> block_item_list }
//
case 309: { action. consumeStatementCompoundStatement(true); break;
case 314: { action. consumeStatementCompoundStatement(true); break;
}
//
// Rule 311: expression_parser_start ::= ERROR_TOKEN
// Rule 316: expression_parser_start ::= ERROR_TOKEN
//
case 311: { action. consumeExpressionProblem(); break;
case 316: { action. consumeExpressionProblem(); break;
}

View file

@ -15,68 +15,68 @@ package org.eclipse.cdt.internal.core.dom.lrparser.c99;
public interface C99ExpressionParsersym {
public final static int
TK_auto = 16,
TK_auto = 24,
TK_break = 81,
TK_case = 82,
TK_char = 29,
TK_char = 31,
TK_const = 6,
TK_continue = 83,
TK_default = 84,
TK_do = 85,
TK_double = 30,
TK_double = 32,
TK_else = 86,
TK_enum = 43,
TK_extern = 17,
TK_float = 31,
TK_enum = 44,
TK_extern = 25,
TK_float = 33,
TK_for = 87,
TK_goto = 88,
TK_if = 89,
TK_inline = 18,
TK_int = 32,
TK_long = 33,
TK_register = 19,
TK_inline = 26,
TK_int = 34,
TK_long = 35,
TK_register = 27,
TK_restrict = 7,
TK_return = 90,
TK_short = 34,
TK_signed = 35,
TK_sizeof = 20,
TK_static = 11,
TK_struct = 44,
TK_short = 36,
TK_signed = 37,
TK_sizeof = 16,
TK_static = 17,
TK_struct = 45,
TK_switch = 91,
TK_typedef = 21,
TK_union = 45,
TK_unsigned = 36,
TK_void = 37,
TK_typedef = 28,
TK_union = 46,
TK_unsigned = 38,
TK_void = 39,
TK_volatile = 8,
TK_while = 92,
TK__Bool = 38,
TK__Complex = 39,
TK__Imaginary = 40,
TK_integer = 22,
TK_floating = 23,
TK_charconst = 24,
TK_stringlit = 25,
TK__Bool = 40,
TK__Complex = 41,
TK__Imaginary = 42,
TK_integer = 18,
TK_floating = 19,
TK_charconst = 20,
TK_stringlit = 21,
TK_identifier = 1,
TK_Completion = 3,
TK_EndOfCompletion = 5,
TK_Invalid = 93,
TK_LeftBracket = 13,
TK_LeftBracket = 12,
TK_LeftParen = 2,
TK_LeftBrace = 26,
TK_LeftBrace = 13,
TK_Dot = 52,
TK_Arrow = 67,
TK_PlusPlus = 14,
TK_MinusMinus = 15,
TK_And = 12,
TK_And = 11,
TK_Star = 4,
TK_Plus = 9,
TK_Minus = 10,
TK_Tilde = 27,
TK_Bang = 28,
TK_Tilde = 22,
TK_Bang = 23,
TK_Slash = 53,
TK_Percent = 54,
TK_RightShift = 48,
TK_LeftShift = 49,
TK_RightShift = 47,
TK_LeftShift = 48,
TK_LT = 55,
TK_GT = 56,
TK_LE = 57,
@ -89,7 +89,7 @@ public interface C99ExpressionParsersym {
TK_OrOr = 68,
TK_Question = 69,
TK_Colon = 59,
TK_DotDotDot = 50,
TK_DotDotDot = 49,
TK_Assign = 60,
TK_StarAssign = 70,
TK_SlashAssign = 71,
@ -101,12 +101,12 @@ public interface C99ExpressionParsersym {
TK_AndAssign = 77,
TK_CaretAssign = 78,
TK_OrAssign = 79,
TK_Comma = 46,
TK_RightBracket = 51,
TK_RightParen = 41,
TK_RightBrace = 42,
TK_Comma = 30,
TK_RightBracket = 50,
TK_RightParen = 29,
TK_RightBrace = 43,
TK_SemiColon = 66,
TK_ERROR_TOKEN = 47,
TK_ERROR_TOKEN = 51,
TK_EOF_TOKEN = 80;
public final static String orderedTerminalSymbols[] = {
@ -121,24 +121,26 @@ public interface C99ExpressionParsersym {
"volatile",
"Plus",
"Minus",
"static",
"And",
"LeftBracket",
"LeftBrace",
"PlusPlus",
"MinusMinus",
"auto",
"extern",
"inline",
"register",
"sizeof",
"typedef",
"static",
"integer",
"floating",
"charconst",
"stringlit",
"LeftBrace",
"Tilde",
"Bang",
"auto",
"extern",
"inline",
"register",
"typedef",
"RightParen",
"Comma",
"char",
"double",
"float",
@ -151,17 +153,15 @@ public interface C99ExpressionParsersym {
"_Bool",
"_Complex",
"_Imaginary",
"RightParen",
"RightBrace",
"enum",
"struct",
"union",
"Comma",
"ERROR_TOKEN",
"RightShift",
"LeftShift",
"DotDotDot",
"RightBracket",
"ERROR_TOKEN",
"Dot",
"Slash",
"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;
}
@ -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;
}
@ -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
//
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
// Rule 214: type_qualifier ::= type_qualifier_token
//
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 278: function_direct_abstract_declarator ::= ( )
//
case 278: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break;
}
//
// Rule 274: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
// Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
//
case 274: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
case 279: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
}
//
// Rule 275: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
// Rule 280: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
//
case 275: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
case 280: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
}
//
// Rule 276: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
// Rule 281: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
//
case 276: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
case 281: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
}
//
// Rule 277: initializer ::= assignment_expression
// Rule 282: initializer ::= assignment_expression
//
case 277: { action. consumeInitializer(); break;
case 282: { action. consumeInitializer(); break;
}
//
// Rule 278: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list
// Rule 283: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list
//
case 278: { action. consumeInitializerList(); break;
case 283: { action. consumeInitializerList(); break;
}
//
// Rule 279: initializer ::= { <openscope-ast> }
// Rule 284: initializer ::= { <openscope-ast> }
//
case 279: { action. consumeInitializerList(); break;
case 284: { action. consumeInitializerList(); break;
}
//
// Rule 280: start_initializer_list ::= $Empty
// Rule 285: start_initializer_list ::= $Empty
//
case 280: { action. initializerListStart(); break;
case 285: { action. initializerListStart(); break;
}
//
// Rule 281: end_initializer_list ::= $Empty
// Rule 286: end_initializer_list ::= $Empty
//
case 281: { action. initializerListEnd(); break;
case 286: { action. initializerListEnd(); break;
}
//
// Rule 286: designated_initializer ::= <openscope-ast> designation = initializer
// Rule 291: designated_initializer ::= <openscope-ast> designation = initializer
//
case 286: { action. consumeInitializerDesignated(); break;
case 291: { action. consumeInitializerDesignated(); break;
}
//
// Rule 290: designator_base ::= [ constant_expression ]
// Rule 295: designator_base ::= [ constant_expression ]
//
case 290: { action. consumeDesignatorArray(); break;
case 295: { action. consumeDesignatorArray(); break;
}
//
// Rule 291: designator_base ::= . identifier_or_typedefname
// Rule 296: designator_base ::= . identifier_token
//
case 291: { action. consumeDesignatorField(); break;
case 296: { action. consumeDesignatorField(); break;
}
//
// Rule 292: designator ::= [ constant_expression ]
// Rule 297: designator ::= [ constant_expression ]
//
case 292: { action. consumeDesignatorArray(); break;
case 297: { action. consumeDesignatorArray(); break;
}
//
// Rule 293: designator ::= . identifier_or_typedefname
// Rule 298: designator ::= . identifier_token
//
case 293: { action. consumeDesignatorField(); break;
case 298: { action. consumeDesignatorField(); break;
}
//
// Rule 294: translation_unit ::= external_declaration_list
// Rule 299: translation_unit ::= external_declaration_list
//
case 294: { action. consumeTranslationUnit(); break;
case 299: { action. consumeTranslationUnit(); break;
}
//
// Rule 295: translation_unit ::= $Empty
// Rule 300: translation_unit ::= $Empty
//
case 295: { action. consumeTranslationUnit(); break;
case 300: { action. consumeTranslationUnit(); break;
}
//
// Rule 300: external_declaration ::= ;
// Rule 305: external_declaration ::= ;
//
case 300: { action. consumeDeclarationEmpty(); break;
case 305: { action. consumeDeclarationEmpty(); break;
}
//
// Rule 301: external_declaration ::= ERROR_TOKEN
// Rule 306: external_declaration ::= ERROR_TOKEN
//
case 301: { action. consumeDeclarationProblem(); break;
case 306: { action. consumeDeclarationProblem(); break;
}
//
// Rule 304: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
// Rule 309: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
//
case 304: { action. consumeFunctionDefinition(true); break;
case 309: { action. consumeFunctionDefinition(true); break;
}
//
// Rule 305: function_definition ::= <openscope-ast> function_declarator function_body
// Rule 310: function_definition ::= <openscope-ast> function_declarator function_body
//
case 305: { action. consumeFunctionDefinition(false); break;
case 310: { action. consumeFunctionDefinition(false); break;
}
//
// Rule 306: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
// Rule 311: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
//
case 306: { action. consumeFunctionDefinitionKnR(); break;
case 311: { action. consumeFunctionDefinitionKnR(); break;
}
//
// Rule 307: function_body ::= { }
// Rule 312: function_body ::= { }
//
case 307: { action. consumeStatementCompoundStatement(false); break;
case 312: { action. consumeStatementCompoundStatement(false); break;
}
//
// Rule 308: function_body ::= { <openscope-ast> block_item_list }
// Rule 313: function_body ::= { <openscope-ast> block_item_list }
//
case 308: { action. consumeStatementCompoundStatement(true); break;
case 313: { action. consumeStatementCompoundStatement(true); break;
}
//
// Rule 310: no_cast_start ::= ERROR_TOKEN
// Rule 315: no_cast_start ::= ERROR_TOKEN
//
case 310: { action. consumeExpressionProblem(); break;
case 315: { action. consumeExpressionProblem(); break;
}

View file

@ -15,43 +15,43 @@ package org.eclipse.cdt.internal.core.dom.lrparser.c99;
public interface C99NoCastExpressionParsersym {
public final static int
TK_auto = 13,
TK_auto = 17,
TK_break = 81,
TK_case = 82,
TK_char = 29,
TK_char = 31,
TK_const = 6,
TK_continue = 83,
TK_default = 84,
TK_do = 85,
TK_double = 30,
TK_double = 32,
TK_else = 86,
TK_enum = 43,
TK_extern = 14,
TK_float = 31,
TK_enum = 44,
TK_extern = 18,
TK_float = 33,
TK_for = 87,
TK_goto = 88,
TK_if = 89,
TK_inline = 15,
TK_int = 32,
TK_long = 33,
TK_register = 16,
TK_inline = 19,
TK_int = 34,
TK_long = 35,
TK_register = 20,
TK_restrict = 7,
TK_return = 90,
TK_short = 34,
TK_signed = 35,
TK_sizeof = 22,
TK_static = 9,
TK_struct = 44,
TK_short = 36,
TK_signed = 37,
TK_sizeof = 21,
TK_static = 12,
TK_struct = 45,
TK_switch = 91,
TK_typedef = 17,
TK_union = 45,
TK_unsigned = 36,
TK_void = 37,
TK_typedef = 22,
TK_union = 46,
TK_unsigned = 38,
TK_void = 39,
TK_volatile = 8,
TK_while = 92,
TK__Bool = 38,
TK__Complex = 39,
TK__Imaginary = 40,
TK__Bool = 40,
TK__Complex = 41,
TK__Imaginary = 42,
TK_integer = 23,
TK_floating = 24,
TK_charconst = 25,
@ -60,23 +60,23 @@ public interface C99NoCastExpressionParsersym {
TK_Completion = 3,
TK_EndOfCompletion = 5,
TK_Invalid = 93,
TK_LeftBracket = 10,
TK_LeftBracket = 9,
TK_LeftParen = 2,
TK_LeftBrace = 19,
TK_LeftBrace = 13,
TK_Dot = 52,
TK_Arrow = 67,
TK_PlusPlus = 20,
TK_MinusMinus = 21,
TK_And = 18,
TK_PlusPlus = 15,
TK_MinusMinus = 16,
TK_And = 14,
TK_Star = 4,
TK_Plus = 11,
TK_Minus = 12,
TK_Plus = 10,
TK_Minus = 11,
TK_Tilde = 27,
TK_Bang = 28,
TK_Slash = 53,
TK_Percent = 54,
TK_RightShift = 48,
TK_LeftShift = 49,
TK_RightShift = 47,
TK_LeftShift = 48,
TK_LT = 55,
TK_GT = 56,
TK_LE = 57,
@ -89,7 +89,7 @@ public interface C99NoCastExpressionParsersym {
TK_OrOr = 68,
TK_Question = 69,
TK_Colon = 59,
TK_DotDotDot = 50,
TK_DotDotDot = 49,
TK_Assign = 60,
TK_StarAssign = 70,
TK_SlashAssign = 71,
@ -101,12 +101,12 @@ public interface C99NoCastExpressionParsersym {
TK_AndAssign = 77,
TK_CaretAssign = 78,
TK_OrAssign = 79,
TK_Comma = 46,
TK_RightBracket = 51,
TK_RightParen = 41,
TK_RightBrace = 42,
TK_Comma = 30,
TK_RightBracket = 50,
TK_RightParen = 29,
TK_RightBrace = 43,
TK_SemiColon = 66,
TK_ERROR_TOKEN = 47,
TK_ERROR_TOKEN = 51,
TK_EOF_TOKEN = 80;
public final static String orderedTerminalSymbols[] = {
@ -119,26 +119,28 @@ public interface C99NoCastExpressionParsersym {
"const",
"restrict",
"volatile",
"static",
"LeftBracket",
"Plus",
"Minus",
"static",
"LeftBrace",
"And",
"PlusPlus",
"MinusMinus",
"auto",
"extern",
"inline",
"register",
"typedef",
"And",
"LeftBrace",
"PlusPlus",
"MinusMinus",
"sizeof",
"typedef",
"integer",
"floating",
"charconst",
"stringlit",
"Tilde",
"Bang",
"RightParen",
"Comma",
"char",
"double",
"float",
@ -151,17 +153,15 @@ public interface C99NoCastExpressionParsersym {
"_Bool",
"_Complex",
"_Imaginary",
"RightParen",
"RightBrace",
"enum",
"struct",
"union",
"Comma",
"ERROR_TOKEN",
"RightShift",
"LeftShift",
"DotDotDot",
"RightBracket",
"ERROR_TOKEN",
"Dot",
"Slash",
"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;
}
@ -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;
}
@ -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
//
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
// Rule 215: type_qualifier ::= type_qualifier_token
//
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 279: function_direct_abstract_declarator ::= ( )
//
case 279: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break;
}
//
// Rule 275: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
// Rule 280: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
//
case 275: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
case 280: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
}
//
// Rule 276: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
// Rule 281: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
//
case 276: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
case 281: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
}
//
// Rule 277: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
// Rule 282: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
//
case 277: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
case 282: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
}
//
// Rule 278: initializer ::= assignment_expression
// Rule 283: initializer ::= assignment_expression
//
case 278: { action. consumeInitializer(); break;
case 283: { action. consumeInitializer(); break;
}
//
// Rule 279: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list
// Rule 284: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list
//
case 279: { action. consumeInitializerList(); break;
case 284: { action. consumeInitializerList(); break;
}
//
// Rule 280: initializer ::= { <openscope-ast> }
// Rule 285: initializer ::= { <openscope-ast> }
//
case 280: { action. consumeInitializerList(); break;
case 285: { action. consumeInitializerList(); break;
}
//
// Rule 281: start_initializer_list ::= $Empty
// Rule 286: start_initializer_list ::= $Empty
//
case 281: { action. initializerListStart(); break;
case 286: { action. initializerListStart(); break;
}
//
// Rule 282: end_initializer_list ::= $Empty
// Rule 287: end_initializer_list ::= $Empty
//
case 282: { action. initializerListEnd(); break;
case 287: { action. initializerListEnd(); break;
}
//
// Rule 287: designated_initializer ::= <openscope-ast> designation = initializer
// Rule 292: designated_initializer ::= <openscope-ast> designation = initializer
//
case 287: { action. consumeInitializerDesignated(); break;
case 292: { action. consumeInitializerDesignated(); break;
}
//
// Rule 291: designator_base ::= [ constant_expression ]
// Rule 296: designator_base ::= [ constant_expression ]
//
case 291: { action. consumeDesignatorArray(); break;
case 296: { action. consumeDesignatorArray(); break;
}
//
// Rule 292: designator_base ::= . identifier_or_typedefname
// Rule 297: designator_base ::= . identifier_token
//
case 292: { action. consumeDesignatorField(); break;
case 297: { action. consumeDesignatorField(); break;
}
//
// Rule 293: designator ::= [ constant_expression ]
// Rule 298: designator ::= [ constant_expression ]
//
case 293: { action. consumeDesignatorArray(); break;
case 298: { action. consumeDesignatorArray(); break;
}
//
// Rule 294: designator ::= . identifier_or_typedefname
// Rule 299: designator ::= . identifier_token
//
case 294: { action. consumeDesignatorField(); break;
case 299: { action. consumeDesignatorField(); break;
}
//
// Rule 295: translation_unit ::= external_declaration_list
// Rule 300: translation_unit ::= external_declaration_list
//
case 295: { action. consumeTranslationUnit(); break;
case 300: { action. consumeTranslationUnit(); break;
}
//
// Rule 296: translation_unit ::= $Empty
// Rule 301: translation_unit ::= $Empty
//
case 296: { action. consumeTranslationUnit(); break;
case 301: { action. consumeTranslationUnit(); break;
}
//
// Rule 301: external_declaration ::= ;
// Rule 306: external_declaration ::= ;
//
case 301: { action. consumeDeclarationEmpty(); break;
case 306: { action. consumeDeclarationEmpty(); break;
}
//
// Rule 302: external_declaration ::= ERROR_TOKEN
// Rule 307: external_declaration ::= ERROR_TOKEN
//
case 302: { action. consumeDeclarationProblem(); break;
case 307: { action. consumeDeclarationProblem(); break;
}
//
// Rule 305: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
// Rule 310: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
//
case 305: { action. consumeFunctionDefinition(true); break;
case 310: { action. consumeFunctionDefinition(true); break;
}
//
// Rule 306: function_definition ::= <openscope-ast> function_declarator function_body
// Rule 311: function_definition ::= <openscope-ast> function_declarator function_body
//
case 306: { action. consumeFunctionDefinition(false); break;
case 311: { action. consumeFunctionDefinition(false); break;
}
//
// Rule 307: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
// Rule 312: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
//
case 307: { action. consumeFunctionDefinitionKnR(); break;
case 312: { action. consumeFunctionDefinitionKnR(); break;
}
//
// Rule 308: function_body ::= { }
// Rule 313: function_body ::= { }
//
case 308: { action. consumeStatementCompoundStatement(false); break;
case 313: { action. consumeStatementCompoundStatement(false); break;
}
//
// Rule 309: function_body ::= { <openscope-ast> block_item_list }
// Rule 314: function_body ::= { <openscope-ast> block_item_list }
//
case 309: { action. consumeStatementCompoundStatement(true); break;
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 final static int
TK_auto = 24,
TK_break = 43,
TK_case = 44,
TK_char = 30,
TK_break = 31,
TK_case = 32,
TK_char = 42,
TK_const = 19,
TK_continue = 45,
TK_default = 46,
TK_do = 47,
TK_double = 31,
TK_continue = 33,
TK_default = 34,
TK_do = 35,
TK_double = 43,
TK_else = 79,
TK_enum = 48,
TK_enum = 54,
TK_extern = 25,
TK_float = 32,
TK_for = 49,
TK_goto = 50,
TK_if = 51,
TK_float = 44,
TK_for = 36,
TK_goto = 37,
TK_if = 38,
TK_inline = 26,
TK_int = 33,
TK_long = 34,
TK_int = 45,
TK_long = 46,
TK_register = 27,
TK_restrict = 20,
TK_return = 52,
TK_short = 35,
TK_signed = 36,
TK_return = 39,
TK_short = 47,
TK_signed = 48,
TK_sizeof = 12,
TK_static = 23,
TK_struct = 53,
TK_switch = 54,
TK_struct = 55,
TK_switch = 40,
TK_typedef = 28,
TK_union = 55,
TK_unsigned = 37,
TK_void = 38,
TK_union = 56,
TK_unsigned = 49,
TK_void = 50,
TK_volatile = 21,
TK_while = 39,
TK__Bool = 40,
TK__Complex = 41,
TK__Imaginary = 42,
TK_while = 30,
TK__Bool = 51,
TK__Complex = 52,
TK__Imaginary = 53,
TK_integer = 13,
TK_floating = 14,
TK_charconst = 15,
@ -60,7 +60,7 @@ public interface C99Parsersym {
TK_Completion = 3,
TK_EndOfCompletion = 4,
TK_Invalid = 93,
TK_LeftBracket = 56,
TK_LeftBracket = 41,
TK_LeftParen = 2,
TK_LeftBrace = 6,
TK_Dot = 66,
@ -101,10 +101,10 @@ public interface C99Parsersym {
TK_AndAssign = 90,
TK_CaretAssign = 91,
TK_OrAssign = 92,
TK_Comma = 58,
TK_Comma = 57,
TK_RightBracket = 65,
TK_RightParen = 59,
TK_RightBrace = 57,
TK_RightBrace = 58,
TK_SemiColon = 22,
TK_ERROR_TOKEN = 29,
TK_EOF_TOKEN = 73;
@ -140,6 +140,18 @@ public interface C99Parsersym {
"register",
"typedef",
"ERROR_TOKEN",
"while",
"break",
"case",
"continue",
"default",
"do",
"for",
"goto",
"if",
"return",
"switch",
"LeftBracket",
"char",
"double",
"float",
@ -149,26 +161,14 @@ public interface C99Parsersym {
"signed",
"unsigned",
"void",
"while",
"_Bool",
"_Complex",
"_Imaginary",
"break",
"case",
"continue",
"default",
"do",
"enum",
"for",
"goto",
"if",
"return",
"struct",
"switch",
"union",
"LeftBracket",
"RightBrace",
"Comma",
"RightBrace",
"RightParen",
"Colon",
"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;
}
@ -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;
}
@ -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
//
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
// Rule 214: type_qualifier ::= type_qualifier_token
//
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 278: function_direct_abstract_declarator ::= ( )
//
case 278: { action. consumeDirectDeclaratorFunctionDeclarator(false, false); break;
}
//
// Rule 274: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
// Rule 279: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( )
//
case 274: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
case 279: { action. consumeDirectDeclaratorFunctionDeclarator(true, false); break;
}
//
// Rule 275: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
// Rule 280: function_direct_abstract_declarator ::= ( <openscope-ast> parameter_type_list )
//
case 275: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
case 280: { action. consumeDirectDeclaratorFunctionDeclarator(false, true); break;
}
//
// Rule 276: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
// Rule 281: function_direct_abstract_declarator ::= basic_direct_abstract_declarator ( <openscope-ast> parameter_type_list )
//
case 276: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
case 281: { action. consumeDirectDeclaratorFunctionDeclarator(true, true); break;
}
//
// Rule 277: initializer ::= assignment_expression
// Rule 282: initializer ::= assignment_expression
//
case 277: { action. consumeInitializer(); break;
case 282: { action. consumeInitializer(); break;
}
//
// Rule 278: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list
// Rule 283: initializer ::= start_initializer_list { <openscope-ast> initializer_list comma_opt } end_initializer_list
//
case 278: { action. consumeInitializerList(); break;
case 283: { action. consumeInitializerList(); break;
}
//
// Rule 279: initializer ::= { <openscope-ast> }
// Rule 284: initializer ::= { <openscope-ast> }
//
case 279: { action. consumeInitializerList(); break;
case 284: { action. consumeInitializerList(); break;
}
//
// Rule 280: start_initializer_list ::= $Empty
// Rule 285: start_initializer_list ::= $Empty
//
case 280: { action. initializerListStart(); break;
case 285: { action. initializerListStart(); break;
}
//
// Rule 281: end_initializer_list ::= $Empty
// Rule 286: end_initializer_list ::= $Empty
//
case 281: { action. initializerListEnd(); break;
case 286: { action. initializerListEnd(); break;
}
//
// Rule 286: designated_initializer ::= <openscope-ast> designation = initializer
// Rule 291: designated_initializer ::= <openscope-ast> designation = initializer
//
case 286: { action. consumeInitializerDesignated(); break;
case 291: { action. consumeInitializerDesignated(); break;
}
//
// Rule 290: designator_base ::= [ constant_expression ]
// Rule 295: designator_base ::= [ constant_expression ]
//
case 290: { action. consumeDesignatorArray(); break;
case 295: { action. consumeDesignatorArray(); break;
}
//
// Rule 291: designator_base ::= . identifier_or_typedefname
// Rule 296: designator_base ::= . identifier_token
//
case 291: { action. consumeDesignatorField(); break;
case 296: { action. consumeDesignatorField(); break;
}
//
// Rule 292: designator ::= [ constant_expression ]
// Rule 297: designator ::= [ constant_expression ]
//
case 292: { action. consumeDesignatorArray(); break;
case 297: { action. consumeDesignatorArray(); break;
}
//
// Rule 293: designator ::= . identifier_or_typedefname
// Rule 298: designator ::= . identifier_token
//
case 293: { action. consumeDesignatorField(); break;
case 298: { action. consumeDesignatorField(); break;
}
//
// Rule 294: translation_unit ::= external_declaration_list
// Rule 299: translation_unit ::= external_declaration_list
//
case 294: { action. consumeTranslationUnit(); break;
case 299: { action. consumeTranslationUnit(); break;
}
//
// Rule 295: translation_unit ::= $Empty
// Rule 300: translation_unit ::= $Empty
//
case 295: { action. consumeTranslationUnit(); break;
case 300: { action. consumeTranslationUnit(); break;
}
//
// Rule 300: external_declaration ::= ;
// Rule 305: external_declaration ::= ;
//
case 300: { action. consumeDeclarationEmpty(); break;
case 305: { action. consumeDeclarationEmpty(); break;
}
//
// Rule 301: external_declaration ::= ERROR_TOKEN
// Rule 306: external_declaration ::= ERROR_TOKEN
//
case 301: { action. consumeDeclarationProblem(); break;
case 306: { action. consumeDeclarationProblem(); break;
}
//
// Rule 304: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
// Rule 309: function_definition ::= declaration_specifiers <openscope-ast> function_declarator function_body
//
case 304: { action. consumeFunctionDefinition(true); break;
case 309: { action. consumeFunctionDefinition(true); break;
}
//
// Rule 305: function_definition ::= <openscope-ast> function_declarator function_body
// Rule 310: function_definition ::= <openscope-ast> function_declarator function_body
//
case 305: { action. consumeFunctionDefinition(false); break;
case 310: { action. consumeFunctionDefinition(false); break;
}
//
// Rule 306: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
// Rule 311: function_definition ::= declaration_specifiers <openscope-ast> knr_function_declarator <openscope-ast> declaration_list compound_statement
//
case 306: { action. consumeFunctionDefinitionKnR(); break;
case 311: { action. consumeFunctionDefinitionKnR(); break;
}
//
// Rule 307: function_body ::= { }
// Rule 312: function_body ::= { }
//
case 307: { action. consumeStatementCompoundStatement(false); break;
case 312: { action. consumeStatementCompoundStatement(false); break;
}
//
// Rule 308: function_body ::= { <openscope-ast> block_item_list }
// Rule 313: function_body ::= { <openscope-ast> block_item_list }
//
case 308: { action. consumeStatementCompoundStatement(true); break;
case 313: { action. consumeStatementCompoundStatement(true); break;
}
//
// Rule 310: no_sizeof_type_name_start ::= ERROR_TOKEN
// Rule 315: no_sizeof_type_name_start ::= ERROR_TOKEN
//
case 310: { action. consumeExpressionProblem(); break;
case 315: { action. consumeExpressionProblem(); break;
}

View file

@ -15,68 +15,68 @@ package org.eclipse.cdt.internal.core.dom.lrparser.c99;
public interface C99SizeofExpressionParsersym {
public final static int
TK_auto = 14,
TK_auto = 24,
TK_break = 81,
TK_case = 82,
TK_char = 29,
TK_char = 31,
TK_const = 6,
TK_continue = 83,
TK_default = 84,
TK_do = 85,
TK_double = 30,
TK_double = 32,
TK_else = 86,
TK_enum = 43,
TK_extern = 15,
TK_float = 31,
TK_enum = 44,
TK_extern = 25,
TK_float = 33,
TK_for = 87,
TK_goto = 88,
TK_if = 89,
TK_inline = 16,
TK_int = 32,
TK_long = 33,
TK_register = 17,
TK_inline = 26,
TK_int = 34,
TK_long = 35,
TK_register = 27,
TK_restrict = 7,
TK_return = 90,
TK_short = 34,
TK_signed = 35,
TK_sizeof = 21,
TK_static = 9,
TK_struct = 44,
TK_short = 36,
TK_signed = 37,
TK_sizeof = 17,
TK_static = 13,
TK_struct = 45,
TK_switch = 91,
TK_typedef = 18,
TK_union = 45,
TK_unsigned = 36,
TK_void = 37,
TK_typedef = 28,
TK_union = 46,
TK_unsigned = 38,
TK_void = 39,
TK_volatile = 8,
TK_while = 92,
TK__Bool = 38,
TK__Complex = 39,
TK__Imaginary = 40,
TK_integer = 22,
TK_floating = 23,
TK_charconst = 24,
TK_stringlit = 25,
TK__Bool = 40,
TK__Complex = 41,
TK__Imaginary = 42,
TK_integer = 18,
TK_floating = 19,
TK_charconst = 20,
TK_stringlit = 21,
TK_identifier = 1,
TK_Completion = 3,
TK_EndOfCompletion = 5,
TK_Invalid = 93,
TK_LeftBracket = 12,
TK_LeftBracket = 11,
TK_LeftParen = 2,
TK_LeftBrace = 26,
TK_LeftBrace = 14,
TK_Dot = 52,
TK_Arrow = 67,
TK_PlusPlus = 19,
TK_MinusMinus = 20,
TK_And = 13,
TK_PlusPlus = 15,
TK_MinusMinus = 16,
TK_And = 12,
TK_Star = 4,
TK_Plus = 10,
TK_Minus = 11,
TK_Tilde = 27,
TK_Bang = 28,
TK_Plus = 9,
TK_Minus = 10,
TK_Tilde = 22,
TK_Bang = 23,
TK_Slash = 53,
TK_Percent = 54,
TK_RightShift = 48,
TK_LeftShift = 49,
TK_RightShift = 47,
TK_LeftShift = 48,
TK_LT = 55,
TK_GT = 56,
TK_LE = 57,
@ -89,7 +89,7 @@ public interface C99SizeofExpressionParsersym {
TK_OrOr = 68,
TK_Question = 69,
TK_Colon = 59,
TK_DotDotDot = 50,
TK_DotDotDot = 49,
TK_Assign = 60,
TK_StarAssign = 70,
TK_SlashAssign = 71,
@ -101,12 +101,12 @@ public interface C99SizeofExpressionParsersym {
TK_AndAssign = 77,
TK_CaretAssign = 78,
TK_OrAssign = 79,
TK_Comma = 46,
TK_RightBracket = 51,
TK_RightParen = 41,
TK_RightBrace = 42,
TK_Comma = 30,
TK_RightBracket = 50,
TK_RightParen = 29,
TK_RightBrace = 43,
TK_SemiColon = 66,
TK_ERROR_TOKEN = 47,
TK_ERROR_TOKEN = 51,
TK_EOF_TOKEN = 80;
public final static String orderedTerminalSymbols[] = {
@ -119,16 +119,12 @@ public interface C99SizeofExpressionParsersym {
"const",
"restrict",
"volatile",
"static",
"Plus",
"Minus",
"LeftBracket",
"And",
"auto",
"extern",
"inline",
"register",
"typedef",
"static",
"LeftBrace",
"PlusPlus",
"MinusMinus",
"sizeof",
@ -136,9 +132,15 @@ public interface C99SizeofExpressionParsersym {
"floating",
"charconst",
"stringlit",
"LeftBrace",
"Tilde",
"Bang",
"auto",
"extern",
"inline",
"register",
"typedef",
"RightParen",
"Comma",
"char",
"double",
"float",
@ -151,17 +153,15 @@ public interface C99SizeofExpressionParsersym {
"_Bool",
"_Complex",
"_Imaginary",
"RightParen",
"RightBrace",
"enum",
"struct",
"union",
"Comma",
"ERROR_TOKEN",
"RightShift",
"LeftShift",
"DotDotDot",
"RightBracket",
"ERROR_TOKEN",
"Dot",
"Slash",
"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;
}
//
// 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;
}
//
// 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;
}
//
// 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_struct = 58,
TK_switch = 86,
TK_template = 55,
TK_this = 48,
TK_template = 48,
TK_this = 49,
TK_throw = 61,
TK_try = 75,
TK_true = 49,
TK_true = 50,
TK_typedef = 36,
TK_typeid = 50,
TK_typeid = 51,
TK_typename = 10,
TK_union = 59,
TK_unsigned = 19,
@ -78,9 +78,9 @@ public interface CPPExpressionParsersym {
TK_volatile = 24,
TK_wchar_t = 21,
TK_while = 76,
TK_integer = 51,
TK_floating = 52,
TK_charconst = 53,
TK_integer = 52,
TK_floating = 53,
TK_charconst = 54,
TK_stringlit = 39,
TK_identifier = 1,
TK_Completion = 2,
@ -136,7 +136,7 @@ public interface CPPExpressionParsersym {
TK_SemiColon = 27,
TK_LeftBrace = 68,
TK_ERROR_TOKEN = 62,
TK_0 = 54,
TK_0 = 55,
TK_EOF_TOKEN = 121;
public final static String orderedTerminalSymbols[] = {
@ -188,6 +188,7 @@ public interface CPPExpressionParsersym {
"reinterpret_cast",
"sizeof",
"static_cast",
"template",
"this",
"true",
"typeid",
@ -195,7 +196,6 @@ public interface CPPExpressionParsersym {
"floating",
"charconst",
"0",
"template",
"LT",
"enum",
"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;
}
//
// 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;
}
//
// 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;
}
//
// 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_struct = 58,
TK_switch = 86,
TK_template = 55,
TK_this = 48,
TK_template = 48,
TK_this = 49,
TK_throw = 61,
TK_try = 75,
TK_true = 49,
TK_true = 50,
TK_typedef = 36,
TK_typeid = 50,
TK_typeid = 51,
TK_typename = 10,
TK_union = 59,
TK_unsigned = 19,
@ -78,9 +78,9 @@ public interface CPPNoCastExpressionParsersym {
TK_volatile = 24,
TK_wchar_t = 21,
TK_while = 76,
TK_integer = 51,
TK_floating = 52,
TK_charconst = 53,
TK_integer = 52,
TK_floating = 53,
TK_charconst = 54,
TK_stringlit = 39,
TK_identifier = 1,
TK_Completion = 2,
@ -136,7 +136,7 @@ public interface CPPNoCastExpressionParsersym {
TK_SemiColon = 27,
TK_LeftBrace = 68,
TK_ERROR_TOKEN = 62,
TK_0 = 54,
TK_0 = 55,
TK_EOF_TOKEN = 121;
public final static String orderedTerminalSymbols[] = {
@ -188,6 +188,7 @@ public interface CPPNoCastExpressionParsersym {
"reinterpret_cast",
"sizeof",
"static_cast",
"template",
"this",
"true",
"typeid",
@ -195,7 +196,6 @@ public interface CPPNoCastExpressionParsersym {
"floating",
"charconst",
"0",
"template",
"LT",
"enum",
"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;
}
//
// 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;
}
//
// 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;
}
//
// 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_continue = 79,
TK_default = 80,
TK_delete = 67,
TK_delete = 66,
TK_do = 81,
TK_double = 13,
TK_dynamic_cast = 43,
@ -47,7 +47,7 @@ public interface CPPNoFunctionDeclaratorParsersym {
TK_long = 16,
TK_mutable = 31,
TK_namespace = 60,
TK_new = 68,
TK_new = 67,
TK_operator = 7,
TK_private = 103,
TK_protected = 104,
@ -134,7 +134,7 @@ public interface CPPNoFunctionDeclaratorParsersym {
TK_RightParen = 74,
TK_RightBrace = 72,
TK_SemiColon = 25,
TK_LeftBrace = 66,
TK_LeftBrace = 68,
TK_ERROR_TOKEN = 61,
TK_0 = 56,
TK_EOF_TOKEN = 121;
@ -206,9 +206,9 @@ public interface CPPNoFunctionDeclaratorParsersym {
"using",
"LeftBracket",
"asm",
"LeftBrace",
"delete",
"new",
"LeftBrace",
"GT",
"Assign",
"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;
}
//
// 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;
}
//
// 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;
}
//
// 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_continue = 79,
TK_default = 80,
TK_delete = 67,
TK_delete = 66,
TK_do = 81,
TK_double = 13,
TK_dynamic_cast = 44,
@ -47,7 +47,7 @@ public interface CPPParsersym {
TK_long = 16,
TK_mutable = 31,
TK_namespace = 60,
TK_new = 68,
TK_new = 67,
TK_operator = 7,
TK_private = 103,
TK_protected = 104,
@ -134,7 +134,7 @@ public interface CPPParsersym {
TK_RightParen = 74,
TK_RightBrace = 72,
TK_SemiColon = 25,
TK_LeftBrace = 66,
TK_LeftBrace = 68,
TK_ERROR_TOKEN = 62,
TK_0 = 59,
TK_EOF_TOKEN = 121;
@ -206,9 +206,9 @@ public interface CPPParsersym {
"throw",
"asm",
"LeftBracket",
"LeftBrace",
"delete",
"new",
"LeftBrace",
"GT",
"Assign",
"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;
}
//
// 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;
}
//
// 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;
}
//
// 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_struct = 58,
TK_switch = 86,
TK_template = 55,
TK_this = 48,
TK_template = 48,
TK_this = 49,
TK_throw = 61,
TK_try = 75,
TK_true = 49,
TK_true = 50,
TK_typedef = 36,
TK_typeid = 50,
TK_typeid = 51,
TK_typename = 10,
TK_union = 59,
TK_unsigned = 19,
@ -78,9 +78,9 @@ public interface CPPSizeofExpressionParsersym {
TK_volatile = 24,
TK_wchar_t = 21,
TK_while = 76,
TK_integer = 51,
TK_floating = 52,
TK_charconst = 53,
TK_integer = 52,
TK_floating = 53,
TK_charconst = 54,
TK_stringlit = 39,
TK_identifier = 1,
TK_Completion = 2,
@ -136,7 +136,7 @@ public interface CPPSizeofExpressionParsersym {
TK_SemiColon = 27,
TK_LeftBrace = 68,
TK_ERROR_TOKEN = 62,
TK_0 = 54,
TK_0 = 55,
TK_EOF_TOKEN = 121;
public final static String orderedTerminalSymbols[] = {
@ -188,6 +188,7 @@ public interface CPPSizeofExpressionParsersym {
"reinterpret_cast",
"sizeof",
"static_cast",
"template",
"this",
"true",
"typeid",
@ -195,7 +196,6 @@ public interface CPPSizeofExpressionParsersym {
"floating",
"charconst",
"0",
"template",
"LT",
"enum",
"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;
}
//
// 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;
}
//
// 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;
}
//
// 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_continue = 79,
TK_default = 80,
TK_delete = 67,
TK_delete = 66,
TK_do = 81,
TK_double = 13,
TK_dynamic_cast = 44,
@ -47,8 +47,8 @@ public interface CPPTemplateTypeParameterParsersym {
TK_long = 16,
TK_mutable = 31,
TK_namespace = 60,
TK_new = 68,
TK_operator = 8,
TK_new = 67,
TK_operator = 7,
TK_private = 103,
TK_protected = 104,
TK_public = 105,
@ -84,7 +84,7 @@ public interface CPPTemplateTypeParameterParsersym {
TK_stringlit = 40,
TK_identifier = 1,
TK_Completion = 2,
TK_EndOfCompletion = 7,
TK_EndOfCompletion = 8,
TK_Invalid = 123,
TK_LeftBracket = 64,
TK_LeftParen = 3,
@ -134,7 +134,7 @@ public interface CPPTemplateTypeParameterParsersym {
TK_RightParen = 74,
TK_RightBrace = 72,
TK_SemiColon = 25,
TK_LeftBrace = 66,
TK_LeftBrace = 68,
TK_ERROR_TOKEN = 61,
TK_0 = 56,
TK_EOF_TOKEN = 121;
@ -147,8 +147,8 @@ public interface CPPTemplateTypeParameterParsersym {
"ColonColon",
"Tilde",
"Star",
"EndOfCompletion",
"operator",
"EndOfCompletion",
"And",
"typename",
"bool",
@ -206,9 +206,9 @@ public interface CPPTemplateTypeParameterParsersym {
"using",
"LeftBracket",
"asm",
"LeftBrace",
"delete",
"new",
"LeftBrace",
"GT",
"Assign",
"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 {
@Override
protected ILanguage getC99Language() {
protected ILanguage getCLanguage() {
return UPCLanguage.getDefault();
}
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -63,6 +63,7 @@ public enum UPCKeyword {
tokenMap.put(name.toCharArray(), keyword.tokenKind);
}
// TODO change to GCC language when gcc support is added
ICLanguageKeywords c99Keywords = (ICLanguageKeywords) C99Language.getDefault().getAdapter(ICLanguageKeywords.class);
String[] c99ks = c99Keywords.getKeywords();
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.upc.DOMToUPCTokenMap;
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.IContributedModelBuilder;
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.internal.core.dom.parser.c.CASTTranslationUnit;
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.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")
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 = PLUGIN_ID + ".upc"; //$NON-NLS-1$
private static final IDOMTokenMap TOKEN_MAP = new DOMToUPCTokenMap();
public static final String ID = "org.eclipse.cdt.core.parser.upc.upc"; //$NON-NLS-1$
private static final UPCLanguage myDefault = new UPCLanguage();
private static final IScannerExtensionConfiguration SCANNER_CONFIGURATION = ScannerExtensionConfiguration.createC();
public static UPCLanguage getDefault() {
return myDefault;
}
@Override
protected IDOMTokenMap getTokenMap() {
return TOKEN_MAP;
return new DOMToUPCTokenMap();
}
@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")
@Override
public Object getAdapter(Class adapter) {
if(IPDOMLinkageFactory.class.equals(adapter))
return new PDOMCLinkageFactory();
if(ICLanguageKeywords.class.equals(adapter))
return upcKeywords;
@ -102,18 +89,13 @@ public class UPCLanguage extends BaseExtensibleLanguage {
* 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;
protected IASTTranslationUnit createASTTranslationUnit() {
return CNodeFactory.getDefault().newTranslationUnit();
}
@Override
protected IScannerExtensionConfiguration getScannerExtensionConfiguration() {
return SCANNER_CONFIGURATION;
return ScannerExtensionConfiguration.createC();
}
}

View file

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

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