[
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 );
}
/**