Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Applied [ Parser_SymbolTable ] - Further parser updates


Further integration of SymbolTable into Parser, some refactoring.

JohnC


Index: dom/org/eclipse/cdt/internal/core/dom/BaseSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/BaseSpecifier.java,v
retrieving revision 1.6
diff -u -r1.6 BaseSpecifier.java
--- dom/org/eclipse/cdt/internal/core/dom/BaseSpecifier.java	9 Apr 2003 21:11:59 -0000	1.6
+++ dom/org/eclipse/cdt/internal/core/dom/BaseSpecifier.java	6 May 2003 23:47:23 -0000
@@ -1,5 +1,7 @@
 package org.eclipse.cdt.internal.core.dom;
 
+import org.eclipse.cdt.internal.core.parser.Name;
+
 
 /**
  * @author dschaefe
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/ClassSpecifier.java,v
retrieving revision 1.10
diff -u -r1.10 ClassSpecifier.java
--- dom/org/eclipse/cdt/internal/core/dom/ClassSpecifier.java	16 Apr 2003 12:30:47 -0000	1.10
+++ dom/org/eclipse/cdt/internal/core/dom/ClassSpecifier.java	6 May 2003 23:47:23 -0000
@@ -4,6 +4,7 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import org.eclipse.cdt.internal.core.parser.Name;
 import org.eclipse.cdt.internal.core.parser.Token;
 
 public class ClassSpecifier extends TypeSpecifier implements IScope, IOffsetable, IAccessable {
Index: dom/org/eclipse/cdt/internal/core/dom/ConstructorChainElement.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ConstructorChainElement.java,v
retrieving revision 1.2
diff -u -r1.2 ConstructorChainElement.java
--- dom/org/eclipse/cdt/internal/core/dom/ConstructorChainElement.java	9 Apr 2003 21:11:59 -0000	1.2
+++ dom/org/eclipse/cdt/internal/core/dom/ConstructorChainElement.java	6 May 2003 23:47:23 -0000
@@ -16,6 +16,8 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.eclipse.cdt.internal.core.parser.Name;
+
 
 /**
  * @author jcamelon
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/DOMBuilder.java,v
retrieving revision 1.31
diff -u -r1.31 DOMBuilder.java
--- dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	6 May 2003 15:33:32 -0000	1.31
+++ dom/org/eclipse/cdt/internal/core/dom/DOMBuilder.java	6 May 2003 23:47:23 -0000
@@ -3,6 +3,7 @@
 
 import org.eclipse.cdt.internal.core.parser.IParser;
 import org.eclipse.cdt.internal.core.parser.IParserCallback;
+import org.eclipse.cdt.internal.core.parser.Name;
 import org.eclipse.cdt.internal.core.parser.Token;
 
 /**
Index: dom/org/eclipse/cdt/internal/core/dom/DeclSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/DeclSpecifier.java,v
retrieving revision 1.4
diff -u -r1.4 DeclSpecifier.java
--- dom/org/eclipse/cdt/internal/core/dom/DeclSpecifier.java	24 Apr 2003 18:36:22 -0000	1.4
+++ dom/org/eclipse/cdt/internal/core/dom/DeclSpecifier.java	6 May 2003 23:47:23 -0000
@@ -2,6 +2,7 @@
 
 import java.util.List;
 
+import org.eclipse.cdt.internal.core.parser.Name;
 import org.eclipse.cdt.internal.core.parser.Token;
 
 /**
Index: dom/org/eclipse/cdt/internal/core/dom/Declarator.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Declarator.java,v
retrieving revision 1.12
diff -u -r1.12 Declarator.java
--- dom/org/eclipse/cdt/internal/core/dom/Declarator.java	25 Apr 2003 16:13:17 -0000	1.12
+++ dom/org/eclipse/cdt/internal/core/dom/Declarator.java	6 May 2003 23:47:23 -0000
@@ -4,6 +4,8 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.eclipse.cdt.internal.core.parser.Name;
+
 
 
 public class Declarator implements IExpressionOwner, IDeclaratorOwner {
Index: dom/org/eclipse/cdt/internal/core/dom/ElaboratedTypeSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ElaboratedTypeSpecifier.java,v
retrieving revision 1.5
diff -u -r1.5 ElaboratedTypeSpecifier.java
--- dom/org/eclipse/cdt/internal/core/dom/ElaboratedTypeSpecifier.java	5 May 2003 20:31:08 -0000	1.5
+++ dom/org/eclipse/cdt/internal/core/dom/ElaboratedTypeSpecifier.java	6 May 2003 23:47:23 -0000
@@ -1,5 +1,7 @@
 package org.eclipse.cdt.internal.core.dom;
 
+import org.eclipse.cdt.internal.core.parser.Name;
+
 
 /**
  * @author jcamelon
Index: dom/org/eclipse/cdt/internal/core/dom/EnumerationSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/EnumerationSpecifier.java,v
retrieving revision 1.8
diff -u -r1.8 EnumerationSpecifier.java
--- dom/org/eclipse/cdt/internal/core/dom/EnumerationSpecifier.java	17 Apr 2003 13:41:43 -0000	1.8
+++ dom/org/eclipse/cdt/internal/core/dom/EnumerationSpecifier.java	6 May 2003 23:47:23 -0000
@@ -16,6 +16,7 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.eclipse.cdt.internal.core.parser.Name;
 import org.eclipse.cdt.internal.core.parser.Token;
 
 /**
Index: dom/org/eclipse/cdt/internal/core/dom/EnumeratorDefinition.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/EnumeratorDefinition.java,v
retrieving revision 1.5
diff -u -r1.5 EnumeratorDefinition.java
--- dom/org/eclipse/cdt/internal/core/dom/EnumeratorDefinition.java	16 Apr 2003 12:30:47 -0000	1.5
+++ dom/org/eclipse/cdt/internal/core/dom/EnumeratorDefinition.java	6 May 2003 23:47:23 -0000
@@ -12,6 +12,8 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.dom;
 
+import org.eclipse.cdt.internal.core.parser.Name;
+
 
 /**
  * @author jcamelon
Index: dom/org/eclipse/cdt/internal/core/dom/ExceptionSpecifier.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/ExceptionSpecifier.java,v
retrieving revision 1.2
diff -u -r1.2 ExceptionSpecifier.java
--- dom/org/eclipse/cdt/internal/core/dom/ExceptionSpecifier.java	9 Apr 2003 21:11:59 -0000	1.2
+++ dom/org/eclipse/cdt/internal/core/dom/ExceptionSpecifier.java	6 May 2003 23:47:23 -0000
@@ -16,6 +16,8 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import org.eclipse.cdt.internal.core.parser.Name;
+
 
 /**
  * @author jcamelon
Index: dom/org/eclipse/cdt/internal/core/dom/Expression.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/Expression.java,v
retrieving revision 1.4
diff -u -r1.4 Expression.java
--- dom/org/eclipse/cdt/internal/core/dom/Expression.java	22 Apr 2003 15:22:31 -0000	1.4
+++ dom/org/eclipse/cdt/internal/core/dom/Expression.java	6 May 2003 23:47:23 -0000
@@ -15,6 +15,7 @@
 import java.util.Collections;
 import java.util.List;
 
+import org.eclipse.cdt.internal.core.parser.Name;
 import org.eclipse.cdt.internal.core.parser.Token;
 
 /**
Index: dom/org/eclipse/cdt/internal/core/dom/Name.java
===================================================================
RCS file: dom/org/eclipse/cdt/internal/core/dom/Name.java
diff -N dom/org/eclipse/cdt/internal/core/dom/Name.java
--- dom/org/eclipse/cdt/internal/core/dom/Name.java	9 Apr 2003 21:11:59 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,63 +0,0 @@
-package org.eclipse.cdt.internal.core.dom;
-
-import org.eclipse.cdt.internal.core.parser.Token;
-
-
-/**
- * @author dschaefe
- *
- * 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 Name {
-
-	private Token nameStart, nameEnd;
-	
-	public Name(Token nameStart) {
-		this.nameStart = nameStart;
-	}
-	
-	public void setEnd(Token nameEnd) {
-		this.nameEnd = nameEnd;
-	}
-	
-	public int getStartOffset()
-	{
-		return nameStart.offset;
-	}
-	
-	public int getEndOffset()
-	{
-		return nameEnd.offset;
-	}
-
-	public String toString() {
-		Token t = nameStart;
-		StringBuffer buffer = new StringBuffer(); 
-		buffer.append( t.getImage() ); 
-		if( t.getType() == Token.t_operator )
-			buffer.append( " " );
-
-		while (t != nameEnd) {
-			t = t.getNext();
-				
-			buffer.append( t.getImage() );			
-		}
-		
-		return buffer.toString();
-	}
-	
-	public int length()
-	{
-		return getEndOffset() - getStartOffset() + nameEnd.getImage().length();
-	}
-	/**
-	 * @return
-	 */
-	public Token getNameStart() {
-		return nameStart;
-	}
-
-}
Index: dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java,v
retrieving revision 1.8
diff -u -r1.8 NamespaceDefinition.java
--- dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java	24 Apr 2003 18:36:22 -0000	1.8
+++ dom/org/eclipse/cdt/internal/core/dom/NamespaceDefinition.java	6 May 2003 23:47:23 -0000
@@ -16,6 +16,7 @@
 import java.util.LinkedList;
 import java.util.List;
 
