mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-24 01:15:29 +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() {
|
||||
return new TestSuite() {{
|
||||
|
||||
addTestSuite(LRCommentTests.class);
|
||||
addTestSuite(LRCompleteParser2Tests.class);
|
||||
addTestSuite(LRCompletionBasicTest.class);
|
||||
addTestSuite(LRCompletionParseTest.class);
|
||||
addTestSuite(LRCPPSpecFailingTest.class);
|
||||
addTestSuite(LRCPPSpecTest.class);
|
||||
addTestSuite(LRCPPTests.class);
|
||||
addTestSuite(LRCSpecTests.class); // a couple of failures
|
||||
addTestSuite(LRDigraphTrigraphTests.class);
|
||||
addTestSuite(LRDOMLocationInclusionTests.class);
|
||||
addTestSuite(LRDOMLocationMacroTests.class);
|
||||
addTestSuite(LRDOMLocationTests.class);
|
||||
addTestSuite(LRDOMPreprocessorInformationTest.class);
|
||||
addTestSuite(LRGCCTests.class);
|
||||
addTestSuite(LRImageLocationTests.class);
|
||||
addTestSuite(LRKnRTests.class); // mostly fail due to ambiguities
|
||||
addTestSuite(LRNodeSelectorTest.class);
|
||||
addTest(LRCommentTests.suite());
|
||||
addTest(LRCompleteParser2Tests.suite());
|
||||
addTest(LRCompletionBasicTest.suite());
|
||||
addTest(LRCompletionParseTest.suite());
|
||||
addTest(LRCPPSpecFailingTest.suite());
|
||||
addTest(LRCPPSpecTest.suite());
|
||||
addTest(LRCPPTests.suite());
|
||||
addTest(LRCSpecTests.suite()); // a couple of failures
|
||||
addTest(LRDigraphTrigraphTests.suite());
|
||||
addTest(LRDOMLocationInclusionTests.suite());
|
||||
addTest(LRDOMLocationMacroTests.suite());
|
||||
addTest(LRDOMLocationTests.suite());
|
||||
addTest(LRDOMPreprocessorInformationTest.suite());
|
||||
addTest(LRGCCTests.suite());
|
||||
addTest(LRImageLocationTests.suite());
|
||||
addTest(LRKnRTests.suite()); // mostly fail due to ambiguities
|
||||
addTest(LRNodeSelectorTest.suite());
|
||||
addTestSuite(LRQuickParser2Tests.class);
|
||||
addTestSuite(LRSelectionParseTest.class); // this one still has a lot of failing tests though
|
||||
addTestSuite(LRSemanticsTests.class);
|
||||
addTestSuite(LRTaskParserTest.class);
|
||||
addTestSuite(LRTemplateTests.class);
|
||||
addTestSuite(LRTests.class); // has some tests that do fail
|
||||
addTestSuite(LRUtilOldTests.class);
|
||||
addTestSuite(LRUtilTests.class);
|
||||
addTest(LRSelectionParseTest.suite()); // this one still has a lot of failing tests though
|
||||
addTest(LRSemanticsTests.suite());
|
||||
addTest(LRTaskParserTest.suite());
|
||||
addTest(LRTemplateTests.suite());
|
||||
addTest(LRTests.suite()); // has some tests that do fail
|
||||
addTest(LRUtilOldTests.suite());
|
||||
addTest(LRUtilTests.suite());
|
||||
|
||||
}};
|
||||
}
|
||||
|
|
|
@ -110,231 +110,49 @@ public class LRTests extends AST2Tests {
|
|||
}
|
||||
|
||||
|
||||
|
||||
/* I don't care about C98
|
||||
*/
|
||||
@Override
|
||||
public void testBug196468_emptyArrayInitializer() { // I don't care about C98
|
||||
try {
|
||||
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 _) { }
|
||||
public void testBug196468_emptyArrayInitializer() { }
|
||||
public void _testBug196468_emptyArrayInitializer() throws Exception {
|
||||
super.testBug196468_emptyArrayInitializer();
|
||||
}
|
||||
|
||||
|
||||
// @Override
|
||||
// public void testBug93980() { // some wierd gcc extension I think
|
||||
// try {
|
||||
// super.testBug93980();
|
||||
// fail();
|
||||
// } catch(Throwable _) { }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public void testBug95866() { // gcc extension
|
||||
// try {
|
||||
// super.testBug95866();
|
||||
// fail();
|
||||
// } catch(Throwable _) { }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public void testBug80171() throws Exception { // implicit int not supported
|
||||
// try {
|
||||
// super.testBug80171();
|
||||
// fail();
|
||||
// } catch(Throwable _) { }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public void testBug196468_emptyArrayInitializer() { // empty array initializer is a gcc extension
|
||||
// try {
|
||||
// super.testBug196468_emptyArrayInitializer();
|
||||
// fail();
|
||||
// } catch(Throwable _) { }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @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 _) { }
|
||||
// }
|
||||
|
||||
/* LPG holds on to all the tokens as you parse, so I don't think
|
||||
* it would be easy to fix this bug.
|
||||
*/
|
||||
@Override
|
||||
public void testScalabilityOfLargeTrivialInitializer_Bug253690() { }
|
||||
public void _testScalabilityOfLargeTrivialInitializer_Bug253690() throws Exception {
|
||||
|
||||
super.testScalabilityOfLargeTrivialInitializer_Bug253690();
|
||||
}
|
||||
|
||||
|
||||
/* 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
|
||||
* difficult so defer it to the future.
|
||||
*/
|
||||
@Override
|
||||
public void testBinaryVsCastAmbiguities_Bug237057() { }
|
||||
public void _testBinaryVsCastAmbiguities_Bug237057() throws Exception {
|
||||
super.testBinaryVsCastAmbiguities_Bug237057();
|
||||
}
|
||||
|
||||
|
||||
/* 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
|
||||
* difficult so defer it to the future.
|
||||
*/
|
||||
@Override
|
||||
public void testCastVsFunctionCallAmbiguities_Bug237057() { }
|
||||
public void _testCastVsFunctionCallAmbiguities_Bug237057() throws Exception {
|
||||
super.testCastVsFunctionCallAmbiguities_Bug237057();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -47,6 +47,7 @@ $Globals
|
|||
/.
|
||||
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.ast.gnu.cpp.*;
|
||||
./
|
||||
$End
|
||||
|
||||
|
@ -108,4 +109,13 @@ cv_qualifier
|
|||
/. $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
|
|
@ -16,11 +16,13 @@ import java.util.List;
|
|||
|
||||
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.IASTPointer;
|
||||
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.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.IGPPASTPointerToMember;
|
||||
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.GPPSecondaryParserFactory;
|
||||
import org.eclipse.cdt.core.dom.ast.gnu.cpp.*;
|
||||
|
||||
public class GPPParser extends PrsStream implements RuleAction, ITokenStream,
|
||||
ITokenCollector, IParser< IASTTranslationUnit >
|
||||
|
@ -2074,6 +2075,24 @@ private GNUBuildASTParserAction gnuAction;
|
|||
//
|
||||
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:
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -25,89 +25,89 @@ public interface GPPParsersym {
|
|||
TK_case = 84,
|
||||
TK_catch = 127,
|
||||
TK_char = 17,
|
||||
TK_class = 61,
|
||||
TK_class = 48,
|
||||
TK_const = 28,
|
||||
TK_const_cast = 48,
|
||||
TK_const_cast = 50,
|
||||
TK_continue = 85,
|
||||
TK_default = 86,
|
||||
TK_delete = 75,
|
||||
TK_do = 87,
|
||||
TK_double = 18,
|
||||
TK_dynamic_cast = 49,
|
||||
TK_dynamic_cast = 51,
|
||||
TK_else = 130,
|
||||
TK_enum = 63,
|
||||
TK_explicit = 33,
|
||||
TK_export = 93,
|
||||
TK_export = 88,
|
||||
TK_extern = 34,
|
||||
TK_false = 50,
|
||||
TK_false = 52,
|
||||
TK_float = 19,
|
||||
TK_for = 88,
|
||||
TK_for = 89,
|
||||
TK_friend = 35,
|
||||
TK_goto = 89,
|
||||
TK_if = 90,
|
||||
TK_goto = 90,
|
||||
TK_if = 91,
|
||||
TK_inline = 36,
|
||||
TK_int = 20,
|
||||
TK_long = 21,
|
||||
TK_mutable = 37,
|
||||
TK_namespace = 67,
|
||||
TK_namespace = 66,
|
||||
TK_new = 76,
|
||||
TK_operator = 9,
|
||||
TK_private = 111,
|
||||
TK_protected = 112,
|
||||
TK_public = 113,
|
||||
TK_register = 38,
|
||||
TK_reinterpret_cast = 51,
|
||||
TK_return = 91,
|
||||
TK_reinterpret_cast = 53,
|
||||
TK_return = 92,
|
||||
TK_short = 22,
|
||||
TK_signed = 23,
|
||||
TK_sizeof = 52,
|
||||
TK_sizeof = 54,
|
||||
TK_static = 39,
|
||||
TK_static_cast = 53,
|
||||
TK_static_cast = 55,
|
||||
TK_struct = 64,
|
||||
TK_switch = 92,
|
||||
TK_template = 62,
|
||||
TK_this = 54,
|
||||
TK_throw = 68,
|
||||
TK_switch = 93,
|
||||
TK_template = 44,
|
||||
TK_this = 56,
|
||||
TK_throw = 70,
|
||||
TK_try = 79,
|
||||
TK_true = 55,
|
||||
TK_true = 57,
|
||||
TK_typedef = 40,
|
||||
TK_typeid = 56,
|
||||
TK_typeid = 58,
|
||||
TK_typename = 13,
|
||||
TK_union = 65,
|
||||
TK_unsigned = 24,
|
||||
TK_using = 69,
|
||||
TK_using = 67,
|
||||
TK_virtual = 31,
|
||||
TK_void = 25,
|
||||
TK_volatile = 29,
|
||||
TK_wchar_t = 26,
|
||||
TK_while = 82,
|
||||
TK_integer = 57,
|
||||
TK_floating = 58,
|
||||
TK_charconst = 59,
|
||||
TK_stringlit = 44,
|
||||
TK_integer = 59,
|
||||
TK_floating = 60,
|
||||
TK_charconst = 61,
|
||||
TK_stringlit = 45,
|
||||
TK_identifier = 1,
|
||||
TK_Completion = 2,
|
||||
TK_EndOfCompletion = 11,
|
||||
TK_Invalid = 131,
|
||||
TK_LeftBracket = 70,
|
||||
TK_LeftBracket = 71,
|
||||
TK_LeftParen = 3,
|
||||
TK_Dot = 128,
|
||||
TK_DotStar = 98,
|
||||
TK_Arrow = 114,
|
||||
TK_ArrowStar = 97,
|
||||
TK_PlusPlus = 45,
|
||||
TK_MinusMinus = 46,
|
||||
TK_PlusPlus = 46,
|
||||
TK_MinusMinus = 47,
|
||||
TK_And = 12,
|
||||
TK_Star = 10,
|
||||
TK_Plus = 41,
|
||||
TK_Minus = 42,
|
||||
TK_Plus = 42,
|
||||
TK_Minus = 43,
|
||||
TK_Tilde = 8,
|
||||
TK_Bang = 47,
|
||||
TK_Bang = 49,
|
||||
TK_Slash = 99,
|
||||
TK_Percent = 100,
|
||||
TK_RightShift = 94,
|
||||
TK_LeftShift = 95,
|
||||
TK_LT = 66,
|
||||
TK_LT = 69,
|
||||
TK_GT = 78,
|
||||
TK_LE = 101,
|
||||
TK_GE = 102,
|
||||
|
@ -136,15 +136,15 @@ public interface GPPParsersym {
|
|||
TK_RightBracket = 126,
|
||||
TK_RightParen = 72,
|
||||
TK_RightBrace = 81,
|
||||
TK_SemiColon = 43,
|
||||
TK_SemiColon = 41,
|
||||
TK_LeftBrace = 73,
|
||||
TK_typeof = 27,
|
||||
TK___alignof__ = 60,
|
||||
TK___alignof__ = 62,
|
||||
TK___attribute__ = 6,
|
||||
TK___declspec = 7,
|
||||
TK_MAX = 109,
|
||||
TK_MIN = 110,
|
||||
TK_ERROR_TOKEN = 71,
|
||||
TK_ERROR_TOKEN = 68,
|
||||
TK_EOF_TOKEN = 129;
|
||||
|
||||
public final static String orderedTerminalSymbols[] = {
|
||||
|
@ -189,12 +189,14 @@ public interface GPPParsersym {
|
|||
"register",
|
||||
"static",
|
||||
"typedef",
|
||||
"SemiColon",
|
||||
"Plus",
|
||||
"Minus",
|
||||
"SemiColon",
|
||||
"template",
|
||||
"stringlit",
|
||||
"PlusPlus",
|
||||
"MinusMinus",
|
||||
"class",
|
||||
"Bang",
|
||||
"const_cast",
|
||||
"dynamic_cast",
|
||||
|
@ -209,17 +211,15 @@ public interface GPPParsersym {
|
|||
"floating",
|
||||
"charconst",
|
||||
"__alignof__",
|
||||
"class",
|
||||
"template",
|
||||
"enum",
|
||||
"struct",
|
||||
"union",
|
||||
"LT",
|
||||
"namespace",
|
||||
"throw",
|
||||
"using",
|
||||
"LeftBracket",
|
||||
"ERROR_TOKEN",
|
||||
"LT",
|
||||
"throw",
|
||||
"LeftBracket",
|
||||
"RightParen",
|
||||
"LeftBrace",
|
||||
"Colon",
|
||||
|
@ -236,12 +236,12 @@ public interface GPPParsersym {
|
|||
"continue",
|
||||
"default",
|
||||
"do",
|
||||
"export",
|
||||
"for",
|
||||
"goto",
|
||||
"if",
|
||||
"return",
|
||||
"switch",
|
||||
"export",
|
||||
"RightShift",
|
||||
"LeftShift",
|
||||
"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.GPPSecondaryParserFactory;
|
||||
import org.eclipse.cdt.core.dom.ast.gnu.cpp.*;
|
||||
|
||||
public class GPPSizeofExpressionParser extends PrsStream implements RuleAction, ITokenStream,
|
||||
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_restrict = 30,
|
||||
TK_asm = 5,
|
||||
TK_auto = 34,
|
||||
TK_auto = 32,
|
||||
TK_bool = 16,
|
||||
TK_break = 83,
|
||||
TK_case = 84,
|
||||
TK_catch = 127,
|
||||
TK_char = 17,
|
||||
TK_class = 61,
|
||||
TK_class = 49,
|
||||
TK_const = 28,
|
||||
TK_const_cast = 48,
|
||||
TK_const_cast = 50,
|
||||
TK_continue = 85,
|
||||
TK_default = 86,
|
||||
TK_delete = 72,
|
||||
TK_do = 87,
|
||||
TK_double = 18,
|
||||
TK_dynamic_cast = 49,
|
||||
TK_dynamic_cast = 51,
|
||||
TK_else = 130,
|
||||
TK_enum = 63,
|
||||
TK_explicit = 35,
|
||||
TK_explicit = 33,
|
||||
TK_export = 93,
|
||||
TK_extern = 36,
|
||||
TK_false = 50,
|
||||
TK_extern = 34,
|
||||
TK_false = 52,
|
||||
TK_float = 19,
|
||||
TK_for = 88,
|
||||
TK_friend = 37,
|
||||
TK_friend = 35,
|
||||
TK_goto = 89,
|
||||
TK_if = 90,
|
||||
TK_inline = 38,
|
||||
TK_inline = 36,
|
||||
TK_int = 20,
|
||||
TK_long = 21,
|
||||
TK_mutable = 39,
|
||||
TK_namespace = 68,
|
||||
TK_mutable = 37,
|
||||
TK_namespace = 66,
|
||||
TK_new = 73,
|
||||
TK_operator = 9,
|
||||
TK_private = 111,
|
||||
TK_protected = 112,
|
||||
TK_public = 113,
|
||||
TK_register = 40,
|
||||
TK_reinterpret_cast = 51,
|
||||
TK_register = 38,
|
||||
TK_reinterpret_cast = 53,
|
||||
TK_return = 91,
|
||||
TK_short = 22,
|
||||
TK_signed = 23,
|
||||
TK_sizeof = 52,
|
||||
TK_static = 41,
|
||||
TK_static_cast = 53,
|
||||
TK_sizeof = 54,
|
||||
TK_static = 39,
|
||||
TK_static_cast = 55,
|
||||
TK_struct = 64,
|
||||
TK_switch = 92,
|
||||
TK_template = 62,
|
||||
TK_this = 54,
|
||||
TK_throw = 67,
|
||||
TK_template = 44,
|
||||
TK_this = 56,
|
||||
TK_throw = 70,
|
||||
TK_try = 79,
|
||||
TK_true = 55,
|
||||
TK_typedef = 42,
|
||||
TK_typeid = 56,
|
||||
TK_true = 57,
|
||||
TK_typedef = 40,
|
||||
TK_typeid = 58,
|
||||
TK_typename = 13,
|
||||
TK_union = 65,
|
||||
TK_unsigned = 24,
|
||||
TK_using = 70,
|
||||
TK_using = 68,
|
||||
TK_virtual = 31,
|
||||
TK_void = 25,
|
||||
TK_volatile = 29,
|
||||
TK_wchar_t = 26,
|
||||
TK_while = 82,
|
||||
TK_integer = 57,
|
||||
TK_floating = 58,
|
||||
TK_charconst = 59,
|
||||
TK_stringlit = 43,
|
||||
TK_integer = 59,
|
||||
TK_floating = 60,
|
||||
TK_charconst = 61,
|
||||
TK_stringlit = 45,
|
||||
TK_identifier = 1,
|
||||
TK_Completion = 2,
|
||||
TK_EndOfCompletion = 11,
|
||||
|
@ -95,19 +95,19 @@ public interface GPPSizeofExpressionParsersym {
|
|||
TK_DotStar = 98,
|
||||
TK_Arrow = 114,
|
||||
TK_ArrowStar = 97,
|
||||
TK_PlusPlus = 44,
|
||||
TK_MinusMinus = 45,
|
||||
TK_PlusPlus = 46,
|
||||
TK_MinusMinus = 47,
|
||||
TK_And = 12,
|
||||
TK_Star = 10,
|
||||
TK_Plus = 32,
|
||||
TK_Minus = 33,
|
||||
TK_Plus = 42,
|
||||
TK_Minus = 43,
|
||||
TK_Tilde = 8,
|
||||
TK_Bang = 47,
|
||||
TK_Bang = 48,
|
||||
TK_Slash = 99,
|
||||
TK_Percent = 100,
|
||||
TK_RightShift = 94,
|
||||
TK_LeftShift = 95,
|
||||
TK_LT = 66,
|
||||
TK_LT = 69,
|
||||
TK_GT = 78,
|
||||
TK_LE = 101,
|
||||
TK_GE = 102,
|
||||
|
@ -136,15 +136,15 @@ public interface GPPSizeofExpressionParsersym {
|
|||
TK_RightBracket = 126,
|
||||
TK_RightParen = 74,
|
||||
TK_RightBrace = 81,
|
||||
TK_SemiColon = 46,
|
||||
TK_SemiColon = 41,
|
||||
TK_LeftBrace = 75,
|
||||
TK_typeof = 27,
|
||||
TK___alignof__ = 60,
|
||||
TK___alignof__ = 62,
|
||||
TK___attribute__ = 6,
|
||||
TK___declspec = 7,
|
||||
TK_MAX = 109,
|
||||
TK_MIN = 110,
|
||||
TK_ERROR_TOKEN = 69,
|
||||
TK_ERROR_TOKEN = 67,
|
||||
TK_EOF_TOKEN = 129;
|
||||
|
||||
public final static String orderedTerminalSymbols[] = {
|
||||
|
@ -180,8 +180,6 @@ public interface GPPSizeofExpressionParsersym {
|
|||
"volatile",
|
||||
"restrict",
|
||||
"virtual",
|
||||
"Plus",
|
||||
"Minus",
|
||||
"auto",
|
||||
"explicit",
|
||||
"extern",
|
||||
|
@ -191,11 +189,15 @@ public interface GPPSizeofExpressionParsersym {
|
|||
"register",
|
||||
"static",
|
||||
"typedef",
|
||||
"SemiColon",
|
||||
"Plus",
|
||||
"Minus",
|
||||
"template",
|
||||
"stringlit",
|
||||
"PlusPlus",
|
||||
"MinusMinus",
|
||||
"SemiColon",
|
||||
"Bang",
|
||||
"class",
|
||||
"const_cast",
|
||||
"dynamic_cast",
|
||||
"false",
|
||||
|
@ -209,16 +211,14 @@ public interface GPPSizeofExpressionParsersym {
|
|||
"floating",
|
||||
"charconst",
|
||||
"__alignof__",
|
||||
"class",
|
||||
"template",
|
||||
"enum",
|
||||
"struct",
|
||||
"union",
|
||||
"LT",
|
||||
"throw",
|
||||
"namespace",
|
||||
"ERROR_TOKEN",
|
||||
"using",
|
||||
"LT",
|
||||
"throw",
|
||||
"LeftBracket",
|
||||
"delete",
|
||||
"new",
|
||||
|
|
Loading…
Add table
Reference in a new issue