mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-10 01:35:39 +02:00
support gnu extensions to template instantiations
This commit is contained in:
parent
f94e5b49c8
commit
bf4ea7fcca
10 changed files with 4984 additions and 4924 deletions
|
@ -29,31 +29,31 @@ public class LRParserTestSuite extends TestSuite {
|
||||||
public static Test suite() {
|
public static Test suite() {
|
||||||
return new TestSuite() {{
|
return new TestSuite() {{
|
||||||
|
|
||||||
addTestSuite(LRCommentTests.class);
|
addTest(LRCommentTests.suite());
|
||||||
addTestSuite(LRCompleteParser2Tests.class);
|
addTest(LRCompleteParser2Tests.suite());
|
||||||
addTestSuite(LRCompletionBasicTest.class);
|
addTest(LRCompletionBasicTest.suite());
|
||||||
addTestSuite(LRCompletionParseTest.class);
|
addTest(LRCompletionParseTest.suite());
|
||||||
addTestSuite(LRCPPSpecFailingTest.class);
|
addTest(LRCPPSpecFailingTest.suite());
|
||||||
addTestSuite(LRCPPSpecTest.class);
|
addTest(LRCPPSpecTest.suite());
|
||||||
addTestSuite(LRCPPTests.class);
|
addTest(LRCPPTests.suite());
|
||||||
addTestSuite(LRCSpecTests.class); // a couple of failures
|
addTest(LRCSpecTests.suite()); // a couple of failures
|
||||||
addTestSuite(LRDigraphTrigraphTests.class);
|
addTest(LRDigraphTrigraphTests.suite());
|
||||||
addTestSuite(LRDOMLocationInclusionTests.class);
|
addTest(LRDOMLocationInclusionTests.suite());
|
||||||
addTestSuite(LRDOMLocationMacroTests.class);
|
addTest(LRDOMLocationMacroTests.suite());
|
||||||
addTestSuite(LRDOMLocationTests.class);
|
addTest(LRDOMLocationTests.suite());
|
||||||
addTestSuite(LRDOMPreprocessorInformationTest.class);
|
addTest(LRDOMPreprocessorInformationTest.suite());
|
||||||
addTestSuite(LRGCCTests.class);
|
addTest(LRGCCTests.suite());
|
||||||
addTestSuite(LRImageLocationTests.class);
|
addTest(LRImageLocationTests.suite());
|
||||||
addTestSuite(LRKnRTests.class); // mostly fail due to ambiguities
|
addTest(LRKnRTests.suite()); // mostly fail due to ambiguities
|
||||||
addTestSuite(LRNodeSelectorTest.class);
|
addTest(LRNodeSelectorTest.suite());
|
||||||
addTestSuite(LRQuickParser2Tests.class);
|
addTestSuite(LRQuickParser2Tests.class);
|
||||||
addTestSuite(LRSelectionParseTest.class); // this one still has a lot of failing tests though
|
addTest(LRSelectionParseTest.suite()); // this one still has a lot of failing tests though
|
||||||
addTestSuite(LRSemanticsTests.class);
|
addTest(LRSemanticsTests.suite());
|
||||||
addTestSuite(LRTaskParserTest.class);
|
addTest(LRTaskParserTest.suite());
|
||||||
addTestSuite(LRTemplateTests.class);
|
addTest(LRTemplateTests.suite());
|
||||||
addTestSuite(LRTests.class); // has some tests that do fail
|
addTest(LRTests.suite()); // has some tests that do fail
|
||||||
addTestSuite(LRUtilOldTests.class);
|
addTest(LRUtilOldTests.suite());
|
||||||
addTestSuite(LRUtilTests.class);
|
addTest(LRUtilTests.suite());
|
||||||
|
|
||||||
}};
|
}};
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,231 +110,49 @@ public class LRTests extends AST2Tests {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/* I don't care about C98
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void testBug196468_emptyArrayInitializer() { // I don't care about C98
|
public void testBug196468_emptyArrayInitializer() { }
|
||||||
try {
|
public void _testBug196468_emptyArrayInitializer() throws Exception {
|
||||||
super.testBug196468_emptyArrayInitializer();
|
super.testBug196468_emptyArrayInitializer();
|
||||||
fail();
|
|
||||||
} catch(Throwable _) { }
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void testScalabilityOfLargeTrivialInitializer_Bug253690() {
|
|
||||||
// LPG holds on to all the tokens as you parse, so I don't think
|
|
||||||
// it would be easy to fix this bug.
|
|
||||||
try {
|
|
||||||
super.testScalabilityOfLargeTrivialInitializer_Bug253690();
|
|
||||||
fail();
|
|
||||||
} catch(Throwable _) { }
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void testBug75340() { // not legal c99
|
|
||||||
try {
|
|
||||||
super.testBug75340();
|
|
||||||
fail();
|
|
||||||
} catch(Throwable _) { }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// @Override
|
|
||||||
// public void testBug93980() { // some wierd gcc extension I think
|
/* LPG holds on to all the tokens as you parse, so I don't think
|
||||||
// try {
|
* it would be easy to fix this bug.
|
||||||
// super.testBug93980();
|
*/
|
||||||
// fail();
|
@Override
|
||||||
// } catch(Throwable _) { }
|
public void testScalabilityOfLargeTrivialInitializer_Bug253690() { }
|
||||||
// }
|
public void _testScalabilityOfLargeTrivialInitializer_Bug253690() throws Exception {
|
||||||
//
|
|
||||||
//
|
super.testScalabilityOfLargeTrivialInitializer_Bug253690();
|
||||||
// @Override
|
}
|
||||||
// public void testBug95866() { // gcc extension
|
|
||||||
// try {
|
|
||||||
// super.testBug95866();
|
/* All of the identifiers in the code resolve correctly.
|
||||||
// fail();
|
* The problem is that some of the expressions parse wrong but
|
||||||
// } catch(Throwable _) { }
|
* thats not actually a big deal. Fixing this bug will be
|
||||||
// }
|
* difficult so defer it to the future.
|
||||||
//
|
*/
|
||||||
//
|
@Override
|
||||||
// @Override
|
public void testBinaryVsCastAmbiguities_Bug237057() { }
|
||||||
// public void testBug80171() throws Exception { // implicit int not supported
|
public void _testBinaryVsCastAmbiguities_Bug237057() throws Exception {
|
||||||
// try {
|
super.testBinaryVsCastAmbiguities_Bug237057();
|
||||||
// super.testBug80171();
|
}
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
/* All of the identifiers in the code resolve correctly.
|
||||||
//
|
* The problem is that some of the expressions parse wrong but
|
||||||
//
|
* thats not actually a big deal. Fixing this bug will be
|
||||||
// @Override
|
* difficult so defer it to the future.
|
||||||
// public void testBug196468_emptyArrayInitializer() { // empty array initializer is a gcc extension
|
*/
|
||||||
// try {
|
@Override
|
||||||
// super.testBug196468_emptyArrayInitializer();
|
public void testCastVsFunctionCallAmbiguities_Bug237057() { }
|
||||||
// fail();
|
public void _testCastVsFunctionCallAmbiguities_Bug237057() throws Exception {
|
||||||
// } catch(Throwable _) { }
|
super.testCastVsFunctionCallAmbiguities_Bug237057();
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testBug75340() { // not legal c99
|
|
||||||
// try {
|
|
||||||
// super.testBug75340();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void test92791() { // I think the test is wrong, the second code snippet contains a redeclaration
|
|
||||||
// try {
|
|
||||||
// super.test92791();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testBug192165() { // gcc extension: typeof
|
|
||||||
// try {
|
|
||||||
// super.testBug192165();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testBug191450_attributesInBetweenPointers() { // gcc extension: attributes
|
|
||||||
// try {
|
|
||||||
// super.testBug191450_attributesInBetweenPointers();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testOmittedPositiveExpression_Bug212905() throws Exception {
|
|
||||||
// try {
|
|
||||||
// super.testOmittedPositiveExpression_Bug212905();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testRedefinedGCCKeywords_Bug226112() throws Exception {
|
|
||||||
// try {
|
|
||||||
// super.testRedefinedGCCKeywords_Bug226112();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testASMLabels_Bug226121() throws Exception {
|
|
||||||
// try {
|
|
||||||
// super.testASMLabels_Bug226121();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testCompoundStatementExpression_Bug226274() throws Exception {
|
|
||||||
// try {
|
|
||||||
// super.testCompoundStatementExpression_Bug226274();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// // GCC extensions
|
|
||||||
// @Override
|
|
||||||
// public void testTypeofUnaryExpression_Bug226492() throws Exception {
|
|
||||||
// try {
|
|
||||||
// super.testTypeofUnaryExpression_Bug226492();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testTypeofExpression_Bug226492() throws Exception {
|
|
||||||
// try {
|
|
||||||
// super.testTypeofExpression_Bug226492();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testTypeofExpressionWithAttribute_Bug226492() throws Exception {
|
|
||||||
// try {
|
|
||||||
// super.testTypeofExpressionWithAttribute_Bug226492();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testCaseRange_Bug211882() throws Exception {
|
|
||||||
// try {
|
|
||||||
// super.testCaseRange_Bug211882();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testAttributeInElaboratedTypeSpecifier_Bug227085() throws Exception {
|
|
||||||
// try {
|
|
||||||
// super.testAttributeInElaboratedTypeSpecifier_Bug227085();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testRestrictReference_Bug227110() throws Exception {
|
|
||||||
// try {
|
|
||||||
// super.testRestrictReference_Bug227110();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testRedefinePtrdiff_Bug230895() throws Exception {
|
|
||||||
// try {
|
|
||||||
// super.testRedefinePtrdiff_Bug230895();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testReturnTypeOfBuiltin_Bug234309() throws Exception {
|
|
||||||
// try {
|
|
||||||
// super.testReturnTypeOfBuiltin_Bug234309();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testScalabilityOfLargeTrivialInitializer_Bug253690() {
|
|
||||||
// // LPG holds on to all the tokens as you parse, so I don't think
|
|
||||||
// // it would be easy to fix this bug.
|
|
||||||
// try {
|
|
||||||
// super.testScalabilityOfLargeTrivialInitializer_Bug253690();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testCompoundLiterals_Bug258496() { // GCC extension
|
|
||||||
// try {
|
|
||||||
// super.testCompoundLiterals_Bug258496();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// @Override
|
|
||||||
// public void testThreadLocalVariables_Bug260387() { // GCC extension
|
|
||||||
// try {
|
|
||||||
// super.testThreadLocalVariables_Bug260387();
|
|
||||||
// fail();
|
|
||||||
// } catch(Throwable _) { }
|
|
||||||
// }
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -47,6 +47,7 @@ $Globals
|
||||||
/.
|
/.
|
||||||
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
|
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
|
||||||
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
|
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.gnu.cpp.*;
|
||||||
./
|
./
|
||||||
$End
|
$End
|
||||||
|
|
||||||
|
@ -108,4 +109,13 @@ cv_qualifier
|
||||||
/. $Build consumeToken(); $EndBuild ./
|
/. $Build consumeToken(); $EndBuild ./
|
||||||
|
|
||||||
|
|
||||||
|
explicit_instantiation
|
||||||
|
::= 'extern' 'template' declaration
|
||||||
|
/. $Build consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern); $EndBuild ./
|
||||||
|
| 'static' 'template' declaration
|
||||||
|
/. $Build consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static); $EndBuild ./
|
||||||
|
| 'inline' 'template' declaration
|
||||||
|
/. $Build consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline); $EndBuild ./
|
||||||
|
|
||||||
|
|
||||||
$End
|
$End
|
|
@ -16,11 +16,13 @@ import java.util.List;
|
||||||
|
|
||||||
import lpg.lpgjavaruntime.IToken;
|
import lpg.lpgjavaruntime.IToken;
|
||||||
|
|
||||||
|
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTExpression;
|
import org.eclipse.cdt.core.dom.ast.IASTExpression;
|
||||||
import org.eclipse.cdt.core.dom.ast.IASTPointer;
|
import org.eclipse.cdt.core.dom.ast.IASTPointer;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTPointerToMember;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTPointerToMember;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleDeclSpecifier;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleDeclSpecifier;
|
||||||
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNodeFactory;
|
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNodeFactory;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTExplicitTemplateInstantiation;
|
||||||
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTPointer;
|
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTPointer;
|
||||||
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTPointerToMember;
|
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTPointerToMember;
|
||||||
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTSimpleDeclSpecifier;
|
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTSimpleDeclSpecifier;
|
||||||
|
@ -172,4 +174,13 @@ public class GPPBuildASTParserAction extends CPPBuildASTParserAction {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public void consumeTemplateExplicitInstantiationGCC(int modifier) {
|
||||||
|
IASTDeclaration declaration = (IASTDeclaration) astStack.pop();
|
||||||
|
IGPPASTExplicitTemplateInstantiation instantiation = nodeFactory.newExplicitTemplateInstantiationGPP(declaration);
|
||||||
|
instantiation.setModifier(modifier);
|
||||||
|
setOffsetAndLength(instantiation);
|
||||||
|
astStack.push(instantiation);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,6 +37,7 @@ import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
|
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
|
||||||
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
|
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.gnu.cpp.*;
|
||||||
|
|
||||||
public class GPPParser extends PrsStream implements RuleAction, ITokenStream,
|
public class GPPParser extends PrsStream implements RuleAction, ITokenStream,
|
||||||
ITokenCollector, IParser< IASTTranslationUnit >
|
ITokenCollector, IParser< IASTTranslationUnit >
|
||||||
|
@ -2074,6 +2075,24 @@ private GNUBuildASTParserAction gnuAction;
|
||||||
//
|
//
|
||||||
case 603: { action. consumeToken(); break;
|
case 603: { action. consumeToken(); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Rule 604: explicit_instantiation ::= extern template declaration
|
||||||
|
//
|
||||||
|
case 604: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Rule 605: explicit_instantiation ::= static template declaration
|
||||||
|
//
|
||||||
|
case 605: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Rule 606: explicit_instantiation ::= inline template declaration
|
||||||
|
//
|
||||||
|
case 606: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -25,89 +25,89 @@ public interface GPPParsersym {
|
||||||
TK_case = 84,
|
TK_case = 84,
|
||||||
TK_catch = 127,
|
TK_catch = 127,
|
||||||
TK_char = 17,
|
TK_char = 17,
|
||||||
TK_class = 61,
|
TK_class = 48,
|
||||||
TK_const = 28,
|
TK_const = 28,
|
||||||
TK_const_cast = 48,
|
TK_const_cast = 50,
|
||||||
TK_continue = 85,
|
TK_continue = 85,
|
||||||
TK_default = 86,
|
TK_default = 86,
|
||||||
TK_delete = 75,
|
TK_delete = 75,
|
||||||
TK_do = 87,
|
TK_do = 87,
|
||||||
TK_double = 18,
|
TK_double = 18,
|
||||||
TK_dynamic_cast = 49,
|
TK_dynamic_cast = 51,
|
||||||
TK_else = 130,
|
TK_else = 130,
|
||||||
TK_enum = 63,
|
TK_enum = 63,
|
||||||
TK_explicit = 33,
|
TK_explicit = 33,
|
||||||
TK_export = 93,
|
TK_export = 88,
|
||||||
TK_extern = 34,
|
TK_extern = 34,
|
||||||
TK_false = 50,
|
TK_false = 52,
|
||||||
TK_float = 19,
|
TK_float = 19,
|
||||||
TK_for = 88,
|
TK_for = 89,
|
||||||
TK_friend = 35,
|
TK_friend = 35,
|
||||||
TK_goto = 89,
|
TK_goto = 90,
|
||||||
TK_if = 90,
|
TK_if = 91,
|
||||||
TK_inline = 36,
|
TK_inline = 36,
|
||||||
TK_int = 20,
|
TK_int = 20,
|
||||||
TK_long = 21,
|
TK_long = 21,
|
||||||
TK_mutable = 37,
|
TK_mutable = 37,
|
||||||
TK_namespace = 67,
|
TK_namespace = 66,
|
||||||
TK_new = 76,
|
TK_new = 76,
|
||||||
TK_operator = 9,
|
TK_operator = 9,
|
||||||
TK_private = 111,
|
TK_private = 111,
|
||||||
TK_protected = 112,
|
TK_protected = 112,
|
||||||
TK_public = 113,
|
TK_public = 113,
|
||||||
TK_register = 38,
|
TK_register = 38,
|
||||||
TK_reinterpret_cast = 51,
|
TK_reinterpret_cast = 53,
|
||||||
TK_return = 91,
|
TK_return = 92,
|
||||||
TK_short = 22,
|
TK_short = 22,
|
||||||
TK_signed = 23,
|
TK_signed = 23,
|
||||||
TK_sizeof = 52,
|
TK_sizeof = 54,
|
||||||
TK_static = 39,
|
TK_static = 39,
|
||||||
TK_static_cast = 53,
|
TK_static_cast = 55,
|
||||||
TK_struct = 64,
|
TK_struct = 64,
|
||||||
TK_switch = 92,
|
TK_switch = 93,
|
||||||
TK_template = 62,
|
TK_template = 44,
|
||||||
TK_this = 54,
|
TK_this = 56,
|
||||||
TK_throw = 68,
|
TK_throw = 70,
|
||||||
TK_try = 79,
|
TK_try = 79,
|
||||||
TK_true = 55,
|
TK_true = 57,
|
||||||
TK_typedef = 40,
|
TK_typedef = 40,
|
||||||
TK_typeid = 56,
|
TK_typeid = 58,
|
||||||
TK_typename = 13,
|
TK_typename = 13,
|
||||||
TK_union = 65,
|
TK_union = 65,
|
||||||
TK_unsigned = 24,
|
TK_unsigned = 24,
|
||||||
TK_using = 69,
|
TK_using = 67,
|
||||||
TK_virtual = 31,
|
TK_virtual = 31,
|
||||||
TK_void = 25,
|
TK_void = 25,
|
||||||
TK_volatile = 29,
|
TK_volatile = 29,
|
||||||
TK_wchar_t = 26,
|
TK_wchar_t = 26,
|
||||||
TK_while = 82,
|
TK_while = 82,
|
||||||
TK_integer = 57,
|
TK_integer = 59,
|
||||||
TK_floating = 58,
|
TK_floating = 60,
|
||||||
TK_charconst = 59,
|
TK_charconst = 61,
|
||||||
TK_stringlit = 44,
|
TK_stringlit = 45,
|
||||||
TK_identifier = 1,
|
TK_identifier = 1,
|
||||||
TK_Completion = 2,
|
TK_Completion = 2,
|
||||||
TK_EndOfCompletion = 11,
|
TK_EndOfCompletion = 11,
|
||||||
TK_Invalid = 131,
|
TK_Invalid = 131,
|
||||||
TK_LeftBracket = 70,
|
TK_LeftBracket = 71,
|
||||||
TK_LeftParen = 3,
|
TK_LeftParen = 3,
|
||||||
TK_Dot = 128,
|
TK_Dot = 128,
|
||||||
TK_DotStar = 98,
|
TK_DotStar = 98,
|
||||||
TK_Arrow = 114,
|
TK_Arrow = 114,
|
||||||
TK_ArrowStar = 97,
|
TK_ArrowStar = 97,
|
||||||
TK_PlusPlus = 45,
|
TK_PlusPlus = 46,
|
||||||
TK_MinusMinus = 46,
|
TK_MinusMinus = 47,
|
||||||
TK_And = 12,
|
TK_And = 12,
|
||||||
TK_Star = 10,
|
TK_Star = 10,
|
||||||
TK_Plus = 41,
|
TK_Plus = 42,
|
||||||
TK_Minus = 42,
|
TK_Minus = 43,
|
||||||
TK_Tilde = 8,
|
TK_Tilde = 8,
|
||||||
TK_Bang = 47,
|
TK_Bang = 49,
|
||||||
TK_Slash = 99,
|
TK_Slash = 99,
|
||||||
TK_Percent = 100,
|
TK_Percent = 100,
|
||||||
TK_RightShift = 94,
|
TK_RightShift = 94,
|
||||||
TK_LeftShift = 95,
|
TK_LeftShift = 95,
|
||||||
TK_LT = 66,
|
TK_LT = 69,
|
||||||
TK_GT = 78,
|
TK_GT = 78,
|
||||||
TK_LE = 101,
|
TK_LE = 101,
|
||||||
TK_GE = 102,
|
TK_GE = 102,
|
||||||
|
@ -136,15 +136,15 @@ public interface GPPParsersym {
|
||||||
TK_RightBracket = 126,
|
TK_RightBracket = 126,
|
||||||
TK_RightParen = 72,
|
TK_RightParen = 72,
|
||||||
TK_RightBrace = 81,
|
TK_RightBrace = 81,
|
||||||
TK_SemiColon = 43,
|
TK_SemiColon = 41,
|
||||||
TK_LeftBrace = 73,
|
TK_LeftBrace = 73,
|
||||||
TK_typeof = 27,
|
TK_typeof = 27,
|
||||||
TK___alignof__ = 60,
|
TK___alignof__ = 62,
|
||||||
TK___attribute__ = 6,
|
TK___attribute__ = 6,
|
||||||
TK___declspec = 7,
|
TK___declspec = 7,
|
||||||
TK_MAX = 109,
|
TK_MAX = 109,
|
||||||
TK_MIN = 110,
|
TK_MIN = 110,
|
||||||
TK_ERROR_TOKEN = 71,
|
TK_ERROR_TOKEN = 68,
|
||||||
TK_EOF_TOKEN = 129;
|
TK_EOF_TOKEN = 129;
|
||||||
|
|
||||||
public final static String orderedTerminalSymbols[] = {
|
public final static String orderedTerminalSymbols[] = {
|
||||||
|
@ -189,12 +189,14 @@ public interface GPPParsersym {
|
||||||
"register",
|
"register",
|
||||||
"static",
|
"static",
|
||||||
"typedef",
|
"typedef",
|
||||||
|
"SemiColon",
|
||||||
"Plus",
|
"Plus",
|
||||||
"Minus",
|
"Minus",
|
||||||
"SemiColon",
|
"template",
|
||||||
"stringlit",
|
"stringlit",
|
||||||
"PlusPlus",
|
"PlusPlus",
|
||||||
"MinusMinus",
|
"MinusMinus",
|
||||||
|
"class",
|
||||||
"Bang",
|
"Bang",
|
||||||
"const_cast",
|
"const_cast",
|
||||||
"dynamic_cast",
|
"dynamic_cast",
|
||||||
|
@ -209,17 +211,15 @@ public interface GPPParsersym {
|
||||||
"floating",
|
"floating",
|
||||||
"charconst",
|
"charconst",
|
||||||
"__alignof__",
|
"__alignof__",
|
||||||
"class",
|
|
||||||
"template",
|
|
||||||
"enum",
|
"enum",
|
||||||
"struct",
|
"struct",
|
||||||
"union",
|
"union",
|
||||||
"LT",
|
|
||||||
"namespace",
|
"namespace",
|
||||||
"throw",
|
|
||||||
"using",
|
"using",
|
||||||
"LeftBracket",
|
|
||||||
"ERROR_TOKEN",
|
"ERROR_TOKEN",
|
||||||
|
"LT",
|
||||||
|
"throw",
|
||||||
|
"LeftBracket",
|
||||||
"RightParen",
|
"RightParen",
|
||||||
"LeftBrace",
|
"LeftBrace",
|
||||||
"Colon",
|
"Colon",
|
||||||
|
@ -236,12 +236,12 @@ public interface GPPParsersym {
|
||||||
"continue",
|
"continue",
|
||||||
"default",
|
"default",
|
||||||
"do",
|
"do",
|
||||||
|
"export",
|
||||||
"for",
|
"for",
|
||||||
"goto",
|
"goto",
|
||||||
"if",
|
"if",
|
||||||
"return",
|
"return",
|
||||||
"switch",
|
"switch",
|
||||||
"export",
|
|
||||||
"RightShift",
|
"RightShift",
|
||||||
"LeftShift",
|
"LeftShift",
|
||||||
"DotDotDot",
|
"DotDotDot",
|
||||||
|
|
|
@ -41,6 +41,7 @@ import org.eclipse.cdt.core.dom.lrparser.action.gnu.GNUBuildASTParserAction;
|
||||||
|
|
||||||
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
|
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPBuildASTParserAction;
|
||||||
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
|
import org.eclipse.cdt.core.dom.lrparser.action.gnu.GPPSecondaryParserFactory;
|
||||||
|
import org.eclipse.cdt.core.dom.ast.gnu.cpp.*;
|
||||||
|
|
||||||
public class GPPSizeofExpressionParser extends PrsStream implements RuleAction, ITokenStream,
|
public class GPPSizeofExpressionParser extends PrsStream implements RuleAction, ITokenStream,
|
||||||
ITokenCollector, IParser< IASTExpression >
|
ITokenCollector, IParser< IASTExpression >
|
||||||
|
@ -2075,9 +2076,27 @@ private GNUBuildASTParserAction gnuAction;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Rule 601: no_sizeof_type_id_start ::= ERROR_TOKEN
|
// Rule 600: explicit_instantiation ::= extern template declaration
|
||||||
//
|
//
|
||||||
case 601: { action. consumeEmpty(); break;
|
case 600: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_extern); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Rule 601: explicit_instantiation ::= static template declaration
|
||||||
|
//
|
||||||
|
case 601: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_static); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Rule 602: explicit_instantiation ::= inline template declaration
|
||||||
|
//
|
||||||
|
case 602: { action. consumeTemplateExplicitInstantiationGCC(IGPPASTExplicitTemplateInstantiation.ti_inline); break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Rule 604: no_sizeof_type_id_start ::= ERROR_TOKEN
|
||||||
|
//
|
||||||
|
case 604: { action. consumeEmpty(); break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -19,72 +19,72 @@ public interface GPPSizeofExpressionParsersym {
|
||||||
TK__Imaginary = 15,
|
TK__Imaginary = 15,
|
||||||
TK_restrict = 30,
|
TK_restrict = 30,
|
||||||
TK_asm = 5,
|
TK_asm = 5,
|
||||||
TK_auto = 34,
|
TK_auto = 32,
|
||||||
TK_bool = 16,
|
TK_bool = 16,
|
||||||
TK_break = 83,
|
TK_break = 83,
|
||||||
TK_case = 84,
|
TK_case = 84,
|
||||||
TK_catch = 127,
|
TK_catch = 127,
|
||||||
TK_char = 17,
|
TK_char = 17,
|
||||||
TK_class = 61,
|
TK_class = 49,
|
||||||
TK_const = 28,
|
TK_const = 28,
|
||||||
TK_const_cast = 48,
|
TK_const_cast = 50,
|
||||||
TK_continue = 85,
|
TK_continue = 85,
|
||||||
TK_default = 86,
|
TK_default = 86,
|
||||||
TK_delete = 72,
|
TK_delete = 72,
|
||||||
TK_do = 87,
|
TK_do = 87,
|
||||||
TK_double = 18,
|
TK_double = 18,
|
||||||
TK_dynamic_cast = 49,
|
TK_dynamic_cast = 51,
|
||||||
TK_else = 130,
|
TK_else = 130,
|
||||||
TK_enum = 63,
|
TK_enum = 63,
|
||||||
TK_explicit = 35,
|
TK_explicit = 33,
|
||||||
TK_export = 93,
|
TK_export = 93,
|
||||||
TK_extern = 36,
|
TK_extern = 34,
|
||||||
TK_false = 50,
|
TK_false = 52,
|
||||||
TK_float = 19,
|
TK_float = 19,
|
||||||
TK_for = 88,
|
TK_for = 88,
|
||||||
TK_friend = 37,
|
TK_friend = 35,
|
||||||
TK_goto = 89,
|
TK_goto = 89,
|
||||||
TK_if = 90,
|
TK_if = 90,
|
||||||
TK_inline = 38,
|
TK_inline = 36,
|
||||||
TK_int = 20,
|
TK_int = 20,
|
||||||
TK_long = 21,
|
TK_long = 21,
|
||||||
TK_mutable = 39,
|
TK_mutable = 37,
|
||||||
TK_namespace = 68,
|
TK_namespace = 66,
|
||||||
TK_new = 73,
|
TK_new = 73,
|
||||||
TK_operator = 9,
|
TK_operator = 9,
|
||||||
TK_private = 111,
|
TK_private = 111,
|
||||||
TK_protected = 112,
|
TK_protected = 112,
|
||||||
TK_public = 113,
|
TK_public = 113,
|
||||||
TK_register = 40,
|
TK_register = 38,
|
||||||
TK_reinterpret_cast = 51,
|
TK_reinterpret_cast = 53,
|
||||||
TK_return = 91,
|
TK_return = 91,
|
||||||
TK_short = 22,
|
TK_short = 22,
|
||||||
TK_signed = 23,
|
TK_signed = 23,
|
||||||
TK_sizeof = 52,
|
TK_sizeof = 54,
|
||||||
TK_static = 41,
|
TK_static = 39,
|
||||||
TK_static_cast = 53,
|
TK_static_cast = 55,
|
||||||
TK_struct = 64,
|
TK_struct = 64,
|
||||||
TK_switch = 92,
|
TK_switch = 92,
|
||||||
TK_template = 62,
|
TK_template = 44,
|
||||||
TK_this = 54,
|
TK_this = 56,
|
||||||
TK_throw = 67,
|
TK_throw = 70,
|
||||||
TK_try = 79,
|
TK_try = 79,
|
||||||
TK_true = 55,
|
TK_true = 57,
|
||||||
TK_typedef = 42,
|
TK_typedef = 40,
|
||||||
TK_typeid = 56,
|
TK_typeid = 58,
|
||||||
TK_typename = 13,
|
TK_typename = 13,
|
||||||
TK_union = 65,
|
TK_union = 65,
|
||||||
TK_unsigned = 24,
|
TK_unsigned = 24,
|
||||||
TK_using = 70,
|
TK_using = 68,
|
||||||
TK_virtual = 31,
|
TK_virtual = 31,
|
||||||
TK_void = 25,
|
TK_void = 25,
|
||||||
TK_volatile = 29,
|
TK_volatile = 29,
|
||||||
TK_wchar_t = 26,
|
TK_wchar_t = 26,
|
||||||
TK_while = 82,
|
TK_while = 82,
|
||||||
TK_integer = 57,
|
TK_integer = 59,
|
||||||
TK_floating = 58,
|
TK_floating = 60,
|
||||||
TK_charconst = 59,
|
TK_charconst = 61,
|
||||||
TK_stringlit = 43,
|
TK_stringlit = 45,
|
||||||
TK_identifier = 1,
|
TK_identifier = 1,
|
||||||
TK_Completion = 2,
|
TK_Completion = 2,
|
||||||
TK_EndOfCompletion = 11,
|
TK_EndOfCompletion = 11,
|
||||||
|
@ -95,19 +95,19 @@ public interface GPPSizeofExpressionParsersym {
|
||||||
TK_DotStar = 98,
|
TK_DotStar = 98,
|
||||||
TK_Arrow = 114,
|
TK_Arrow = 114,
|
||||||
TK_ArrowStar = 97,
|
TK_ArrowStar = 97,
|
||||||
TK_PlusPlus = 44,
|
TK_PlusPlus = 46,
|
||||||
TK_MinusMinus = 45,
|
TK_MinusMinus = 47,
|
||||||
TK_And = 12,
|
TK_And = 12,
|
||||||
TK_Star = 10,
|
TK_Star = 10,
|
||||||
TK_Plus = 32,
|
TK_Plus = 42,
|
||||||
TK_Minus = 33,
|
TK_Minus = 43,
|
||||||
TK_Tilde = 8,
|
TK_Tilde = 8,
|
||||||
TK_Bang = 47,
|
TK_Bang = 48,
|
||||||
TK_Slash = 99,
|
TK_Slash = 99,
|
||||||
TK_Percent = 100,
|
TK_Percent = 100,
|
||||||
TK_RightShift = 94,
|
TK_RightShift = 94,
|
||||||
TK_LeftShift = 95,
|
TK_LeftShift = 95,
|
||||||
TK_LT = 66,
|
TK_LT = 69,
|
||||||
TK_GT = 78,
|
TK_GT = 78,
|
||||||
TK_LE = 101,
|
TK_LE = 101,
|
||||||
TK_GE = 102,
|
TK_GE = 102,
|
||||||
|
@ -136,15 +136,15 @@ public interface GPPSizeofExpressionParsersym {
|
||||||
TK_RightBracket = 126,
|
TK_RightBracket = 126,
|
||||||
TK_RightParen = 74,
|
TK_RightParen = 74,
|
||||||
TK_RightBrace = 81,
|
TK_RightBrace = 81,
|
||||||
TK_SemiColon = 46,
|
TK_SemiColon = 41,
|
||||||
TK_LeftBrace = 75,
|
TK_LeftBrace = 75,
|
||||||
TK_typeof = 27,
|
TK_typeof = 27,
|
||||||
TK___alignof__ = 60,
|
TK___alignof__ = 62,
|
||||||
TK___attribute__ = 6,
|
TK___attribute__ = 6,
|
||||||
TK___declspec = 7,
|
TK___declspec = 7,
|
||||||
TK_MAX = 109,
|
TK_MAX = 109,
|
||||||
TK_MIN = 110,
|
TK_MIN = 110,
|
||||||
TK_ERROR_TOKEN = 69,
|
TK_ERROR_TOKEN = 67,
|
||||||
TK_EOF_TOKEN = 129;
|
TK_EOF_TOKEN = 129;
|
||||||
|
|
||||||
public final static String orderedTerminalSymbols[] = {
|
public final static String orderedTerminalSymbols[] = {
|
||||||
|
@ -180,8 +180,6 @@ public interface GPPSizeofExpressionParsersym {
|
||||||
"volatile",
|
"volatile",
|
||||||
"restrict",
|
"restrict",
|
||||||
"virtual",
|
"virtual",
|
||||||
"Plus",
|
|
||||||
"Minus",
|
|
||||||
"auto",
|
"auto",
|
||||||
"explicit",
|
"explicit",
|
||||||
"extern",
|
"extern",
|
||||||
|
@ -191,11 +189,15 @@ public interface GPPSizeofExpressionParsersym {
|
||||||
"register",
|
"register",
|
||||||
"static",
|
"static",
|
||||||
"typedef",
|
"typedef",
|
||||||
|
"SemiColon",
|
||||||
|
"Plus",
|
||||||
|
"Minus",
|
||||||
|
"template",
|
||||||
"stringlit",
|
"stringlit",
|
||||||
"PlusPlus",
|
"PlusPlus",
|
||||||
"MinusMinus",
|
"MinusMinus",
|
||||||
"SemiColon",
|
|
||||||
"Bang",
|
"Bang",
|
||||||
|
"class",
|
||||||
"const_cast",
|
"const_cast",
|
||||||
"dynamic_cast",
|
"dynamic_cast",
|
||||||
"false",
|
"false",
|
||||||
|
@ -209,16 +211,14 @@ public interface GPPSizeofExpressionParsersym {
|
||||||
"floating",
|
"floating",
|
||||||
"charconst",
|
"charconst",
|
||||||
"__alignof__",
|
"__alignof__",
|
||||||
"class",
|
|
||||||
"template",
|
|
||||||
"enum",
|
"enum",
|
||||||
"struct",
|
"struct",
|
||||||
"union",
|
"union",
|
||||||
"LT",
|
|
||||||
"throw",
|
|
||||||
"namespace",
|
"namespace",
|
||||||
"ERROR_TOKEN",
|
"ERROR_TOKEN",
|
||||||
"using",
|
"using",
|
||||||
|
"LT",
|
||||||
|
"throw",
|
||||||
"LeftBracket",
|
"LeftBracket",
|
||||||
"delete",
|
"delete",
|
||||||
"new",
|
"new",
|
||||||
|
|
Loading…
Add table
Reference in a new issue