+import org.eclipse.cdt.internal.core.parser.Name;
 import org.eclipse.cdt.internal.core.parser.Token;
 
 /**
Index: dom/org/eclipse/cdt/internal/core/dom/TemplateParameter.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/TemplateParameter.java,v
retrieving revision 1.4
diff -u -r1.4 TemplateParameter.java
--- dom/org/eclipse/cdt/internal/core/dom/TemplateParameter.java	13 Apr 2003 22:01:29 -0000	1.4
+++ dom/org/eclipse/cdt/internal/core/dom/TemplateParameter.java	6 May 2003 23:47:23 -0000
@@ -12,6 +12,8 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.dom;
 
+import org.eclipse.cdt.internal.core.parser.Name;
+
 
 /**
  * @author jcamelon
Index: dom/org/eclipse/cdt/internal/core/dom/UsingDeclaration.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDeclaration.java,v
retrieving revision 1.3
diff -u -r1.3 UsingDeclaration.java
--- dom/org/eclipse/cdt/internal/core/dom/UsingDeclaration.java	13 Apr 2003 22:01:29 -0000	1.3
+++ dom/org/eclipse/cdt/internal/core/dom/UsingDeclaration.java	6 May 2003 23:47:23 -0000
@@ -12,6 +12,8 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.dom;
 
+import org.eclipse.cdt.internal.core.parser.Name;
+
 
 /**
  * @author jcamelon
Index: dom/org/eclipse/cdt/internal/core/dom/UsingDirective.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/dom/org/eclipse/cdt/internal/core/dom/UsingDirective.java,v
retrieving revision 1.3
diff -u -r1.3 UsingDirective.java
--- dom/org/eclipse/cdt/internal/core/dom/UsingDirective.java	13 Apr 2003 22:01:29 -0000	1.3
+++ dom/org/eclipse/cdt/internal/core/dom/UsingDirective.java	6 May 2003 23:47:23 -0000
@@ -12,6 +12,8 @@
 ***********************************************************************/
 package org.eclipse.cdt.internal.core.dom;
 
