Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Applied: [cdt-patch] core patch - Parser (Elaborated Type Speciif iers)

With line chopping fixed...

-----Original Message-----
From: Camelon, John [mailto:jcamelon@xxxxxxxxxxxx] 
Sent: Friday, March 14, 2003 10:17 AM
To: Cdt-Patch (E-mail)
Cc: Amer, Hoda
Subject: [cdt-patch] core patch - Parser (Elaborated Type Speciifiers)

Index: dom/org/eclipse/cdt/core/dom/IScope.java
===================================================================
RCS file: dom/org/eclipse/cdt/core/dom/IScope.java
diff -N dom/org/eclipse/cdt/core/dom/IScope.java
--- dom/org/eclipse/cdt/core/dom/IScope.java	4 Mar 2003 18:25:40 -0000
1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,15 +0,0 @@
-package org.eclipse.cdt.core.dom;
-
-import java.util.List;
-
-import org.eclipse.cdt.internal.core.dom.Declaration;
-
-/**
- * A scope contains a set of declarations that are defined in that scope.
- */
-public interface IScope {
-	
-	public void addDeclaration(Declaration declaration);
-	public List getDeclarations();
-
-}
Index: dom/org/eclipse/cdt/internal/core/dom/ClassSpecifier.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Class
Specifier.java,v
retrieving revision 1.2
diff -u -r1.2 ClassSpecifier.java
--- dom/org/eclipse/cdt/internal/core/dom/ClassSpecifier.java	4 Mar 2003
18:25:40 -0000	1.2
+++ dom/org/eclipse/cdt/internal/core/dom/ClassSpecifier.java	14 Mar 2003
15:20:06 -0000
@@ -3,7 +3,6 @@
 import java.util.LinkedList;
 import java.util.List;
 
