From 728848ffc6303eb1f7a572e1987edbc15ea47dfc Mon Sep 17 00:00:00 2001 From: John Camelon Date: Fri, 27 Jun 2003 00:20:07 +0000 Subject: [PATCH] Update IASTExpression. Move Parser.Backtrack and Parser.EndOfFile to external interface. --- core/org.eclipse.cdt.core.tests/ChangeLog | 4 + .../core/parser/tests/BaseScannerTest.java | 20 ++--- .../core/parser/tests/ScannerTestCase.java | 4 +- core/org.eclipse.cdt.core/parser/ChangeLog | 4 + .../eclipse/cdt/core/parser/Backtrack.java | 19 ++++ .../eclipse/cdt/core/parser/EndOfFile.java | 19 ++++ .../{ast/ClassNameType.java => Enum.java} | 16 ++-- .../org/eclipse/cdt/core/parser/IParser.java | 1 - .../org/eclipse/cdt/core/parser/IScanner.java | 7 +- .../cdt/core/parser/ast/AccessVisibility.java | 9 +- .../cdt/core/parser/ast/ClassKind.java | 10 +-- ...ava => ExpressionEvaluationException.java} | 3 +- .../core/parser/ast/IASTClassSpecifier.java | 13 +++ .../cdt/core/parser/ast/IASTExpression.java | 88 +++++++++++++++++++ .../cdt/core/parser/ast/IASTFactory.java | 3 +- .../parser/ast/TemplateDeclarationType.java | 8 +- .../cdt/internal/core/parser/Parser.java | 19 +--- .../internal/core/parser/Preprocessor.java | 3 +- .../cdt/internal/core/parser/Scanner.java | 18 ++-- .../parser/ast/full/ASTClassSpecifier.java | 1 - .../parser/ast/full/FullParseASTFactory.java | 4 +- .../parser/ast/quick/ASTClassSpecifier.java | 1 - .../ast/quick/QuickParseASTFactory.java | 4 +- 23 files changed, 205 insertions(+), 73 deletions(-) create mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/Backtrack.java create mode 100644 core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/EndOfFile.java rename core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/{ast/ClassNameType.java => Enum.java} (66%) rename core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/{IASTConstantExpression.java => ExpressionEvaluationException.java} (87%) diff --git a/core/org.eclipse.cdt.core.tests/ChangeLog b/core/org.eclipse.cdt.core.tests/ChangeLog index 78e00a3ebcb..d22d52794d9 100644 --- a/core/org.eclipse.cdt.core.tests/ChangeLog +++ b/core/org.eclipse.cdt.core.tests/ChangeLog @@ -1,3 +1,7 @@ +2003-06-26 John Camelon + Update IASTExpression. + Move Parser.Backtrack and Parser.EndOfFile to external interface. + 2003-06-25 John Camelon Added DOMFailedTest::testBug39349(). Added DOMTests::testBug39348(). diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java index fc006301306..d006124a958 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/BaseScannerTest.java @@ -15,11 +15,11 @@ import java.io.StringReader; import junit.framework.TestCase; +import org.eclipse.cdt.core.parser.EndOfFile; import org.eclipse.cdt.core.parser.IScanner; import org.eclipse.cdt.core.parser.IToken; import org.eclipse.cdt.core.parser.ParserFactory; import org.eclipse.cdt.core.parser.ScannerException; -import org.eclipse.cdt.internal.core.parser.Parser; /** * @author jcamelon @@ -54,7 +54,7 @@ public class BaseScannerTest extends TestCase { t= scanner.nextToken(); } } - catch (Parser.EndOfFile e) + catch ( EndOfFile e) { } catch (ScannerException se) @@ -69,7 +69,7 @@ public class BaseScannerTest extends TestCase { IToken t= scanner.nextToken(); assertTrue(t.getType() == IToken.tIDENTIFIER); assertTrue(t.getImage().equals(expectedImage)); - } catch (Parser.EndOfFile e) { + } catch (EndOfFile e) { assertTrue(false); } } @@ -80,7 +80,7 @@ public class BaseScannerTest extends TestCase { IToken t= scanner.nextToken(); assertTrue(t.getType() == IToken.tINTEGER); assertTrue(t.getImage().equals(expectedImage)); - } catch (Parser.EndOfFile e) { + } catch (EndOfFile e) { assertTrue(false); } } @@ -91,7 +91,7 @@ public class BaseScannerTest extends TestCase { IToken t= scanner.nextToken(); assertTrue(t.getType() == IToken.tFLOATINGPT); assertTrue(t.getImage().equals(expectedImage)); - } catch (Parser.EndOfFile e) { + } catch (EndOfFile e) { assertTrue(false); } } @@ -103,7 +103,7 @@ public class BaseScannerTest extends TestCase { assertTrue(t.getType() == IToken.tCHAR ); Character c = new Character( expected ); assertEquals( t.getImage(), c.toString() ); - } catch (Parser.EndOfFile e) { + } catch (EndOfFile e) { assertTrue(false); } } @@ -113,7 +113,7 @@ public class BaseScannerTest extends TestCase { IToken t= scanner.nextToken(); assertTrue(t.getType() == IToken.tCHAR ); assertEquals( t.getImage(), expected ); - } catch (Parser.EndOfFile e) { + } catch (EndOfFile e) { assertTrue(false); } } @@ -132,7 +132,7 @@ public class BaseScannerTest extends TestCase { else assertTrue(t.getType() == IToken.tSTRING); assertTrue(t.getImage().equals(expectedImage)); - } catch (Parser.EndOfFile e) { + } catch (EndOfFile e) { assertTrue(false); } } @@ -142,7 +142,7 @@ public class BaseScannerTest extends TestCase { try { IToken t= scanner.nextToken(); assertTrue(t.getType() == tokenType); - } catch (Parser.EndOfFile e) { + } catch (EndOfFile e) { assertTrue(false); } } @@ -161,7 +161,7 @@ public class BaseScannerTest extends TestCase { { try { assertNull(scanner.nextToken()); - } catch (Parser.EndOfFile e) { + } catch (EndOfFile e) { } } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java index 62651277422..bc05bc7fce3 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ScannerTestCase.java @@ -4,11 +4,11 @@ import java.io.StringWriter; import java.io.Writer; import java.util.List; +import org.eclipse.cdt.core.parser.EndOfFile; import org.eclipse.cdt.core.parser.IMacroDescriptor; import org.eclipse.cdt.core.parser.IToken; import org.eclipse.cdt.core.parser.ParserMode; import org.eclipse.cdt.core.parser.ScannerException; -import org.eclipse.cdt.internal.core.parser.Parser; import org.eclipse.cdt.internal.core.parser.Token; /** @@ -847,7 +847,7 @@ public class ScannerTestCase extends BaseScannerTest } } - public void testQuickScan() throws Parser.EndOfFile + public void testQuickScan() throws EndOfFile { try { diff --git a/core/org.eclipse.cdt.core/parser/ChangeLog b/core/org.eclipse.cdt.core/parser/ChangeLog index e90c9bd186f..dcf548c7843 100644 --- a/core/org.eclipse.cdt.core/parser/ChangeLog +++ b/core/org.eclipse.cdt.core/parser/ChangeLog @@ -1,3 +1,7 @@ +2003-06-26 John Camelon + Update IASTExpression. + Move Parser.Backtrack and Parser.EndOfFile to external interface. + 2003-06-25 John Camelon Fixed bug39348 - sizeof elaborated types fail in parsing expression diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/Backtrack.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/Backtrack.java new file mode 100644 index 00000000000..0ca66654211 --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/Backtrack.java @@ -0,0 +1,19 @@ +/********************************************************************** + * Copyright (c) 2002,2003 Rational Software Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM Rational Software - Initial API and implementation +***********************************************************************/ +package org.eclipse.cdt.core.parser; + +/** + * @author jcamelon + * + */ +public class Backtrack extends Exception +{ +} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/EndOfFile.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/EndOfFile.java new file mode 100644 index 00000000000..9a759d58c04 --- /dev/null +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/EndOfFile.java @@ -0,0 +1,19 @@ +/********************************************************************** + * Copyright (c) 2002,2003 Rational Software Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v0.5 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v05.html + * + * Contributors: + * IBM Rational Software - Initial API and implementation +***********************************************************************/ +package org.eclipse.cdt.core.parser; + +/** + * @author jcamelon + * + */ +public class EndOfFile extends Backtrack +{ +} diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ClassNameType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/Enum.java similarity index 66% rename from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ClassNameType.java rename to core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/Enum.java index f524a0ec388..befd09e3d54 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ClassNameType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/Enum.java @@ -8,20 +8,18 @@ * Contributors: * IBM Rational Software - Initial API and implementation ***********************************************************************/ -package org.eclipse.cdt.core.parser.ast; +package org.eclipse.cdt.core.parser; /** * @author jcamelon * */ -public class ClassNameType { - - public static final ClassNameType IDENTIFIER = new ClassNameType( 1 ); - public static final ClassNameType TEMPLATE = new ClassNameType( 2 ); - - private final int type; - private ClassNameType( int t ) +public class Enum +{ + protected Enum( int enumValue ) { - type = t; + this.enumValue = enumValue; } + + private int enumValue; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java index f0a6efc3270..78fea491db7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IParser.java @@ -10,7 +10,6 @@ ***********************************************************************/ package org.eclipse.cdt.core.parser; -import org.eclipse.cdt.internal.core.parser.Parser.Backtrack; /** diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScanner.java index eac9d338e1b..25f36ca4d26 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScanner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/IScanner.java @@ -3,7 +3,6 @@ package org.eclipse.cdt.core.parser; import java.util.List; import org.eclipse.cdt.core.parser.ast.IASTFactory; -import org.eclipse.cdt.internal.core.parser.Parser; /** * @author jcamelon @@ -24,8 +23,8 @@ public interface IScanner { public void overwriteIncludePath( List newIncludePaths ); public void setRequestor( ISourceElementRequestor r ); - public IToken nextToken() throws ScannerException, Parser.EndOfFile; - public IToken nextToken( boolean next ) throws ScannerException, Parser.EndOfFile; + public IToken nextToken() throws ScannerException, EndOfFile; + public IToken nextToken( boolean next ) throws ScannerException, EndOfFile; public void setCppNature( boolean value ); @@ -37,7 +36,7 @@ public interface IScanner { /** * @return */ - public IToken nextTokenForStringizing() throws ScannerException, Parser.EndOfFile; + public IToken nextTokenForStringizing() throws ScannerException, EndOfFile; /** * @param b */ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/AccessVisibility.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/AccessVisibility.java index 2811f143605..30ad9ddd795 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/AccessVisibility.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/AccessVisibility.java @@ -10,11 +10,13 @@ ***********************************************************************/ package org.eclipse.cdt.core.parser.ast; +import org.eclipse.cdt.core.parser.Enum; + /** * @author jcamelon * */ -public class AccessVisibility { +public class AccessVisibility extends Enum { public static final AccessVisibility PUBLIC = new AccessVisibility( 1 ); public static final AccessVisibility PROTECTED = new AccessVisibility( 2 ); @@ -22,8 +24,7 @@ public class AccessVisibility { private AccessVisibility( int constant) { - value = constant; + super( constant ); } - - private final int value; + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ClassKind.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ClassKind.java index 4bf5f379ca7..9776a30f079 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ClassKind.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ClassKind.java @@ -10,22 +10,22 @@ ***********************************************************************/ package org.eclipse.cdt.core.parser.ast; +import org.eclipse.cdt.core.parser.Enum; + /** * @author jcamelon * */ -public class ClassKind { +public class ClassKind extends Enum { public final static ClassKind CLASS = new ClassKind( 1 ); public final static ClassKind STRUCT = new ClassKind( 2 ); public final static ClassKind UNION = new ClassKind( 3 ); public final static ClassKind ENUM = new ClassKind( 4 ); - protected ClassKind( int value ) + private ClassKind( int value ) { - this.value = value; + super( value ); } - private final int value; - } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTConstantExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ExpressionEvaluationException.java similarity index 87% rename from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTConstantExpression.java rename to core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ExpressionEvaluationException.java index 3408e3c3c04..63731121201 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTConstantExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/ExpressionEvaluationException.java @@ -14,7 +14,6 @@ package org.eclipse.cdt.core.parser.ast; * @author jcamelon * */ -public interface IASTConstantExpression extends IASTExpression +public class ExpressionEvaluationException extends Exception { - public int evaluate(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java index 1238008250c..788f33152a9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTClassSpecifier.java @@ -12,12 +12,25 @@ package org.eclipse.cdt.core.parser.ast; import java.util.Iterator; +import org.eclipse.cdt.core.parser.Enum; + /** * @author jcamelon * */ public interface IASTClassSpecifier extends IASTTypeSpecifier, IASTScope, IASTOffsetableNamedElement, IASTTemplatedDeclaration { + public class ClassNameType extends Enum { + + public static final ClassNameType IDENTIFIER = new ClassNameType( 1 ); + public static final ClassNameType TEMPLATE = new ClassNameType( 2 ); + + private ClassNameType( int t ) + { + super( t ); + } + } + public ClassNameType getClassNameType(); public ClassKind getClassKind(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java index 690ffd5761b..ff130c4fa43 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTExpression.java @@ -10,11 +10,99 @@ ***********************************************************************/ package org.eclipse.cdt.core.parser.ast; +import org.eclipse.cdt.core.parser.Enum; + /** * @author jcamelon * */ public interface IASTExpression { + public class ExpressionKind extends Enum + { + public static final ExpressionKind PRIMARY_INTEGER_LITERAL = new ExpressionKind( 0 ); + public static final ExpressionKind PRIMARY_CHAR_LITERAL = new ExpressionKind( 1 ); + public static final ExpressionKind PRIMARY_FLOAT_LITERAL = new ExpressionKind( 2 ); + public static final ExpressionKind PRIMARY_STRING_LITERAL = new ExpressionKind( 3 ); + public static final ExpressionKind PRIMARY_BOOLEAN_LITERAL = new ExpressionKind( 4 ); + public static final ExpressionKind PRIMARY_THIS = new ExpressionKind( 5 ); + public static final ExpressionKind PRIMARY_BRACKETED_EXPRESSION = new ExpressionKind( 6 ); + public static final ExpressionKind ID_EXPRESSION = new ExpressionKind( 7 ); + public static final ExpressionKind POSTFIX_ARRAY = new ExpressionKind( 8 ); + public static final ExpressionKind POSTFIX_CONSTRUCT = new ExpressionKind( 9 ); + public static final ExpressionKind POSTFIX_SIMPLETYPE_CONSTRUCT = new ExpressionKind( 10 ); + public static final ExpressionKind POSTFIX_TYPENAME_IDENTIFIER = new ExpressionKind( 11 ); + public static final ExpressionKind POSTFIX_TYPENAME_TEMPLATEID = new ExpressionKind( 12 ); + public static final ExpressionKind POSTFIX_DOT_IDEXPRESSION = new ExpressionKind( 13 ); + public static final ExpressionKind POSTFIX_ARROW_IDEXPRESSION = new ExpressionKind( 14 ); + public static final ExpressionKind POSTFIX_DOT_DESTRUCTOR = new ExpressionKind( 15 ); + public static final ExpressionKind POSTFIX_ARROW_DESTRUCTOR = new ExpressionKind( 16 ); + public static final ExpressionKind POSTFIX_INCREMENT = new ExpressionKind( 17 ); + public static final ExpressionKind POSTFIX_DECREMENT = new ExpressionKind( 18 ); + public static final ExpressionKind POSTFIX_DYNAMIC_CAST = new ExpressionKind( 19 ); + public static final ExpressionKind POSTFIX_REINTERPRET_CAST = new ExpressionKind( 20 ); + public static final ExpressionKind POSTFIX_STATIC_CAST = new ExpressionKind( 21 ); + public static final ExpressionKind POSTFIX_CONST_CAST = new ExpressionKind( 22 ); + public static final ExpressionKind POSTFIX_TYPEID_EXPRESSION = new ExpressionKind( 23 ); + public static final ExpressionKind POSTFIX_TYPEID_TYPEID = new ExpressionKind( 24 ); + public static final ExpressionKind UNARY_INCREMENT = new ExpressionKind( 25 ); + public static final ExpressionKind UNARY_DECREMENT = new ExpressionKind( 26 ); + public static final ExpressionKind UNARY_STAR_CASTEXPRESSION = new ExpressionKind( 27 ); + public static final ExpressionKind UNARY_AMPSND_CASTEXPRESSION = new ExpressionKind( 28 ); + public static final ExpressionKind UNARY_PLUS_CASTEXPRESSION = new ExpressionKind( 29 ); + public static final ExpressionKind UNARY_MINUS_CASTEXPRESSION = new ExpressionKind( 30 ); + public static final ExpressionKind UNARY_NOT_CASTEXPRESSION = new ExpressionKind( 31 ); + public static final ExpressionKind UNARY_TILDE_CASTEXPRESSION = new ExpressionKind( 32 ); + public static final ExpressionKind UNARY_SIZEOF_UNARYEXPRESSION = new ExpressionKind( 33 ); + public static final ExpressionKind UNARY_SIZEOF_TYPEID = new ExpressionKind( 34 ); + public static final ExpressionKind NEW_NEWTYPEID = new ExpressionKind( 35 ); + public static final ExpressionKind NEW_TYPEID = new ExpressionKind( 36 ); + public static final ExpressionKind DELETE_CASTEXPRESSION = new ExpressionKind( 37 ); + public static final ExpressionKind DELETE_VECTORCASTEXPRESSION = new ExpressionKind( 38 ); + public static final ExpressionKind CASTEXPRESSION = new ExpressionKind( 39 ); + public static final ExpressionKind PM_DOTSTAR = new ExpressionKind( 40 ); + public static final ExpressionKind PM_ARROWSTAR = new ExpressionKind( 41 ); + public static final ExpressionKind MULTIPLICATIVE_MULTIPLY = new ExpressionKind( 42 ); + public static final ExpressionKind MULTIPLICATIVE_DIVIDE = new ExpressionKind( 43 ); + public static final ExpressionKind MULTIPLICATIVE_MODULUS = new ExpressionKind( 44 ); + public static final ExpressionKind ADDITIVE_PLUS = new ExpressionKind( 45 ); + public static final ExpressionKind ADDITIVE_MINUS = new ExpressionKind( 46 ); + public static final ExpressionKind SHIFT_LEFT = new ExpressionKind( 47 ); + public static final ExpressionKind SHIFT_RIGHT = new ExpressionKind( 48 ); + public static final ExpressionKind RELATIONAL_LESSTHAN = new ExpressionKind( 49 ); + public static final ExpressionKind RELATIONAL_GREATERTHAN = new ExpressionKind( 50 ); + public static final ExpressionKind RELATIONAL_LESSTHANEQUALTO = new ExpressionKind( 51 ); + public static final ExpressionKind RELATIONAL_GREATERTHANEQUALTO= new ExpressionKind( 52 ); + public static final ExpressionKind EQUALITY_EQUALS = new ExpressionKind( 53 ); + public static final ExpressionKind EQUALITY_NOTEQUALS = new ExpressionKind( 54 ); + public static final ExpressionKind ANDEXPRESSION = new ExpressionKind( 55 ); + public static final ExpressionKind EXCLUSIVEOREXPRESSION = new ExpressionKind( 56 ); + public static final ExpressionKind INCLUSIVEOREXPRESSION = new ExpressionKind( 57 ); + public static final ExpressionKind LOGICALANDEXPRESSION = new ExpressionKind( 58 ); + public static final ExpressionKind LOGICALOREXPRESSION = new ExpressionKind( 59 ); + public static final ExpressionKind CONDITIONALEXPRESSION = new ExpressionKind( 60 ); + public static final ExpressionKind THROWEXPRESSION = new ExpressionKind( 61 ); + public static final ExpressionKind ASSIGNMENTEXPRESSION = new ExpressionKind( 62 ); + public static final ExpressionKind EXPRESSIONLIST = new ExpressionKind( 63 ); + + + /** + * @param enumValue + */ + private ExpressionKind(int enumValue) + { + super(enumValue); + } + + } + + public ExpressionKind getExpressionKind(); + public IASTExpression getLHSExpression(); + public IASTExpression getRHSExpression(); + public String getLiteralString(); + public String getTypeId(); + public String getId(); + + public int evaluateExpression() throws ExpressionEvaluationException; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java index 6acb034d933..a652f5f497a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/IASTFactory.java @@ -10,8 +10,9 @@ ***********************************************************************/ package org.eclipse.cdt.core.parser.ast; +import org.eclipse.cdt.core.parser.Backtrack; +import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType; import org.eclipse.cdt.internal.core.parser.TokenDuple; -import org.eclipse.cdt.internal.core.parser.Parser.Backtrack; /** * @author jcamelon diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/TemplateDeclarationType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/TemplateDeclarationType.java index 08580d1a8ca..7398bc2396a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/TemplateDeclarationType.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/ast/TemplateDeclarationType.java @@ -10,11 +10,13 @@ ***********************************************************************/ package org.eclipse.cdt.core.parser.ast; +import org.eclipse.cdt.core.parser.Enum; + /** * @author jcamelon * */ -public class TemplateDeclarationType { +public class TemplateDeclarationType extends Enum { public static final TemplateDeclarationType CLASS = new TemplateDeclarationType(1); public static final TemplateDeclarationType FUNCTION = new TemplateDeclarationType( 2 ); @@ -22,11 +24,9 @@ public class TemplateDeclarationType { public static final TemplateDeclarationType METHOD = new TemplateDeclarationType( 4 ); public static final TemplateDeclarationType FIELD = new TemplateDeclarationType( 5 ); - - private final int type; private TemplateDeclarationType( int t ) { - type = t; + super( t ); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java index 1ece0fb28c7..99a82f49a88 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Parser.java @@ -9,6 +9,8 @@ * Rational Software - Initial API and implementation ***********************************************************************/ package org.eclipse.cdt.internal.core.parser; +import org.eclipse.cdt.core.parser.Backtrack; +import org.eclipse.cdt.core.parser.EndOfFile; import org.eclipse.cdt.core.parser.IParser; import org.eclipse.cdt.core.parser.IParserCallback; import org.eclipse.cdt.core.parser.IScanner; @@ -19,7 +21,6 @@ import org.eclipse.cdt.core.parser.ParserMode; import org.eclipse.cdt.core.parser.ScannerException; import org.eclipse.cdt.core.parser.ast.AccessVisibility; import org.eclipse.cdt.core.parser.ast.ClassKind; -import org.eclipse.cdt.core.parser.ast.ClassNameType; import org.eclipse.cdt.core.parser.ast.IASTASMDefinition; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; @@ -31,6 +32,7 @@ import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition; import org.eclipse.cdt.core.parser.ast.IASTScope; import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration; import org.eclipse.cdt.core.parser.ast.IASTUsingDirective; +import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType; import org.eclipse.cdt.internal.core.model.Util; /** * This is our first implementation of the IParser interface, serving as a parser for @@ -4147,22 +4149,9 @@ public class Parser implements IParser } } } - /** - * Class that represents the a request to backtrack. - */ - public static class Backtrack extends Exception - { - } // the static instance we always use private static Backtrack backtrack = new Backtrack(); - /** - * Class that represents encountering EOF. - * - * End of file generally causes backtracking - */ - public static class EndOfFile extends Backtrack - { - } + // the static instance we always use public static EndOfFile endOfFile = new EndOfFile(); // Token management diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java index 52c47b72460..cad991c6070 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Preprocessor.java @@ -13,6 +13,7 @@ package org.eclipse.cdt.internal.core.parser; import java.io.Reader; import java.util.Map; +import org.eclipse.cdt.core.parser.EndOfFile; import org.eclipse.cdt.core.parser.IPreprocessor; import org.eclipse.cdt.core.parser.ScannerException; @@ -42,7 +43,7 @@ public class Preprocessor extends Scanner implements IPreprocessor { { // callback IProblem here } - catch( Parser.EndOfFile eof ) + catch( EndOfFile eof ) { // expected } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java index 2d41ddbd9f4..3469fc46e77 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/Scanner.java @@ -25,6 +25,7 @@ import java.util.Map; import java.util.StringTokenizer; import java.util.Vector; +import org.eclipse.cdt.core.parser.EndOfFile; import org.eclipse.cdt.core.parser.IMacroDescriptor; import org.eclipse.cdt.core.parser.IParser; import org.eclipse.cdt.core.parser.IParserCallback; @@ -467,12 +468,11 @@ public class Scanner implements IScanner { - public IToken nextToken() throws ScannerException, Parser.EndOfFile { + public IToken nextToken() throws ScannerException, EndOfFile { return nextToken( true ); } - - public IToken nextToken( boolean pasting ) throws ScannerException, Parser.EndOfFile + public IToken nextToken( boolean pasting ) throws ScannerException, EndOfFile { if( cachedToken != null ){ setCurrentToken( cachedToken ); @@ -560,7 +560,7 @@ public class Scanner implements IScanner { IToken next = null; try{ next = nextToken( true ); - } catch( Parser.EndOfFile e ){ + } catch( EndOfFile e ){ next = null; } @@ -570,7 +570,7 @@ public class Scanner implements IScanner { currentToken = returnToken; try{ next = nextToken( true ); - } catch( Parser.EndOfFile e ){ + } catch( EndOfFile e ){ next = null; } } @@ -1366,7 +1366,7 @@ public class Scanner implements IScanner { // the static instance we always use protected static endOfMacroTokenException endOfMacroToken = new endOfMacroTokenException(); - public IToken nextTokenForStringizing() throws ScannerException, Parser.EndOfFile + public IToken nextTokenForStringizing() throws ScannerException, EndOfFile { int c = getChar(); StringBuffer tokenImage = new StringBuffer(); @@ -1799,7 +1799,7 @@ public class Scanner implements IScanner { } - protected void poundDefine(int beginning) throws ScannerException, Parser.EndOfFile { + protected void poundDefine(int beginning) throws ScannerException, EndOfFile { skipOverWhitespace(); // definition String key = getNextIdentifier(); @@ -1896,7 +1896,7 @@ public class Scanner implements IScanner { t = helperScanner.nextToken(false); } } - catch( Parser.EndOfFile eof ) + catch( EndOfFile eof ) { // good } @@ -2001,7 +2001,7 @@ public class Scanner implements IScanner { } space = true; } - } catch (Parser.EndOfFile e) { + } catch (EndOfFile e) { // Good parameterValues.add(str); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java index 8e8ac4da432..1e03223eecb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/ASTClassSpecifier.java @@ -14,7 +14,6 @@ import java.util.Iterator; import org.eclipse.cdt.core.parser.ast.AccessVisibility; import org.eclipse.cdt.core.parser.ast.ClassKind; -import org.eclipse.cdt.core.parser.ast.ClassNameType; import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration; import org.eclipse.cdt.internal.core.parser.pst.IDerivableContainerSymbol; import org.eclipse.cdt.internal.core.parser.pst.ISymbol; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java index 0c2c02a94df..cf0b04eecc7 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/full/FullParseASTFactory.java @@ -12,10 +12,10 @@ package org.eclipse.cdt.internal.core.parser.ast.full; import java.util.Iterator; +import org.eclipse.cdt.core.parser.Backtrack; import org.eclipse.cdt.core.parser.IToken; import org.eclipse.cdt.core.parser.ast.AccessVisibility; import org.eclipse.cdt.core.parser.ast.ClassKind; -import org.eclipse.cdt.core.parser.ast.ClassNameType; import org.eclipse.cdt.core.parser.ast.IASTASMDefinition; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit; @@ -28,8 +28,8 @@ import org.eclipse.cdt.core.parser.ast.IASTScope; import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration; import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration; import org.eclipse.cdt.core.parser.ast.IASTUsingDirective; +import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType; import org.eclipse.cdt.internal.core.parser.TokenDuple; -import org.eclipse.cdt.internal.core.parser.Parser.Backtrack; import org.eclipse.cdt.internal.core.parser.ast.BaseASTFactory; import org.eclipse.cdt.internal.core.parser.pst.IContainerSymbol; import org.eclipse.cdt.internal.core.parser.pst.ISymbol; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java index ab511bab3c0..ab2c20a0b12 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/ASTClassSpecifier.java @@ -16,7 +16,6 @@ import java.util.Stack; import org.eclipse.cdt.core.parser.ast.AccessVisibility; import org.eclipse.cdt.core.parser.ast.ClassKind; -import org.eclipse.cdt.core.parser.ast.ClassNameType; import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; import org.eclipse.cdt.core.parser.ast.IASTDeclaration; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java index 686af57d9b3..2bdc981ca2c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ast/quick/QuickParseASTFactory.java @@ -10,9 +10,9 @@ ***********************************************************************/ package org.eclipse.cdt.internal.core.parser.ast.quick; +import org.eclipse.cdt.core.parser.Backtrack; import org.eclipse.cdt.core.parser.ast.AccessVisibility; import org.eclipse.cdt.core.parser.ast.ClassKind; -import org.eclipse.cdt.core.parser.ast.ClassNameType; import org.eclipse.cdt.core.parser.ast.IASTASMDefinition; import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier; import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier; @@ -27,8 +27,8 @@ import org.eclipse.cdt.core.parser.ast.IASTScope; import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration; import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration; import org.eclipse.cdt.core.parser.ast.IASTUsingDirective; +import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier.ClassNameType; import org.eclipse.cdt.internal.core.parser.TokenDuple; -import org.eclipse.cdt.internal.core.parser.Parser.Backtrack; import org.eclipse.cdt.internal.core.parser.ast.BaseASTFactory; /**