+import org.eclipse.cdt.internal.core.parser.Name;
+
 
 /**
  * @author jcamelon
Index: parser/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/ChangeLog,v
retrieving revision 1.48
diff -u -r1.48 ChangeLog
--- parser/ChangeLog	5 May 2003 20:31:08 -0000	1.48
+++ parser/ChangeLog	6 May 2003 23:47:24 -0000
@@ -1,3 +1,6 @@
+2003-05-06 John Camelon
+	Further integration of SymbolTable into Parser, some refactoring. 
+
 2003-05-05 John Camelon/Andrew Niefer
 	Added Symboltable infrastructure into main parser.  
 
Index: parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java,v
retrieving revision 1.23
diff -u -r1.23 CModelBuilder.java
--- parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java	1 May 2003 19:46:41 -0000	1.23
+++ parser/org/eclipse/cdt/internal/core/model/CModelBuilder.java	6 May 2003 23:47:24 -0000
@@ -39,7 +39,6 @@
 import org.eclipse.cdt.internal.core.dom.ITemplateParameterListOwner;
 import org.eclipse.cdt.internal.core.dom.Inclusion;
 import org.eclipse.cdt.internal.core.dom.Macro;
-import org.eclipse.cdt.internal.core.dom.Name;
 import org.eclipse.cdt.internal.core.dom.NamespaceDefinition;
 import org.eclipse.cdt.internal.core.dom.ParameterDeclaration;
 import org.eclipse.cdt.internal.core.dom.ParameterDeclarationClause;
@@ -50,6 +49,7 @@
 import org.eclipse.cdt.internal.core.dom.TranslationUnit;
 import org.eclipse.cdt.internal.core.dom.TypeSpecifier;
 import org.eclipse.cdt.internal.core.parser.IParser;
+import org.eclipse.cdt.internal.core.parser.Name;
 import org.eclipse.cdt.internal.core.parser.Parser;
 import org.eclipse.core.resources.IProject;
 
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.24
diff -u -r1.24 ExpressionEvaluator.java
--- parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java	5 May 2003 20:31:08 -0000	1.24
+++ parser/org/eclipse/cdt/internal/core/parser/ExpressionEvaluator.java	6 May 2003 23:47:24 -0000
@@ -13,7 +13,6 @@
 import java.util.EmptyStackException;
 import java.util.Stack;
 
-import org.eclipse.cdt.internal.core.dom.Name;
 
 public class ExpressionEvaluator implements IParserCallback {
 
Index: parser/org/eclipse/cdt/internal/core/parser/ISymbol.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ISymbol.java,v
retrieving revision 1.1
diff -u -r1.1 ISymbol.java
--- parser/org/eclipse/cdt/internal/core/parser/ISymbol.java	5 May 2003 20:31:08 -0000	1.1
+++ parser/org/eclipse/cdt/internal/core/parser/ISymbol.java	6 May 2003 23:47:24 -0000
@@ -16,6 +16,6 @@
  */
 public interface ISymbol {
 
-	public Object getObject(); 
+	public Object getCallbackExtension(); 
 
 }