-import org.eclipse.cdt.core.dom.IScope;
 import org.eclipse.cdt.internal.core.parser.util.Name;
 
 public class ClassSpecifier extends TypeSpecifier implements IScope {
Index: dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DOMBu
ilder.java,v
retrieving revision 1.3
diff -u -r1.3 DOMBuilder.java
--- dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	12 Mar 2003
15:35:41 -0000	1.3
+++ dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	14 Mar 2003
15:20:06 -0000
@@ -1,7 +1,6 @@
 package org.eclipse.cdt.internal.core.dom;
 
 
-import org.eclipse.cdt.core.dom.IScope;
 import org.eclipse.cdt.internal.core.parser.IParserCallback;
 import org.eclipse.cdt.internal.core.parser.Token;
 import org.eclipse.cdt.internal.core.parser.util.DeclSpecifier;
@@ -275,6 +274,53 @@
 	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#expressionEnd(java.lang
.Object)
 	 */
 	public void expressionEnd(Object expression) {
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierAbort(jav
a.lang.Object)
+	 */
+	public void classSpecifierAbort(Object classSpecifier) {
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierSafe(java
.lang.Object)
+	 */
+	public void classSpecifierSafe(Object classSpecifier) {
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifier
Begin(java.lang.Object)
+	 */
+	public Object elaboratedTypeSpecifierBegin(Object container, Token
classKey) {
+		int kind = ClassSpecifier.t_struct;
+		
+		switch (classKey.getType()) {
+			case Token.t_class:
+				kind = ClassSpecifier.t_class;
+				break;
+			case Token.t_struct:
+				kind = ClassSpecifier.t_struct;
+				break;
+			case Token.t_union:
+				kind = ClassSpecifier.t_union;
+				break;			
+		}
+
+		ElaboratedTypeSpecifier elab = new ElaboratedTypeSpecifier(
kind, (SimpleDeclaration)container );
+		return elab; 
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifier
End(java.lang.Object)
+	 */
+	public void elaboratedTypeSpecifierEnd(Object elab) {
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifier
Name(java.lang.Object)
+	 */
+	public void elaboratedTypeSpecifierName(Object elab) {
+		((ElaboratedTypeSpecifier)elab).setName( currName );
 	}
 
 }
Index: dom/org/eclipse/cdt/internal/core/dom/ElaboratedTypeSpecifier.java
===================================================================
RCS file: dom/org/eclipse/cdt/internal/core/dom/ElaboratedTypeSpecifier.java
diff -N dom/org/eclipse/cdt/internal/core/dom/ElaboratedTypeSpecifier.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ dom/org/eclipse/cdt/internal/core/dom/ElaboratedTypeSpecifier.java	14
Mar 2003 15:20:06 -0000
@@ -0,0 +1,48 @@
+package org.eclipse.cdt.internal.core.dom;
+
+import org.eclipse.cdt.internal.core.parser.util.Name;
+
+/**
+ * @author jcamelon
+ *
+ * To change this generated comment edit the template variable
"typecomment":
+ * Window>Preferences>Java>Templates.
+ * To enable and disable the creation of type comments go to
+ * Window>Preferences>Java>Code Generation.
+ */
+public class ElaboratedTypeSpecifier extends TypeSpecifier {
+
+	public static final int t_class = 0;
+	public static final int t_struct = 1;
+	public static final int t_union = 2;
+	public static final int t_enum = 3;
+
+	private final int classKey;
+	public int getClassKey() { return classKey; }
+
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.dom.TypeSpecifier#getDeclaration()
+	 */
+	public SimpleDeclaration getDeclaration() {
+		return super.getDeclaration();
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.dom.TypeSpecifier#setDeclaration(org.eclipse.c
dt.internal.core.dom.SimpleDeclaration)
+	 */
+	public void setDeclaration(SimpleDeclaration declaration) {
+		super.setDeclaration(declaration);
+	}
+	
+	public ElaboratedTypeSpecifier(int classKey, SimpleDeclaration
declaration) {
+		super(declaration);
+		this.classKey = classKey;
+	}
+
+	private Name name;
+	public void setName(Name n) { name = n; }
+	public Name getName() { return name; }
+	
+
+}
Index: dom/org/eclipse/cdt/internal/core/dom/IScope.java
===================================================================
RCS file: dom/org/eclipse/cdt/internal/core/dom/IScope.java
diff -N dom/org/eclipse/cdt/internal/core/dom/IScope.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ dom/org/eclipse/cdt/internal/core/dom/IScope.java	14 Mar 2003 15:20:06
-0000
@@ -0,0 +1,14 @@
+package org.eclipse.cdt.internal.core.dom;
+
+import java.util.List;
+
+
+/**
+ * A scope contains a set of declarations that are defined in that scope.
+ */
+public interface IScope {
+	
+	public void addDeclaration(Declaration declaration);
+	public List getDeclarations();
+
+}
Index: dom/org/eclipse/cdt/internal/core/dom/ParameterDeclarationClause.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Param
eterDeclarationClause.java,v
retrieving revision 1.2
diff -u -r1.2 ParameterDeclarationClause.java
--- dom/org/eclipse/cdt/internal/core/dom/ParameterDeclarationClause.java
4 Mar 2003 18:25:40 -0000	1.2
+++ dom/org/eclipse/cdt/internal/core/dom/ParameterDeclarationClause.java
14 Mar 2003 15:20:06 -0000
@@ -3,7 +3,6 @@
 import java.util.LinkedList;
 import java.util.List;
 
-import org.eclipse.cdt.core.dom.IScope;
 
 /**
  * @author jcamelon
Index: dom/org/eclipse/cdt/internal/core/dom/TranslationUnit.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Trans
lationUnit.java,v
retrieving revision 1.2
diff -u -r1.2 TranslationUnit.java
--- dom/org/eclipse/cdt/internal/core/dom/TranslationUnit.java	4 Mar 2003
18:25:40 -0000	1.2
+++ dom/org/eclipse/cdt/internal/core/dom/TranslationUnit.java	14 Mar 2003
15:20:06 -0000
@@ -3,7 +3,6 @@
 import java.util.LinkedList;
 import java.util.List;
 
-import org.eclipse.cdt.core.dom.IScope;
 
 /**
  */
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.2
diff -u -r1.2 ChangeLog
--- parser/ChangeLog	12 Mar 2003 15:36:06 -0000	1.2
+++ parser/ChangeLog	14 Mar 2003 15:20:06 -0000
@@ -1,3 +1,8 @@
+2003-03-13 John Camelon
+	Moved ## token to IScanner from Scanner.
+	Updated IParserCallback and implementations to deal with Elaborated
Type Specifiers. 
+	Moved IScope into the internal DOM package. 
+
 2003-03-11 John Camelon
 	added ChangeLog to parser directory
 	updated IParserCallback (and all implementors) for expressions 
Index: parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/
NewModelBuilder.java,v
retrieving revision 1.5
diff -u -r1.5 NewModelBuilder.java
--- parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java	12
Mar 2003 15:35:41 -0000	1.5
+++ parser/org/eclipse/cdt/internal/core/model/NewModelBuilder.java	14
Mar 2003 15:20:08 -0000
@@ -35,8 +35,6 @@
 		return translationUnit;
 	}
 	
-	
-	private Token classKey;
 	/**
 	 * @see
org.eclipse.cdt.core.newparser.IParserCallback#beginClass(String, String)
 	 */
@@ -55,24 +53,21 @@
 			default:
 				kind = ICElement.C_UNION;
 		}
-		this.classKey = classKey;
 		
-		Structure elem = new Structure( c.getParent(), kind, null );
-		c.getParent().addChild(elem); 
-		return new SimpleDeclarationWrapper( elem ); 
+		SimpleDeclarationWrapper wrapper = new
SimpleDeclarationWrapper();
+		wrapper.setKind( kind );
+		wrapper.setParent( c.getParent() ); 
+		
+		return wrapper; 
 	}
 
 	/**
 	 * @see
org.eclipse.cdt.internal.core.newparser.IParserCallback#classSpecifierName()

 	 */
-	public void classSpecifierName(Object classSpecifier) {
-
-		SimpleDeclarationWrapper container =
(SimpleDeclarationWrapper)classSpecifier; 
-		String name = currName.toString(); 
-		Structure elem = ((Structure)container.getElement());
-		elem.setElementName( name );
-		elem.setIdPos(currName.getStartOffset(), name.length());
-		elem.setPos(currName.getStartOffset(), name.length());
+	public void classSpecifierName(Object classSpecifier) 
+	{
+		SimpleDeclarationWrapper wrapper =
(SimpleDeclarationWrapper)classSpecifier;
+		wrapper.setName( currName );
 	}
 
 	/**
@@ -310,6 +305,45 @@
 	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#expressionEnd(java.lang
.Object)
 	 */
 	public void expressionEnd(Object expression) {
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierAbort(jav
a.lang.Object)
+	 */
+	public void classSpecifierAbort(Object classSpecifier) {
+		classSpecifier = null; 
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierSafe(java
.lang.Object)
+	 */
+	public void classSpecifierSafe(Object classSpecifier) {
+		SimpleDeclarationWrapper wrapper =
(SimpleDeclarationWrapper)classSpecifier;
+		Structure elem = new Structure( wrapper.getParent(),
wrapper.getKind(), null );
+		wrapper.setElement( elem );
+		wrapper.getParent().addChild(elem);
+		String name = currName.toString(); 
+		elem.setElementName( name );
+		elem.setIdPos(currName.getStartOffset(), name.length());
+		elem.setPos(currName.getStartOffset(), name.length());
+	}
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifier
Begin(java.lang.Object)
+	 */
+	public Object elaboratedTypeSpecifierBegin(Object container, Token
classKey) {
+		return null;
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifier
End(java.lang.Object)
+	 */
+	public void elaboratedTypeSpecifierEnd(Object elab) {
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifier
Name(java.lang.Object)
+	 */
+	public void elaboratedTypeSpecifierName(Object elab) {
 	}
 
 }
Index:
parser/org/eclipse/cdt/internal/core/model/SimpleDeclarationWrapper.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/
SimpleDeclarationWrapper.java,v
retrieving revision 1.6
diff -u -r1.6 SimpleDeclarationWrapper.java
--- parser/org/eclipse/cdt/internal/core/model/SimpleDeclarationWrapper.java
12 Mar 2003 15:35:41 -0000	1.6
+++ parser/org/eclipse/cdt/internal/core/model/SimpleDeclarationWrapper.java
14 Mar 2003 15:20:08 -0000
@@ -6,6 +6,7 @@
 import org.eclipse.cdt.core.model.IStructure;
 import org.eclipse.cdt.core.model.ITranslationUnit;
 import org.eclipse.cdt.internal.core.parser.util.DeclSpecifier;
+import org.eclipse.cdt.internal.core.parser.util.Name;
 
 /**
  * @author jcamelon
@@ -19,6 +20,8 @@
 
 	private CElement element = null; 
 	private CElement parent = null; 
+	int kind; 
+	private Name name = null; 
 
 	public SimpleDeclarationWrapper( CElement item )
 	{
@@ -160,6 +163,38 @@
 	 */
 	public void removeDeclarator(Object declarator) {
 		declarators.remove( declarator );
+	}
+
+	/**
+	 * Returns the name.
+	 * @return Name
+	 */
+	public Name getName() {
+		return name;
+	}
+
+	/**
+	 * Sets the name.
+	 * @param name The name to set
+	 */
+	public void setName(Name name) {
+		this.name = name;
+	}
+
+	/**
+	 * Returns the kind.
+	 * @return int
+	 */
+	public int getKind() {
+		return kind;
+	}
+
+	/**
+	 * Sets the kind.
+	 * @param kind The kind to set
+	 */
+	public void setKind(int kind) {
+		this.kind = kind;
 	}
 
 }
Index: parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser
/ExpressionEvaluator.java,v
retrieving revision 1.4
diff -u -r1.4 ExpressionEvaluator.java
--- parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java
12 Mar 2003 15:35:41 -0000	1.4
+++ parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java
14 Mar 2003 15:20:08 -0000
@@ -269,4 +269,35 @@
 	public void expressionEnd(Object expression) {
 	}
 
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierAbort(jav
a.lang.Object)
+	 */
+	public void classSpecifierAbort(Object classSpecifier) {
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierSafe(java
.lang.Object)
+	 */
+	public void classSpecifierSafe(Object classSpecifier) {
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifier
Begin(java.lang.Object)
+	 */
+	public Object elaboratedTypeSpecifierBegin(Object container, Token
classKey) {
+		return null;
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifier
End(java.lang.Object)
+	 */
+	public void elaboratedTypeSpecifierEnd(Object elab) {
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifier
Name(java.lang.Object)
+	 */
+	public void elaboratedTypeSpecifierName(Object container) {
+	}
+
 }
Index: parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser
/IParserCallback.java,v
retrieving revision 1.3
diff -u -r1.3 IParserCallback.java
--- parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java	12
Mar 2003 15:35:41 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/IParserCallback.java	14
Mar 2003 15:20:07 -0000
@@ -43,6 +43,8 @@
 	
 	public Object classSpecifierBegin(Object container, Token classKey);
 	public void classSpecifierName(Object classSpecifier);
+	public void classSpecifierAbort( Object classSpecifier ); 
+	public void classSpecifierSafe( Object classSpecifier ); 
 	public void classSpecifierEnd(Object classSpecifier);
 	
 	public Object	baseSpecifierBegin( Object containingClassSpec );
@@ -51,8 +53,12 @@
 	public void 	baseSpecifierVirtual( Object baseSpecifier, boolean
virtual );
 	public void  	baseSpecifierEnd( Object baseSpecifier );
 	
-	public Object expressionBegin( Object container ); 
-	public void expressionOperator(Token operator) throws Exception;
-	public void expressionTerminal(Token terminal) throws Exception;
-	public void expressionEnd(Object expression );
+	public Object 	expressionBegin( Object container ); 
+	public void 	expressionOperator(Token operator) throws Exception;
+	public void 	expressionTerminal(Token terminal) throws Exception;
+	public void 	expressionEnd(Object expression );
+	
+	public Object	elaboratedTypeSpecifierBegin( Object container,
Token classKey ); 
+	public void  	elaboratedTypeSpecifierName( Object elab ); 
+	public void 	elaboratedTypeSpecifierEnd( Object elab );
 }
Index: parser/org/eclipse/cdt/internal/core/parser/IScanner.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser
/IScanner.java,v
retrieving revision 1.2
diff -u -r1.2 IScanner.java
--- parser/org/eclipse/cdt/internal/core/parser/IScanner.java	4 Mar 2003
18:25:40 -0000	1.2
+++ parser/org/eclipse/cdt/internal/core/parser/IScanner.java	14 Mar 2003
15:20:07 -0000
@@ -14,6 +14,8 @@
  */
 public interface IScanner {
 	
+	public static final int tPOUNDPOUND = -6;
+	
 	public IScanner initialize( Reader sourceToBeRead, String fileName
);
 	
 	public void addDefinition(String key, IMacroDescriptor
macroToBeAdded );
Index: parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser
/NullParserCallback.java,v
retrieving revision 1.3
diff -u -r1.3 NullParserCallback.java
--- parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java	12
Mar 2003 15:35:41 -0000	1.3
+++ parser/org/eclipse/cdt/internal/core/parser/NullParserCallback.java	14
Mar 2003 15:20:07 -0000
@@ -184,4 +184,36 @@
 	public void expressionEnd(Object expression) {
 	}
 
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierAbort(jav
a.lang.Object)
+	 */
+	public void classSpecifierAbort(Object classSpecifier) {
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#classSpecifierSafe(java
.lang.Object)
+	 */
+	public void classSpecifierSafe(Object classSpecifier) {
+	}
+
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifier
Begin(java.lang.Object)
+	 */
+	public Object elaboratedTypeSpecifierBegin(Object container, Token
classKey) {
+		return null;
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifier
End(java.lang.Object)
+	 */
+	public void elaboratedTypeSpecifierEnd(Object elab) {
+	}
+
+	/**
+	 * @see
org.eclipse.cdt.internal.core.parser.IParserCallback#elaboratedTypeSpecifier
Name(java.lang.Object)
+	 */
+	public void elaboratedTypeSpecifierName(Object elab) {
+	}
+
 }
Index: parser/org/eclipse/cdt/internal/core/parser/Parser.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser
/Parser.java,v
retrieving revision 1.8
diff -u -r1.8 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java	12 Mar 2003
15:35:41 -0000	1.8
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java	14 Mar 2003
15:20:07 -0000
@@ -84,7 +84,7 @@
 				lastToken = currToken;
 				declaration( translationUnit );
 				if( currToken == lastToken )
-					skipToNextSemi();
+					consumeToNextSemicolon();
 			} catch (Backtrack b) {
 				// Mark as failure and try to reach a
recovery point
 				parsePassed = false;
@@ -92,7 +92,7 @@
 				if (lastBacktrack != null && lastBacktrack
== LA(1)) {
 					// we haven't progressed from the
last backtrack
 					// try and find tne next definition
-					skipToNextSemi();
+					consumeToNextSemicolon();
 				} else {
 					// start again from here
 					lastBacktrack = LA(1);
@@ -102,7 +102,7 @@
 		callback.translationUnitEnd(translationUnit);
 	}
 
-	public void skipToNextSemi() {
+	protected void consumeToNextSemicolon() {
 		for (int t = LT(1); t != Token.tEOF; t = LT(1)) {
 			consume();
 			// TO DO: we should really check for matching braces
too
@@ -338,8 +338,20 @@
 				case Token.t_class:
 				case Token.t_struct:
 				case Token.t_union:
-					classSpecifier(decl);
-					return;
+					try
+					{
+						classSpecifier(decl);
+						return;
+					}
+					catch( Backtrack bt )
+					{
+						// this is an elaborated
class specifier
+						Object elab =
callback.elaboratedTypeSpecifierBegin( decl, consume() ); 
+						name(); 
+
callback.elaboratedTypeSpecifierName( elab ); 
+
callback.elaboratedTypeSpecifierEnd( elab );
+						
+					}
 				case Token.t_enum:
 					enumSpecifier(decl);
 					break;
@@ -638,6 +650,7 @@
 	public void classSpecifier( Object owner ) throws Exception {
 		Token classKey = null;
 		
+		Token mark = mark(); 
 		// class key
 		switch (LT(1)) {
 			case Token.t_class:
@@ -656,8 +669,17 @@
 			name();
 			callback.classSpecifierName(classSpec);

 		}
-
-		//currRegion.put(name.getImage(), classKey);
+		
+		if( LT(1) != Token.tCOLON && LT(1) != Token.tLBRACE )
+		{
+			// this is not a classSpecification
+			callback.classSpecifierAbort( classSpec );
+			classSpec = null; 	
+			backup( mark ); 
+			throw backtrack; 
+		}
+		else
+			callback.classSpecifierSafe( classSpec );
 		
 		// base clause
 		if (LT(1) == Token.tCOLON) {
@@ -693,7 +715,7 @@
 						declaration(classSpec);
 				}
 				if (lastToken == currToken)
-					skipToNextSemi();
+					consumeToNextSemicolon();
 			}
 			// consume the }
 			consume();
Index: parser/org/eclipse/cdt/internal/core/parser/Scanner.java
===================================================================
RCS file:
/home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser
/Scanner.java,v
retrieving revision 1.4
diff -u -r1.4 Scanner.java
--- parser/org/eclipse/cdt/internal/core/parser/Scanner.java	11 Mar 2003
02:42:47 -0000	1.4
+++ parser/org/eclipse/cdt/internal/core/parser/Scanner.java	14 Mar 2003
15:20:07 -0000
@@ -325,8 +325,6 @@
 	private static final String DEFINED = "defined";
 	private static final String POUND_DEFINE = "#define ";
 
-	public static final int tPOUNDPOUND = -6;
-
 	private IScannerContext currentContext;
 	private Stack contextStack = new Stack();
 
_______________________________________________
cdt-patch mailing list
cdt-patch@xxxxxxxxxxx
http://dev.eclipse.org/mailman/listinfo/cdt-patch


Back to the top