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