Index: parser/org/eclipse/cdt/internal/core/parser/Name.java
===================================================================
RCS file: parser/org/eclipse/cdt/internal/core/parser/Name.java
diff -N parser/org/eclipse/cdt/internal/core/parser/Name.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ parser/org/eclipse/cdt/internal/core/parser/Name.java	6 May 2003 23:47:24 -0000
@@ -0,0 +1,74 @@
+package org.eclipse.cdt.internal.core.parser;
+
+
+
+/**
+ * @author dschaefe
+ *
+ * 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 Name {
+
+	private Token nameStart, nameEnd;
+	
+	public Name(Token nameStart) {
+		this.nameStart = nameStart;
+	}
+
+	public Name(Token nameStart, Token nameEnd) {
+		this( nameStart ); 
+		setEnd( nameEnd );
+	}
+
+	
+	public void setEnd(Token nameEnd) {
+		this.nameEnd = nameEnd;
+	}
+	
+	public int getStartOffset()
+	{
+		return nameStart.offset;
+	}
+	
+	public int getEndOffset()
+	{
+		return nameEnd.offset;
+	}
+
+	public String toString() {
+		Token t = nameStart;
+		StringBuffer buffer = new StringBuffer(); 
+		buffer.append( t.getImage() ); 
+		if( t.getType() == Token.t_operator )
+			buffer.append( " " );
+
+		while (t != nameEnd) {
+			t = t.getNext();
+				
+			buffer.append( t.getImage() );			
+		}
+		
+		return buffer.toString();
+	}
+	
+	public int length()
+	{
+		return getEndOffset() - getStartOffset() + nameEnd.getImage().length();
+	}
+	/**
+	 * @return
+	 */
+	public Token getNameStart() {
+		return nameStart;
+	}
+	
+	public static String tokensToString( Token first, Token last )
+	{
+		Name n = new Name( first, last ); 
+		return n.toString(); 
+	}
+
+}
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.45
diff -u -r1.45 Parser.java
--- parser/org/eclipse/cdt/internal/core/parser/Parser.java	5 May 2003 20:31:08 -0000	1.45
+++ parser/org/eclipse/cdt/internal/core/parser/Parser.java	6 May 2003 23:47:25 -0000
@@ -163,13 +163,13 @@
 		try { callback.setParser( this ); } catch( Exception e) {}
 		Object translationUnit = null;
 		try{ translationUnit = callback.translationUnitBegin();} catch( Exception e ) {}
