[e-cvs] cvs commit: e/src/jsrc/org/erights/e/elang/scope InnerScope.java OuterScope.java Scope.java ScopeMap.java

markm@eros.cs.jhu.edu markm@eros.cs.jhu.edu
Mon, 12 Nov 2001 21:13:54 -0500


markm       01/11/12 21:13:54

  Modified:    src/esrc/scripts eBrowser.e
               src/jsrc/org/erights/e/elang/interp LazyEvalSlot.java
                        LoaderScope.java ScopeSetup.java
               src/jsrc/org/erights/e/elang/scope InnerScope.java
                        OuterScope.java Scope.java ScopeMap.java
  Log:
  Fixed eBrowser for the new sprout-less world

Revision  Changes    Path
1.48      +8 -10     e/src/esrc/scripts/eBrowser.e

Index: eBrowser.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/eBrowser.e,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- eBrowser.e	2001/11/11 23:32:16	1.47
+++ eBrowser.e	2001/11/13 02:13:54	1.48
@@ -319,13 +319,6 @@
     def problemReporter := problemReporterMaker new(textSelector, resultPane, statusPane)
     def interpret() {
         traceln("ready")
-        def ScopeSetupMaker := <unsafe:org.erights.e.elang.interp.ScopeSetup>
-        traceln("made scoper")
-        def scope1 := ScopeSetupMaker privileged(false,
-                                                 stdout,
-                                                 stderr,
-                                                 interp)
-        traceln("made scope1")
         def subInterp {
             to blockAtTop() {
                 # ignored
@@ -340,12 +333,17 @@
             delegate { interp }
         }
         traceln("made subInterp")
-        var scope2 := scope1 sprout() bindFinal("interp", subInterp)
-        traceln("made scope2")
+        def ScopeSetupMaker := <unsafe:org.erights.e.elang.interp.ScopeSetup>
+        traceln("made scoper")
+        def scope := ScopeSetupMaker privileged(false,
+                                                stdout,
+                                                stderr,
+                                                subInterp)
+        traceln("made scope")
         try {
             def tree := e__quasiParser(sourceTwine)
             traceln("made tree")
-            def result := tree eval(scope2)
+            def result := tree eval(scope)
             traceln("Interpretation done")
             resultPane setText("Execution ended:\n# value: " + result)
             statusPane setText("Execution ended")



1.7       +3 -2      e/src/jsrc/org/erights/e/elang/interp/LazyEvalSlot.java

Index: LazyEvalSlot.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/interp/LazyEvalSlot.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- LazyEvalSlot.java	2001/11/11 00:15:30	1.6
+++ LazyEvalSlot.java	2001/11/13 02:13:54	1.7
@@ -21,6 +21,7 @@
 
 import org.erights.e.elang.evm.EExpr;
 import org.erights.e.elang.scope.Scope;
+import org.erights.e.elang.scope.OuterScope;
 import org.erights.e.elang.syntax.EParser;
 import org.erights.e.elib.eio.TextWriter;
 import org.erights.e.elib.prim.E;
@@ -80,8 +81,8 @@
         if (null != myOptSource) {
             //System.out.println("Lazy eval: " + myOptSource);
             EExpr eExpr = (EExpr)EParser.run(myOptSource);
-            Scope scope = (Scope)E.as(myOptScope, Scope.class);
-            myOptValue = eExpr.eval(scope.sprout());
+            OuterScope scope = (OuterScope)E.as(myOptScope, OuterScope.class);
+            myOptValue = eExpr.eval(scope.diverge());
             myOptScope = null;
             myOptSource = null;
         }



1.40      +5 -4      e/src/jsrc/org/erights/e/elang/interp/LoaderScope.java

Index: LoaderScope.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/interp/LoaderScope.java,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- LoaderScope.java	2001/11/12 18:23:16	1.39
+++ LoaderScope.java	2001/11/13 02:13:54	1.40
@@ -22,6 +22,7 @@
 import org.erights.e.develop.exception.ThrowableSugar;
 import org.erights.e.elang.evm.EExpr;
 import org.erights.e.elang.scope.Scope;
+import org.erights.e.elang.scope.OuterScope;
 import org.erights.e.elang.syntax.EParser;
 import org.erights.e.elib.eio.TextWriter;
 import org.erights.e.elib.prim.StaticMaker;
@@ -46,7 +47,7 @@
  */
 /*package*/ class LoaderScope extends Loader {
 
-    private Scope myUnivScope;
+    private OuterScope myUnivScope;
 
     private ClassLoader myOptLoader;
 
@@ -60,7 +61,7 @@
     /**
      *
      */
-    private LoaderScope(Scope univScope, ClassLoader optLoader) {
+    private LoaderScope(OuterScope univScope, ClassLoader optLoader) {
         myUnivScope = univScope;
         myOptLoader = optLoader;
         myAlreadyImported = FlexMap.fromTypes(String.class, FinalSlot.class);
@@ -69,7 +70,7 @@
     /**
      * optLoader defaults to null.
      */
-    /*package*/ LoaderScope(Scope univScope) {
+    /*package*/ LoaderScope(OuterScope univScope) {
         this(univScope, null);
     }
 
@@ -145,7 +146,7 @@
             //XXX Once we have the :confined auditor, we should detect
             //whether this object passes this auditor.
             isConfinedPtr[0] = false;
-            return eExpr.eval(myUnivScope.sprout());
+            return eExpr.eval(myUnivScope.diverge());
         }
         throw new RuntimeException(fqName + " not found");
     }



1.72      +8 -5      e/src/jsrc/org/erights/e/elang/interp/ScopeSetup.java

Index: ScopeSetup.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/interp/ScopeSetup.java,v
retrieving revision 1.71
retrieving revision 1.72
diff -u -r1.71 -r1.72
--- ScopeSetup.java	2001/11/12 18:23:16	1.71
+++ ScopeSetup.java	2001/11/13 02:13:54	1.72
@@ -94,6 +94,7 @@
 
     /**
      *
+     * @author <a href="mailto:tribble@e-dean.com">E. Dean Tribble</a>
      */
     static private ScopeMaker universalMaker() {
         Object[] promise = Ref.promise();
@@ -187,7 +188,7 @@
         um.comp("sml__quasiParser", XMLQuasiParser.XMLQuasiParserMaker);
 
         um.init("universalScope", univ);             // not uconstant
-        Scope realUniv = um.scope();
+        OuterScope realUniv = um.scope();
 
         univResolver.resolve(realUniv);
         importerResolver.resolve(new LoaderScope(realUniv));
@@ -213,7 +214,8 @@
     static public Scope privileged(boolean interactive,
                                    TextWriter stdout,
                                    TextWriter stderr,
-                                   Object interp) {
+                                   Object interp)
+    {
         ConstMap props = (ConstMap)E.as(E.call(interp, "getProps"),
                                         ConstMap.class);
         return privileged(interactive,
@@ -231,7 +233,8 @@
                                    TextWriter stdout,
                                    TextWriter stderr,
                                    ConstMap props,
-                                   Object interpPromise) {
+                                   Object interpPromise)
+    {
         // XXX need some decent way to handle magic powers.
         StaticMaker entropyMaker =
           StaticMaker.make(getClass("net.vattp.security.ESecureRandom"));
@@ -345,11 +348,11 @@
             return myBindings.domain();
         }
 
-        public Scope scope() {
+        public OuterScope scope() {
             return scope(false);
         }
 
-        public Scope scope(boolean isMutable) {
+        public OuterScope scope(boolean isMutable) {
             ScopeMap outerNouns = ScopeMap.make(myBindings.snapshot());
             int outerCount = myOuters.size();
             int outerSpace = outerCount + OUTER_SPACE;



1.5       +0 -4      e/src/jsrc/org/erights/e/elang/scope/InnerScope.java

Index: InnerScope.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/scope/InnerScope.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- InnerScope.java	2001/11/12 18:23:16	1.4
+++ InnerScope.java	2001/11/13 02:13:54	1.5
@@ -59,10 +59,6 @@
         myEvalContext.outers().bindOuter(name, slot);
     }
 
-    public Scope sprout() {
-        throw new RuntimeException("TODO unimplemented");
-    }
-
     public EvalContext newContext(int numLocals) {
         // TODO should this eliminate all the current locals?
         return myEvalContext.extended(numLocals);



1.5       +3 -2      e/src/jsrc/org/erights/e/elang/scope/OuterScope.java

Index: OuterScope.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/scope/OuterScope.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- OuterScope.java	2001/11/12 18:23:16	1.4
+++ OuterScope.java	2001/11/13 02:13:54	1.5
@@ -108,9 +108,10 @@
     }
 
     /**
-     * Sprouted scopes are never mutable.
+     * Return a new non-mutable OuterScope that does not share outers data
+     * structures with the receiver.
      */
-    public Scope sprout() {
+    public OuterScope diverge() {
         return new OuterScope(myScopeMap,
                               (Slot[])myOuters.clone(),
                               myNextOuter,



1.51      +4 -4      e/src/jsrc/org/erights/e/elang/scope/Scope.java

Index: Scope.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/scope/Scope.java,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- Scope.java	2001/11/12 18:23:16	1.50
+++ Scope.java	2001/11/13 02:13:54	1.51
@@ -75,15 +75,15 @@
     }
 
     /**
-     * Return a new scope that does not share outers data structures with the
-     * receiver.
+     *
      */
-    public abstract Scope sprout();
-
     public ScopeMap scopeMap() {
         return myScopeMap;
     }
 
+    /**
+     *
+     */
     public abstract NounExpr reserveOuter(String name);
 
     /**



1.6       +12 -14    e/src/jsrc/org/erights/e/elang/scope/ScopeMap.java

Index: ScopeMap.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/scope/ScopeMap.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- ScopeMap.java	2001/11/12 18:23:16	1.5
+++ ScopeMap.java	2001/11/13 02:13:54	1.6
@@ -22,12 +22,9 @@
 */
 
 import org.erights.e.elang.evm.NounExpr;
-import org.erights.e.elib.util.AlreadyDefinedException;
 import org.erights.e.elib.tables.ConstMap;
 import org.erights.e.elib.tables.ConstSet;
 import org.erights.e.elib.tables.FlexSet;
-import org.erights.e.elib.tables.EMap;
-import org.erights.e.elib.tables.ESet;
 
 /**
  * Static information about the runtime representation of a {@link Scope}.
@@ -70,18 +67,17 @@
 
     /**
      * Returns a ScopeMap just like this one, but with a new
-     * varName => NounExpr mapping added to the last contour.
+     * varName => NounExpr mapping added to the innermost contour.
      * <p>
      * This does not create a new contour, so this operation is rejected if
-     * varName is already defined in the last contour.  The operation is also
-     * rejected if varName is reserved.
+     * varName is already defined in the innermost contour.
      */
     public ScopeMap with(String varName, NounExpr noun) {
         assertShadowable(varName);
         return new ScopeMapLink(varName, noun, this);
     }
 
-    /*
+    /**
      * Return the set of all names mapped by the receiver.
      */
     public ConstSet namesSet() {
@@ -95,18 +91,20 @@
      */
     /*package*/ abstract void addNamesTo(FlexSet names);
 
-    /*
-     * Makes a new ScopeMap just like this one, but with a new empty last
-     * contour added.
+    /**
+     * Makes a new ScopeMap just like this one, but with a new empty
+     * innermost contour added.
      */
     public ScopeMap nested() {
         return new ContourBoundary(this);
     }
 
-    /*
-     * Throw an exception is the varName may not be shadowed, either
-     * because it is a special name or because it is already defined
-     * in the innermost contour.
+    /**
+     * Throw an exception is the varName may not be shadowed because it is
+     * already defined in the innermost contour.
+     * <p>
+     * If varName may not be shadowed because it is reserved, this is caught
+     * in {@link NounPattern} rather than here.
      */
     public abstract void assertShadowable(String varName);
 }