[e-cvs] cvs commit: e/src/jsrc/org/erights/e/elib/prim StaticMaker.java
markm@eros.cs.jhu.edu
markm@eros.cs.jhu.edu
Fri, 17 Aug 2001 01:48:58 -0400
markm 01/08/17 01:48:58
Modified: src Makefile
src/esrc/org/erights/e/elang/cmd cmdLoopMakerAuthor.emaker
src/jsrc/org/erights/e/elang/interp Interp.java
src/jsrc/org/erights/e/elib/prim StaticMaker.java
Added: src/esrc/org/erights/e/elang/cmd cmdMakerMaker.emaker
cmdMakerMaker.updoc
Log:
cmdLoop progress
Revision Changes Path
1.107 +3 -3 e/src/Makefile
Index: Makefile
===================================================================
RCS file: /cvs/e/src/Makefile,v
retrieving revision 1.106
retrieving revision 1.107
diff -u -r1.106 -r1.107
--- Makefile 2001/08/17 03:11:32 1.106
+++ Makefile 2001/08/17 05:48:57 1.107
@@ -1,14 +1,14 @@
# This Makefile is hereby placed in the public domain.
#
# Makefile for $(TOP)/src.
-# Note that we now depend on Java JDK >= 1.2.
+# Note that we now depend on Java JDK >= 1.3.
default: draft explain
# Prefix tagging this release's attributes
PREFIX=tl-E
-DOTVER=0.8.9zc
-TAGVER=0_8_9zc
+DOTVER=0.8.9zd
+TAGVER=0_8_9zd
RELEASE=working
TOP=..
1.2 +10 -6 e/src/esrc/org/erights/e/elang/cmd/cmdLoopMakerAuthor.emaker
Index: cmdLoopMakerAuthor.emaker
===================================================================
RCS file: /cvs/e/src/esrc/org/erights/e/elang/cmd/cmdLoopMakerAuthor.emaker,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- cmdLoopMakerAuthor.emaker 2001/08/16 07:05:38 1.1
+++ cmdLoopMakerAuthor.emaker 2001/08/17 05:48:57 1.2
@@ -11,8 +11,10 @@
def topPov := topScope newPov()
var expandFlag :boolean :=
propUtils testProp(props, "e.interp.expand")
- var verboseFlag :boolean :=
- propUtils testProp(props, "e.interp.verbose")
+ var showsJavaStackFlag :boolean :=
+ propUtils testProp(props, "e.interp.shows-java-stack")
+ var showsEStackFlag :boolean :=
+ propUtils testProp(props, "e.interp.shows-e-stack")
def results := [] diverge()
@@ -21,11 +23,13 @@
to getArgs() :any { args }
to getProps() :any { props }
- to getExpand() :boolean { expandFlag }
- to getVerbose() :boolean { verboseFlag }
- to getInteractive() :boolean { true }
+ to getExpand() :boolean { expandFlag }
+ to getShowsJavaStack() :boolean { showsJavaStackFlag }
+ to getShowsEStack() :boolean { showsEStackFlag }
+ to getInteractive() :boolean { true }
to setExpand(newFlag) { expandFlag := newFlag }
- to setVerbose(newFlag) { verboseFlag := newFlag }
+ to setShowsJavaStack(newFlag) { showsJavaStackFlag := newFlag }
+ to setShowsEStack(newFlag) { showsEStackFlag := newFlag }
to getTopScope() :any { topPov[0] }
to getTopPov() :any { topPov }
1.1 e/src/esrc/org/erights/e/elang/cmd/cmdMakerMaker.emaker
Index: cmdMakerMaker.emaker
===================================================================
def RuntimeException := <import:java.lang.RuntimeException> asType()
def TwineException :=
<import:org.erights.e.elib.util.TwineException> asType()
# outputs prefix & returns indented TextWriter
def commentBlock {
to (out, keyword) :any {
def prefix := `# $keyword: `
out print(prefix)
out indent("#" + (" " * (prefix size() -1)))
}
to (out, keyword, value) {
commentBlock(out, keyword) print(value)
out println()
out println()
}
}
class cmdMakerMaker(cmdLoop, out, err, trace) :any {
class cmdMaker(expr) :any {
def cmd() {
if (cmdLoop getExpand()) {
commentBlock(out, "expansionx", expr)
}
def pov := cmdLoop getTopPov()
var success := true
def result := try {
expr eval(pov)
} catch problem {
success := false
Ref broken(problem)
}
cmdLoop pushResult(result)
if (success) {
if (result != null) {
commentBlock(out, "valuex") quote(result)
out println()
out println()
}
} else {
def problem := Ref optProblem(result)
def leaf := problem leaf()
def leafType := leaf getAllegedType()
def printable := if (leafType == RuntimeException ||
leaf =~ ignore :TwineException) {
leaf getMessage()
} else {
leaf
}
def indented := commentBlock(err, "problemx")
indented println(printable)
if (cmdLoop getShowsJavaStack()) {
err indent("# ") lnPrint(leaf javaStack())
}
if (cmdLoop getShowsEStack()) {
err indent("# ") print(problem eStack())
}
err println()
err println()
}
}
}
}
1.1 e/src/esrc/org/erights/e/elang/cmd/cmdMakerMaker.updoc
Index: cmdMakerMaker.updoc
===================================================================
? def cmd__uriGetter := <import:org.erights.e.elang.cmd.*>
# value: <import:org.erights.e.elang.cmd.*>
? def cmdMakerMaker := <cmd:cmdMakerMaker>
# value: <cmdMakerMaker>
? def QueueMaker := <unsafe:org.erights.e.elib.prim.Queue>
# value: <unsafe:org.erights.e.elib.prim.Queue>
? def SystemGC {
> to gc() {
> println("System.gc()")
> <unsafe:java.lang.System> gc()
> }
> }
# value: <SystemGC>
? def cmdLoopMaker := <cmd:cmdLoopMakerAuthor>(QueueMaker, SystemGC)
# value: <cmdLoopMaker>
? def ScopeImplMaker := <unsafe:org.erights.e.elang.scope.ScopeImpl>
# value: <unsafe:org.erights.e.elang.scope.ScopeImpl>
? def scope := ScopeImplMaker new([])
# value: org.erights.e.elang.scope.ScopeImpl@5dffbd
? scope asMap()
# value: [] asMap
? def cmdLoop := cmdLoopMaker new(["a", "b"],
> interp getProps(),
> scope)
# value: <cmdLoop>
? def cmdMaker := cmdMakerMaker new(cmdLoop, stdout, stderr, stderr)
# value: <cmdMaker>
? def cmd := cmdMaker new(e`2 + 5`)
# value: <cmd>
? cmdLoop enqueue(cmd)
?
# valuex: 7
? cmdLoop enqueue(cmdMaker new(e`3 _/ 0`))
?
# problemx: <ArithmeticException: BigInteger divide by zero>
#
? cmdLoop setShowsEStack(true)
? cmdLoop enqueue(cmdMaker new(e`3 _/ 0`))
?
# problemx: <ArithmeticException: BigInteger divide by zero>
#
# 3 floorDivide(0)
# e`3 floorDivide(0)` eval([org.erights.e.elang.scope.ScopeImpl@5dffbd])
?
1.62 +1 -1 e/src/jsrc/org/erights/e/elang/interp/Interp.java
Index: Interp.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/interp/Interp.java,v
retrieving revision 1.61
retrieving revision 1.62
diff -u -r1.61 -r1.62
--- Interp.java 2001/08/13 01:47:03 1.61
+++ Interp.java 2001/08/17 05:48:57 1.62
@@ -380,7 +380,7 @@
}
}
if (verboseFlag) {
- errs.indent("# ").lnPrint(ThrowableSugar.javaStack(t));
+ errs.indent("# ").lnPrint(ThrowableSugar.javaStack(leaf));
}
errs.indent("# ").print(ThrowableSugar.eStack(t));
1.12 +4 -0 e/src/jsrc/org/erights/e/elib/prim/StaticMaker.java
Index: StaticMaker.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/prim/StaticMaker.java,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- StaticMaker.java 2001/08/17 03:11:33 1.11
+++ StaticMaker.java 2001/08/17 05:48:58 1.12
@@ -57,6 +57,7 @@
"java.lang.Number",
"java.lang.Object",
"java.lang.Runnable",
+ "java.lang.RuntimeException", //must enforce transPassByCopy
"java.lang.Short",
//"java.lang.StrictMath", only after we remove random()
"java.lang.String",
@@ -91,6 +92,9 @@
"org.erights.e.elib.tables.EMap",
"org.erights.e.elib.tables.FlexList",
"org.erights.e.elib.tables.FlexMap",
+
+ //must enforce transPassByCopy
+ "org.erights.e.elib.util.TwineException",
"net.captp.api.SturdyRef",
"org.capml.quasi.XMLQuasiParser",