Nice/src/bossa/syntax tools.nice,1.104,1.105 scope.nice,1.4,1.5 VarScope.java,1.22,1.23 Node.java,1.68,1.69

Daniel Bonniot <[email protected]>
Newsgroups gmane.comp.lang.nice.cvs
Message-ID <[email protected]>
Update of /cvsroot/nice/Nice/src/bossa/syntax
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24573/src/bossa/syntax

Modified Files:
	tools.nice scope.nice VarScope.java Node.java 
Log Message:
Added the nice.tools.visibility package. Use it for global scoping of
(non-type) symbols. No functionality change yet.


Index: tools.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/tools.nice,v
retrieving revision 1.104
retrieving revision 1.105
diff -C2 -d -r1.104 -r1.105
*** tools.nice	6 Mar 2005 01:34:26 -0000	1.104
--- tools.nice	6 Mar 2005 12:55:57 -0000	1.105
***************
*** 220,223 ****
--- 220,226 ----
  GlobalVarScope javaScope() = native Module.javaScope;
  
+ void addSymbol(VarScope, VarSymbol) = native void VarScope.addSymbol(Symbol);
+ void removeSymbol(VarScope, VarSymbol) = native void VarScope.removeSymbol(Symbol);
+ 
  // Local Variables:
  // nice-xprogram: "../bin/nicec -d ../classes"

Index: Node.java
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/Node.java,v
retrieving revision 1.68
retrieving revision 1.69
diff -C2 -d -r1.68 -r1.69
*** Node.java	6 Mar 2005 01:34:26 -0000	1.68
--- Node.java	6 Mar 2005 12:55:57 -0000	1.69
***************
*** 171,176 ****
          this.typeScope = typeOuter;
          break;
!       case down: 
! 	this.scope = new VarScope(outer,varSymbols);
  	this.typeScope = new TypeScope(typeOuter);
  	break;
--- 171,176 ----
          this.typeScope = typeOuter;
          break;
!       case down:
! 	this.scope = VarScope.create(outer, varSymbols);
  	this.typeScope = new TypeScope(typeOuter);
  	break;
***************
*** 182,189 ****
  	this.typeScope = typeOuter;
  	break;
! 	
        case upper:
  	if(outer==null)
! 	  outer = new VarScope(null);
  	outer.addSymbols(varSymbols);
  	this.scope = outer;
--- 182,189 ----
  	this.typeScope = typeOuter;
  	break;
! 
        case upper:
  	if(outer==null)
! 	  outer = VarScope.create(null);
  	outer.addSymbols(varSymbols);
  	this.scope = outer;

Index: VarScope.java
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/VarScope.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -C2 -d -r1.22 -r1.23
*** VarScope.java	6 Mar 2005 01:34:26 -0000	1.22
--- VarScope.java	6 Mar 2005 12:55:57 -0000	1.23
***************
*** 22,45 ****
     @author Daniel Bonniot ([email protected])
  */
! public class VarScope
  {
!   public VarScope(VarScope outer)
!   {
!     this.outer = outer;
!     this.defs = new HashMultiTable();
!   }
!   
!   public VarScope(VarScope outer, 
! 		  Collection /* of VarSymbol */ defs)
!   {
!     this(outer);
!     addSymbols(defs);
!   }
  
-   void addSymbol(/*VarSymbol*/Symbol s)
-   {
-     this.defs.put(s.name,s);
-   }
-   
    /**
       Adds a collection of VarSymbols
--- 22,29 ----
     @author Daniel Bonniot ([email protected])
  */
! public abstract class VarScope
  {
!   abstract void addSymbol(/*VarSymbol*/Symbol s);
  
    /**
       Adds a collection of VarSymbols
***************
*** 57,61 ****
        }
    }
!   
    void removeSymbol(/*VarSymbol*/Symbol sym)
    {
--- 41,81 ----
        }
    }
! 
!   abstract void removeSymbol(/*VarSymbol*/Symbol sym);
! 
!   public abstract List lookup(LocatedString i);
! 
!   abstract List globalLookup(LocatedString i);
! 
!   static VarScope create(VarScope outer)
!   {
!     return new LocalVarScope(outer);
!   }
! 
!   static VarScope create(VarScope outer, Collection /* of VarSymbol */ defs)
!   {
!     return new LocalVarScope(outer, defs);
!   }
! }
! 
! class LocalVarScope extends VarScope
! {
!   public LocalVarScope(VarScope outer)
!   {
!     this.outer = outer;
!     this.defs = new HashMultiTable();
!   }
! 
!   public LocalVarScope(VarScope outer, Collection /* of VarSymbol */ defs)
!   {
!     this(outer);
!     addSymbols(defs);
!   }
! 
!   void addSymbol(/*VarSymbol*/Symbol s)
!   {
!     this.defs.put(s.name,s);
!   }
! 
    void removeSymbol(/*VarSymbol*/Symbol sym)
    {

Index: scope.nice
===================================================================
RCS file: /cvsroot/nice/Nice/src/bossa/syntax/scope.nice,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** scope.nice	6 Mar 2005 01:34:26 -0000	1.4
--- scope.nice	6 Mar 2005 12:55:57 -0000	1.5
***************
*** 13,36 ****
  package bossa.syntax;
  
  /**
     The global scope of symbols.
- 
   */
  public class GlobalVarScope extends VarScope
  {
!   lookup(i)
    {
      // If there is any method by that name waiting, load it.
!     loadJavaMethods(i.toString(), this);
  
!     return super;
    }
  
!   globalLookup(i) = this.lookup(i);
  }
  
  VarScope createGlobalVarScope()
  {
!   return new GlobalVarScope(null);
  }
  
--- 13,50 ----
  package bossa.syntax;
  
+ import nice.tools.visibility;
+ 
  /**
     The global scope of symbols.
   */
  public class GlobalVarScope extends VarScope
  {
!   private Scope<VarSymbol> impl = new Scope(name: "", parent: null);
! 
!   addSymbol(VarSymbol sym) = impl.add(sym.getName().toString(), sym);
! 
!   removeSymbol(VarSymbol sym) = impl.remove(sym.getName().toString(), sym);
! 
!   lookup(LocatedString name)
    {
+     let s = name.toString();
+ 
      // If there is any method by that name waiting, load it.
!     loadJavaMethods(s, this);
  
!     let res = impl[s];
! 
!     if (res == null)
!       return Collections.EMPTY_LIST;
!     else
!       return new LinkedList(res);
    }
  
!   globalLookup(name) = this.lookup(name);
  }
  
  VarScope createGlobalVarScope()
  {
!   return new GlobalVarScope();
  }
  



-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.