-		pst.getCompilationUnit().setObject(translationUnit);
+		pst.getCompilationUnit().setCallbackExtension(translationUnit);
 		Token lastBacktrack = null;
 		Token checkToken;
 		while (true) {
 			try {
 				checkToken = LA(1);
-				declaration( translationUnit, pst.getCompilationUnit() );
+				declaration( pst.getCompilationUnit() );
 				if( LA(1) == checkToken )
 					errorHandling();
 			} catch (EndOfFile e) {
@@ -240,14 +240,14 @@
 	 * @param container		Callback object representing the scope these definitions fall into. 
 	 * @throws Backtrack	request for a backtrack
 	 */
-	protected void usingClause( Object container ) throws Backtrack
+	protected void usingClause( Declaration scope ) throws Backtrack
 	{
 		Token firstToken = consume( Token.t_using );
 		
 		if( LT(1) == Token.t_namespace )
 		{
 			Object directive = null; 
-			try{ directive = callback.usingDirectiveBegin( container);} catch( Exception e ) {}
+			try{ directive = callback.usingDirectiveBegin( scope.getCallbackExtension());} catch( Exception e ) {}
 			// using-directive
 			consume( Token.t_namespace );
 			
@@ -278,7 +278,7 @@
 		else
 		{
 			Object usingDeclaration = null;
-			try{ usingDeclaration = callback.usingDeclarationBegin( container );} catch( Exception e ) {}
+			try{ usingDeclaration = callback.usingDeclarationBegin( scope.getCallbackExtension() );} catch( Exception e ) {}
 			
 			boolean typeName = false;
 			if( LT(1) == Token.t_typename )
@@ -322,7 +322,7 @@
 	 * @param container Callback object representing the scope these definitions fall into.
 	 * @throws Backtrack	request for a backtrack
 	 */
-	protected void linkageSpecification( Object container ) throws Backtrack
+	protected void linkageSpecification( Declaration scope ) throws Backtrack
 	{
 		consume( Token.t_extern );
 
@@ -330,7 +330,16 @@
 			throw backtrack;
 
 		Object linkageSpec = null; 
-		try{ linkageSpec = callback.linkageSpecificationBegin( container, consume( Token.tSTRING ).getImage() );} catch( Exception e ) {}
+		Token linkageName = consume( Token.tSTRING );
+		try{ linkageSpec = callback.linkageSpecificationBegin( scope.getCallbackExtension(), linkageName.getImage() );} catch( Exception e ) {}
+		
+		Declaration linkageSymbol = pst.new Declaration( "");
+		try {
+			scope.addDeclaration( linkageSymbol );
+		} catch (ParserSymbolTableException e1) {
+			// TODO Auto-generated catch block
+		}
+		linkageSymbol.setCallbackExtension( linkageSpec );
 
 		if( LT(1) == Token.tLBRACE )
 		{
@@ -345,7 +354,7 @@
 					default:
 						try
 						{
-							declaration(linkageSpec, null);
+							declaration(linkageSymbol);
 						}
 						catch( Backtrack bt )
 						{
@@ -363,7 +372,7 @@
 		}
 		else // single declaration
 		{
-			declaration( linkageSpec, null );
+			declaration( linkageSymbol );
 			try{ callback.linkageSpecificationEnd( linkageSpec );} catch( Exception e ) {}
 		}
 	}
@@ -380,7 +389,7 @@
 	 * @param container			Callback object representing the scope these definitions fall into.
 	 * @throws Backtrack		request for a backtrack
 	 */
-	protected void templateDeclaration( Object container ) throws Backtrack
+	protected void templateDeclaration( Declaration scope ) throws Backtrack
 	{
 		Token firstToken = null; 
 		if( LT(1) == Token.t_export )
@@ -396,8 +405,11 @@
 		{
 			// explicit-instantiation
 			Object instantiation = null; 
-			try { instantiation = callback.explicitInstantiationBegin( container ); } catch( Exception e ) { }
-			declaration( instantiation, null );
+			try { instantiation = callback.explicitInstantiationBegin( scope.getCallbackExtension() ); } catch( Exception e ) { }
+			
+			Declaration declaration = pst.new Declaration("");
+			declaration.setCallbackExtension( instantiation );
+			declaration( declaration );
 			try { callback.explicitInstantiationEnd( instantiation ); } catch( Exception e ) { }
 			return;
 		}
@@ -409,8 +421,10 @@
 				consume( Token.tGT ); 
 				// explicit-specialization
 				Object specialization = null;
-				try{ specialization = callback.explicitSpecializationBegin( container ); } catch( Exception e ) { }
-				declaration( specialization, null ); 
+				try{ specialization = callback.explicitSpecializationBegin( scope.getCallbackExtension() ); } catch( Exception e ) { }
+				Declaration specializationSymbol = pst.new Declaration(""); 
+				specializationSymbol.setCallbackExtension( specialization );
+				declaration( specializationSymbol  ); 
 				try{ callback.explicitSpecializationEnd( specialization ); } catch( Exception e ) { }
 				return;
 			}
@@ -419,10 +433,12 @@
 		Object templateDeclaration = null;
 		try
 		{
-			try{ templateDeclaration = callback.templateDeclarationBegin( container, firstToken ); } catch ( Exception e ) {}
+			try{ templateDeclaration = callback.templateDeclarationBegin( scope.getCallbackExtension(), firstToken ); } catch ( Exception e ) {}
+			Declaration templateSymbol = pst.new Declaration( "");
+			templateSymbol.setCallbackExtension(  templateDeclaration );
 			templateParameterList( templateDeclaration );
 			consume( Token.tGT );
-			declaration( templateDeclaration, null ); 
+			declaration( templateSymbol ); 
 			try{ callback.templateDeclarationEnd( templateDeclaration, lastToken ); } catch( Exception e ) {}
 			
 		} catch( Backtrack bt )
@@ -552,7 +568,7 @@
 	 * @param container		IParserCallback object which serves as the owner scope for this declaration.  
 	 * @throws Backtrack	request a backtrack
 	 */
-	protected void declaration( Object container, Declaration scope ) throws Backtrack {
+	protected void declaration( Declaration scope ) throws Backtrack {
 		switch (LT(1)) {
 			case Token.t_asm:
 				consume( Token.t_asm );
@@ -562,35 +578,35 @@
 				consume( Token.tSEMI );
 				// if we made it this far, then we have all we need 
 				// do the callback
-				try{ callback.asmDefinition( container, assembly );} catch( Exception e ) {}
+				try{ callback.asmDefinition( scope.getCallbackExtension(), assembly );} catch( Exception e ) {}
 				return; 
 			case Token.t_namespace:
-				namespaceDefinition( container, scope );
+				namespaceDefinition( scope );
 				return; 
 			case Token.t_using:
-				usingClause( container );
+				usingClause( scope );
 				return; 
 			case Token.t_export:
 			case Token.t_template:
-				templateDeclaration( container );
+				templateDeclaration( scope );
 				return; 
 			case Token.t_extern:
 				if( LT(2) == Token.tSTRING )
 				{
-					linkageSpecification( container ); 
+					linkageSpecification( scope ); 
 					return;
 				}
 			default:
 				Token mark = mark(); 
 				try
 				{
-					simpleDeclaration( container, true, scope ); // try it first with the original strategy 
+					simpleDeclaration( scope, true ); // try it first with the original strategy 
 				}
 				catch( Backtrack bt)
 				{ 
 					// did not work 
 					backup( mark );
-					simpleDeclaration( container, false, scope ); // try it again with the second strategy
+					simpleDeclaration( scope, false ); // try it again with the second strategy
 				}
 		}
 	}
@@ -606,7 +622,7 @@
 	 * @throws Backtrack	request a backtrack
 
 	 */	
-	protected void namespaceDefinition( Object container, Declaration scope ) throws Backtrack
+	protected void namespaceDefinition( Declaration scope ) throws Backtrack
 	{
 		Object namespace = null;
 		boolean redeclared = false;
@@ -642,8 +658,8 @@
 				{
 					// should never happen
 				}
-				try{ namespace = callback.namespaceDefinitionBegin( container, firstToken );} catch( Exception e ) {}
-				namespaceSymbol.setObject( namespace );
+				try{ namespace = callback.namespaceDefinitionBegin( scope.getCallbackExtension(), firstToken );} catch( Exception e ) {}
+				namespaceSymbol.setCallbackExtension( namespace );
 				try {
 					scope.addDeclaration( namespaceSymbol );
 				} catch (ParserSymbolTableException e2) {
@@ -656,7 +672,7 @@
 			{
 				if( namespaceSymbol.getType() != TypeInfo.t_namespace ) 
 					throw backtrack; 
-				namespace = namespaceSymbol.getObject();
+				namespace = namespaceSymbol.getCallbackExtension();
 				redeclared = true;
 			}
 
@@ -671,7 +687,7 @@
 					default:
 						try
 						{
-							declaration(namespace, namespaceSymbol);
+							declaration(namespaceSymbol);
 						}
 						catch( Backtrack bt )
 						{
@@ -711,14 +727,13 @@
 	 * To do:
 	 * - work in functionTryBlock
 	 * 
-	 * @param container			IParserCallback object which serves as the owner scope for this declaration.
 	 * @param tryConstructor	true == take strategy1 (constructor ) : false == take strategy 2 ( pointer to function) 
 	 * @throws Backtrack		request a backtrack
 	 */
-	protected void simpleDeclaration( Object container, boolean tryConstructor, Declaration scope ) throws Backtrack {
+	protected void simpleDeclaration( Declaration scope, boolean tryConstructor ) throws Backtrack {
 		Object simpleDecl = null; 
-		try{ simpleDecl = callback.simpleDeclarationBegin( container, LA(1));} catch( Exception e ) {}
-		declSpecifierSeq(simpleDecl, false, tryConstructor, scope);
+		try{ simpleDecl = callback.simpleDeclarationBegin( scope.getCallbackExtension(), LA(1));} catch( Exception e ) {}
+		declSpecifierSeq(scope, simpleDecl, false, tryConstructor);
 		Object declarator = null; 
 
 		if (LT(1) != Token.tSEMI)
@@ -846,7 +861,7 @@
 		Token current = LA(1);
 		Object parameterDecl = null;
 		try{ parameterDecl = callback.parameterDeclarationBegin( containerObject );} catch( Exception e ) {}
-		declSpecifierSeq( parameterDecl, true, false, null );
+		declSpecifierSeq( null, parameterDecl, true, false );
 		
 		if (LT(1) != Token.tSEMI)
 			try {
@@ -1002,7 +1017,7 @@
 	 * @param tryConstructor	true for constructor, false for pointer to function strategy
 	 * @throws Backtrack		request a backtrack
 	 */
-	protected void declSpecifierSeq( Object decl, boolean parm, boolean tryConstructor, Declaration scope ) throws Backtrack {
+	protected void declSpecifierSeq( Declaration scope, Object declaration, boolean parm, boolean tryConstructor ) throws Backtrack {
 		Flags flags = new Flags( parm, tryConstructor ); 
 		declSpecifiers:		
 		for (;;) {
@@ -1019,7 +1034,7 @@
 				case Token.t_friend:
 				case Token.t_const:
 				case Token.t_volatile:
-					try{ callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {}
+					try{ callback.simpleDeclSpecifier(declaration, consume());} catch( Exception e ) {}
 					break;
 				case Token.t_signed:
 				case Token.t_unsigned:					
@@ -1033,10 +1048,10 @@
 				case Token.t_double:
 				case Token.t_void:
 					flags.setEncounteredRawType(true);
-					try{ callback.simpleDeclSpecifier(decl, consume());} catch( Exception e ) {}
+					try{ callback.simpleDeclSpecifier(declaration, consume());} catch( Exception e ) {}
 					break;
 				case Token.t_typename:
-					try{ callback.simpleDeclSpecifier(decl, consume( Token.t_typename ));} catch( Exception e ) {}
+					try{ callback.simpleDeclSpecifier(declaration, consume( Token.t_typename ));} catch( Exception e ) {}
 					Token first = LA(1);
 					Token last = null;  
 					name();
@@ -1054,7 +1069,7 @@
 						  
 					}
 					
-					try{ callback.simpleDeclSpecifierName( decl );} catch( Exception e ) {}
+					try{ callback.simpleDeclSpecifierName( declaration );} catch( Exception e ) {}
 					return;
 				case Token.tCOLONCOLON:
 					consume( Token.tCOLONCOLON );
@@ -1071,9 +1086,9 @@
 					if ( lookAheadForDeclarator( flags ) )
 						return;
 						
-					try{ callback.simpleDeclSpecifier(decl,LA(1));} catch( Exception e ) {}
+					try{ callback.simpleDeclSpecifier(declaration,LA(1));} catch( Exception e ) {}
 					name(); 
-					try{ callback.simpleDeclSpecifierName( decl );} catch( Exception e ) {}
+					try{ callback.simpleDeclSpecifierName( declaration );} catch( Exception e ) {}
 					flags.setEncounteredTypename(true);
 
 					break;
@@ -1085,19 +1100,19 @@
 					{
 						try
 						{
-							classSpecifier(decl, scope);
+							classSpecifier(declaration, scope);
 							return;
 						}
 						catch( Backtrack bt )
 						{
-							elaboratedTypeSpecifier(decl);
+							elaboratedTypeSpecifier(declaration);
 							flags.setEncounteredTypename(true);
 							break;
 						}
 					}
 					else
 					{
-						elaboratedTypeSpecifier(decl);
+						elaboratedTypeSpecifier(declaration);
 						flags.setEncounteredTypename(true);
 						break;
 					}
@@ -1106,20 +1121,20 @@
 					{
 						try
 						{
-							enumSpecifier(decl);
+							enumSpecifier(declaration);
 							break;
 						}
 						catch( Backtrack bt )
 						{
 							// this is an elaborated class specifier
-							elaboratedTypeSpecifier(decl);
+							elaboratedTypeSpecifier(declaration);
 							flags.setEncounteredTypename(true);
 							break;
 						}
 					}
 					else
 					{
-						elaboratedTypeSpecifier(decl);
+						elaboratedTypeSpecifier(declaration);
 						flags.setEncounteredTypename(true);
 						break;
 					}
@@ -1152,13 +1167,14 @@
 	 * 
 	 * @throws Backtrack	request a backtrack
 	 */
-	protected void identifier() throws Backtrack {
+	protected Token identifier() throws Backtrack {
 		Token first = consume(Token.tIDENTIFIER); // throws backtrack if its not that
 		try
 		{ 
 			callback.nameBegin(first);
 			callback.nameEnd(first);
 		} catch( Exception e ) {}
+		return first;
 	}
 
 	/**
@@ -1168,19 +1184,14 @@
 	 * 
 	 * @throws Backtrack
 	 */
-	protected void className() throws Backtrack
+	protected Token className() throws Backtrack
 	{	
 		if( LT(1)  == Token.tIDENTIFIER)
 		{
 			if( LT(2) == Token.tLT )
-			{
-				templateId();
-			}
+				return templateId();
 			else
-			{
-				identifier();
-				return;
-			} 
+				return identifier();
 		}
 		else
 			throw backtrack;
@@ -1870,9 +1881,13 @@
 		try{ classSpec = callback.classSpecifierBegin( owner, classKey);} catch( Exception e ){}
 		
 		// class name
+		String className = ""; 
+ 
 		if (LT(1) == Token.tIDENTIFIER) {
-			className();
-			try{ callback.classSpecifierName(classSpec);} catch( Exception e ){}			
+			Token first = LA(1);
+			Token last = className();
+			try{ callback.classSpecifierName(classSpec);} catch( Exception e ){}
+			className = Name.tokensToString(first, last);			
 		}
 		
 		if( LT(1) != Token.tCOLON && LT(1) != Token.tLBRACE )
@@ -1892,6 +1907,15 @@
 		if (LT(1) == Token.tLBRACE) {
 			consume(Token.tLBRACE);
 			
+			Declaration classSymbol = pst.new Declaration( className );
+			classSymbol.setCallbackExtension( classSpec );
+			try {
+				scope.addDeclaration( classSymbol );
+			} catch (ParserSymbolTableException e1) {
+				// TODO Auto-generated catch block
+				e1.printStackTrace();
+			}
+			
 			memberDeclarationLoop:
 			while (LT(1) != Token.tRBRACE) {
 				Token checkToken = LA(1);
@@ -1909,7 +1933,7 @@
 					default:
 						try
 						{
-							declaration(classSpec, scope);
+							declaration(classSymbol );
 						}
 						catch( Backtrack bt )
 						{
@@ -2093,7 +2117,7 @@
 				while (LT(1) == Token.t_catch) {
 					consume();
 					consume(Token.tLPAREN);
-					declaration(null, null); // was exceptionDeclaration
+					declaration(null); // was exceptionDeclaration
 					consume(Token.tRPAREN);
 					compoundStatement();
 				}
@@ -2125,7 +2149,7 @@
 				}
 				
 				// declarationStatement
-				declaration(null, null);
+				declaration(null);
 		}
 	}
 	
Index: parser/org/eclipse/cdt/internal/core/parser/ParserSymbolTable.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/parser/ParserSymbolTable.java,v
retrieving revision 1.13
diff -u -r1.13 ParserSymbolTable.java
--- parser/org/eclipse/cdt/internal/core/parser/ParserSymbolTable.java	5 May 2003 20:31:08 -0000	1.13
+++ parser/org/eclipse/cdt/internal/core/parser/ParserSymbolTable.java	6 May 2003 23:47:26 -0000
@@ -39,7 +39,7 @@
 	 */
 	public ParserSymbolTable() {
 		super();
-		_compilationUnit = new Declaration();
+		_compilationUnit = new Declaration("");
 		try{
 			_compilationUnit.setType( TypeInfo.t_namespace );
 		} catch ( ParserSymbolTableException e ){
@@ -1325,14 +1325,6 @@
 
 	public class Declaration implements Cloneable, ISymbol {
 
-		/**
-		 * Constructor for Declaration.
-		 */
-		public Declaration(){
-			super();
-			_typeInfo = new TypeInfo();
-		}
-
 		public Declaration( String name ){
 			super();
 			_name = name;
@@ -1411,8 +1403,8 @@
 		public String getName() { return _name; }
 		public void setName(String name) { _name = name; }
 	
-		public Object getObject() { return _object; }
-		public void setObject( Object obj ) { _object = obj; }
+		public Object getCallbackExtension() { return _object; }
+		public void setCallbackExtension( Object obj ) { _object = obj; }
 	
 		public Declaration	getContainingScope() { return _containingScope; }
 		protected void setContainingScope( Declaration scope ){ 
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/ChangeLog,v
retrieving revision 1.97
diff -u -r1.97 ChangeLog
--- ChangeLog	28 Apr 2003 02:36:20 -0000	1.97
+++ ChangeLog	6 May 2003 23:47:43 -0000
@@ -1,3 +1,9 @@
+2003-05-06 John Camelon
+	Further integration of SymbolTable into Parser, some refactoring. 
+	
+	* src/org/eclipse/cdt/internal/ui/compare/ComparatorModelBuilder.java
+	moved some imports around.
+
 2003-04-27 Alain Magloire
 
 	PR 36759, the outline does not update
Index: src/org/eclipse/cdt/internal/ui/compare/ComparatorModelBuilder.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/compare/ComparatorModelBuilder.java,v
retrieving revision 1.3
diff -u -r1.3 ComparatorModelBuilder.java
--- src/org/eclipse/cdt/internal/ui/compare/ComparatorModelBuilder.java	26 Apr 2003 23:39:33 -0000	1.3
+++ src/org/eclipse/cdt/internal/ui/compare/ComparatorModelBuilder.java	6 May 2003 23:47:43 -0000
@@ -25,13 +25,13 @@
 import org.eclipse.cdt.internal.core.dom.IOffsetable;
 import org.eclipse.cdt.internal.core.dom.Inclusion;
 import org.eclipse.cdt.internal.core.dom.Macro;
-import org.eclipse.cdt.internal.core.dom.Name;
 import org.eclipse.cdt.internal.core.dom.NamespaceDefinition;
 import org.eclipse.cdt.internal.core.dom.ParameterDeclarationClause;
 import org.eclipse.cdt.internal.core.dom.SimpleDeclaration;
 import org.eclipse.cdt.internal.core.dom.TemplateDeclaration;
 import org.eclipse.cdt.internal.core.dom.TranslationUnit;
 import org.eclipse.cdt.internal.core.dom.TypeSpecifier;
+import org.eclipse.cdt.internal.core.parser.Name;
 import org.eclipse.cdt.internal.core.parser.Parser;
 import org.eclipse.cdt.internal.parser.IStructurizerCallback;
 
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/ChangeLog,v
retrieving revision 1.51
diff -u -r1.51 ChangeLog
--- ChangeLog	5 May 2003 20:51:37 -0000	1.51
+++ ChangeLog	6 May 2003 23:47:57 -0000
@@ -1,3 +1,6 @@
+2003-05-06 John Camelon
+	Further integration of SymbolTable into Parser, some refactoring. 
+
 2003-05-05 John Camelon/Andrew Niefer
 	Added CrossReferenceTests to ParserTestSuite to test symbol-table/DOM interworking.
 
Index: parser/org/eclipse/cdt/core/parser/tests/DOMTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/DOMTests.java,v
retrieving revision 1.32
diff -u -r1.32 DOMTests.java
--- parser/org/eclipse/cdt/core/parser/tests/DOMTests.java	28 Apr 2003 20:00:35 -0000	1.32
+++ parser/org/eclipse/cdt/core/parser/tests/DOMTests.java	6 May 2003 23:47:58 -0000
@@ -27,7 +27,6 @@
 import org.eclipse.cdt.internal.core.dom.Inclusion;
 import org.eclipse.cdt.internal.core.dom.LinkageSpecification;
 import org.eclipse.cdt.internal.core.dom.Macro;
-import org.eclipse.cdt.internal.core.dom.Name;
 import org.eclipse.cdt.internal.core.dom.NamespaceDefinition;
 import org.eclipse.cdt.internal.core.dom.ParameterDeclaration;
 import org.eclipse.cdt.internal.core.dom.ParameterDeclarationClause;
@@ -39,6 +38,7 @@
 import org.eclipse.cdt.internal.core.dom.TranslationUnit;
 import org.eclipse.cdt.internal.core.dom.UsingDeclaration;
 import org.eclipse.cdt.internal.core.dom.UsingDirective;
+import org.eclipse.cdt.internal.core.parser.Name;
 import org.eclipse.cdt.internal.core.parser.ParserException;
 import org.eclipse.cdt.internal.core.parser.Token;
 
Index: parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.ui.tests/parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java,v
retrieving revision 1.13
diff -u -r1.13 ParserSymbolTableTest.java
--- parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java	5 May 2003 17:01:04 -0000	1.13
+++ parser/org/eclipse/cdt/core/parser/tests/ParserSymbolTableTest.java	6 May 2003 23:47:58 -0000
@@ -115,13 +115,13 @@
 		ParserSymbolTable.Declaration x = table.new Declaration("x");
 		
 		Object obj = new Object();
-		x.setObject( obj );
+		x.setCallbackExtension( obj );
 				
 		table.getCompilationUnit().addDeclaration( x );
 		
 		ParserSymbolTable.Declaration look = table.getCompilationUnit().Lookup( "x" );
 		
-		assertEquals( look.getObject(), obj );
+		assertEquals( look.getCallbackExtension(), obj );
 	}
 	
 	/**

Back to the top