[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",