[e-cvs] cvs commit: e/src/jsrc/org/erights/e/elang/syntax EParser.java e.y

markm@eros.cs.jhu.edu markm@eros.cs.jhu.edu
Sun, 9 Sep 2001 03:57:02 -0400


markm       01/09/09 03:57:02

  Modified:    src      Makefile
               src/bin/resources/org/erights/e/elang/syntax
                        ParserTables.data
               src/csrc/setup eprops-template.txt
               src/esrc/org/erights/e/elang/cmd cmdMakerMaker.emaker
               src/esrc/scripts setup.e updoc.e
               src/jsrc/org/erights/e/elang/evm AssignExpr.java
               src/jsrc/org/erights/e/elang/syntax EParser.java e.y
  Log:
  updoc works with evalServer

Revision  Changes    Path
1.116     +2 -2      e/src/Makefile

Index: Makefile
===================================================================
RCS file: /cvs/e/src/Makefile,v
retrieving revision 1.115
retrieving revision 1.116
diff -u -r1.115 -r1.116
--- Makefile	2001/09/08 22:59:20	1.115
+++ Makefile	2001/09/09 07:57:02	1.116
@@ -7,8 +7,8 @@
 
 # Prefix tagging this release's attributes
 PREFIX=tl-E
-DOTVER=0.8.9zo
-TAGVER=0_8_9zo
+DOTVER=0.8.9zp
+TAGVER=0_8_9zp
 RELEASE=working
 
 TOP=..



1.20      +14 -12    e/src/bin/resources/org/erights/e/elang/syntax/ParserTables.data

Index: ParserTables.data
===================================================================
RCS file: /cvs/e/src/bin/resources/org/erights/e/elang/syntax/ParserTables.data,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -r1.19 -r1.20
Binary files /tmp/cvsxNCIlw and /tmp/cvsI88VbS differ



1.19      +6 -0      e/src/csrc/setup/eprops-template.txt

Index: eprops-template.txt
===================================================================
RCS file: /cvs/e/src/csrc/setup/eprops-template.txt,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- eprops-template.txt	2001/08/26 01:21:30	1.18
+++ eprops-template.txt	2001/09/09 07:57:02	1.19
@@ -410,3 +410,9 @@
 # considered valid whitespace.
 
 e.enable.notabs=${{e.enable.notabs}}
+
+
+# Enables syntax such as 'require (cond) thunk{str}' to be accepted
+# and be equivalent of 'require (cond, thunk{str})'
+
+e.enable.lambda-args=${{e.enable.lambda-args}}



1.5       +2 -2      e/src/esrc/org/erights/e/elang/cmd/cmdMakerMaker.emaker

Index: cmdMakerMaker.emaker
===================================================================
RCS file: /cvs/e/src/esrc/org/erights/e/elang/cmd/cmdMakerMaker.emaker,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- cmdMakerMaker.emaker	2001/09/07 05:49:19	1.4
+++ cmdMakerMaker.emaker	2001/09/09 07:57:02	1.5
@@ -33,7 +33,7 @@
                 # should deal with embedded $-holes as result[i]
                 def expr := EParser(sourceCode)
                 if (cmdLoop getExpand()) {
-                    commentBlock(tw, "expansionx", expr)
+                    commentBlock(tw, "expansion", expr)
                 }
                 expr eval(pov)
             } catch problem {
@@ -45,7 +45,7 @@
             takeBuf(tw, "stderr", errBuf)
             if (success) {
                 if (result != null) {
-                    commentBlock(tw, "valuex") quote(result)
+                    commentBlock(tw, "value") quote(result)
                     tw println()
                     tw println()
                 }



1.15      +2 -1      e/src/esrc/scripts/setup.e

Index: setup.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/setup.e,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- setup.e	2001/08/26 01:21:31	1.14
+++ setup.e	2001/09/09 07:57:02	1.15
@@ -31,7 +31,8 @@
     "e.enable.plumbing"            => "false",
     "e.enable.typedef"             => "false",
     "e.enable.when-clauses"        => "false",
-    "e.enable.notabs"              => "false"
+    "e.enable.notabs"              => "false",
+    "e.enable.lambda-args"         => "false"
 ] diverge()
 
 # 'false' means overwrite rather than complain



1.12      +23 -25    e/src/esrc/scripts/updoc.e

Index: updoc.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/updoc.e,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- updoc.e	2001/08/24 17:14:02	1.11
+++ updoc.e	2001/09/09 07:57:02	1.12
@@ -131,8 +131,8 @@
         # <tt>runTest</tt> evaluates an expression and remembers the
         # new answers. 
 
-        to newReportVow(scriptEvaluatorQ) :any {
-            scriptEvaluatorQ <- evalCmdVow(expr)
+        to newReportVow(scriptEvaluatorRcvr) :any {
+            scriptEvaluatorRcvr <- evalCmdVow(expr)
         }
 
         to report(newReport, out) {
@@ -160,20 +160,17 @@
             }
         }
 
-        # <tt>runTest</tt> runs a list of test cases in sequence,
-        # using the same interactive scope. 
+        # <tt>runTest</tt> runs a list of test cases in sequence. 
         # <p>
-        # <tt>runTest</tt> makes a new top-level interactive scope for
-        # running the test script. The test cases in the script are
-        # run in sequence in the same scope, so that each test case
-        # sees the scope as affected by previous cases. 
+        # The test cases in the script are run in sequence in the same scope,
+        # so that each test case sees the scope as affected by previous cases.
 
-        to runTest(scriptEvaluatorQ, out) {
-            def newReportVows := [] diverge()
+        to runTest(scriptEvaluatorRcvr, out) {
+            def newReportVowList := [] diverge()
             for testCase in cases {
-                newReportVows push(testCase newReportVow(scriptEvaluatorQ))
+                newReportVowList push(testCase newReportVow(scriptEvaluatorRcvr))
             }
-            newReportVows := newReportVows snapshot()
+            def newReportVows := newReportVowList snapshot()
             def doWhen(i) {
                 if (i < newReportVows size()) {
                     when (newReportVows[i]) -> done(newReport) {
@@ -367,11 +364,11 @@
 # Given the source text string (or twine) of an updoc file, parse, run,
 # and report the test outcomes.
 
-def updocTestSrc(testSrc, scriptEvaluatorQ, out) :boolean {
+def updocTestSrc(testSrc, scriptEvaluatorRcvr, out) :boolean {
     try {
         def parser := updocParserMaker new(testSrc)
-        def script := parser parse()
-        script runTest(scriptEvaluatorQ, out)
+        def script := parser readScript()
+        script runTest(scriptEvaluatorRcvr, out)
         script size() >= 1
     } catch problem {
         if (problem leaf() =~ sex :SyntaxException) {
@@ -427,7 +424,7 @@
 # Run updoc either on a ".updoc" file, on the text extracted from a
 # ".html" file.
 
-def updocOne(file, path, evalServerQ, out) {
+def updocOne(file, path, evalServerRcvr, out) {
     def hash := file getCryptoHash()
     if (hashCache has(hash)) {
         out lnPrint(`skipping $path`)
@@ -437,8 +434,8 @@
         # to pass source info through (preserving twine-ness), then
         # switch from getText() to getTwine()
         def testSrc := file getText()
-        def scriptEvaluatorQ := evalServerQ <- newScriptEvaluator([])
-        if (! (updocTestSrc(testSrc, scriptEvaluatorQ, out))) {
+        def scriptEvaluatorRcvr := evalServerRcvr <- newScriptEvaluator([])
+        if (! (updocTestSrc(testSrc, scriptEvaluatorRcvr, out))) {
             hashCache put(hash)
         }
     } else if (endsWithAny(path, [".html", ".htm"])) {
@@ -451,9 +448,9 @@
             out indent("#                  ") print(problem)
             null
         }
-        def scriptEvaluatorQ := evalServerQ <- newScriptEvaluator([])
+        def scriptEvaluatorRcvr := evalServerRcvr <- newScriptEvaluator([])
         if (testSrc != null &&
-            ! (updocTestSrc(testSrc, scriptEvaluatorQ, out))) {
+            ! (updocTestSrc(testSrc, scriptEvaluatorRcvr, out))) {
 
             hashCache put(hash)
         }
@@ -466,12 +463,13 @@
 
 def cmd__uriGetter := <import:org.erights.e.elang.cmd.*>
 traceln("cp8")
+introducer onTheAir()
 def evalServerMaker := 
     <cmd:evalServerMakerAuthor>(unsafe__uriGetter, introducer, println)
 traceln("cp9")
 def vat := evalServerMaker new([], interp getProps(), "updocer")
 traceln("cp10")
-def evalServerQ := vat getEvalServerQ()
+def evalServerRcvr := vat getEvalServerRcvr()
 traceln("cp11")
 
 # Run updoc either on a ".updoc" file, on the text extracted from a
@@ -479,20 +477,20 @@
 
 def updoc(filedir, out) {
     if (filedir =~ url :URL) {
-        updocOne(url, url toExternalForm(), evalServerQ, out)
+        updocOne(url, url toExternalForm(), evalServerRcvr, out)
     } else if (filedir isDirectory()) {
         throw("XXX not yet implemented")
         # for each in filedir { updoc(each, out) }
         # hashCache checkpoint()
     } else {
-        updocOne(filedir, filedir getPath(), evalServerQ, out)
+        updocOne(filedir, filedir getPath(), evalServerRcvr, out)
     }
 }
 
 def args := interp getArgs()
 def names := if (args == []) {
-    # ["d:/e/doc/elang/intro/finding-text.html"]
-    throw("usage: updoc.e files...")
+    ["d:/e/doc/elang/intro/finding-text.html"]
+    # throw("usage: updoc.e files...")
 } else {
     args
 }



1.27      +6 -1      e/src/jsrc/org/erights/e/elang/evm/AssignExpr.java

Index: AssignExpr.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/evm/AssignExpr.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- AssignExpr.java	2001/09/07 05:49:20	1.26
+++ AssignExpr.java	2001/09/09 07:57:02	1.27
@@ -24,6 +24,7 @@
 import org.erights.e.elib.ref.Ref;
 import org.erights.e.elib.tables.FlexList;
 import org.erights.e.elib.tables.FlexMap;
+import org.erights.e.develop.exception.NestedException;
 
 import java.io.IOException;
 
@@ -80,7 +81,11 @@
      */
     /*package*/ Object subEval(Scope[] pov, boolean onlyFlag) {
         Object result = myRValue.subEval(pov, false);
-        pov[0].put(myNoun.name(), result);
+        try {
+            pov[0].put(myNoun.name(), result);
+        } catch (Exception ex) {
+            throw new NestedException("assigning " + myNoun.name(), ex);
+        }
         return result;
     }
 



1.89      +669 -637  e/src/jsrc/org/erights/e/elang/syntax/EParser.java

Index: EParser.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/syntax/EParser.java,v
retrieving revision 1.88
retrieving revision 1.89
diff -u -r1.88 -r1.89
--- EParser.java	2001/09/08 22:59:20	1.88
+++ EParser.java	2001/09/09 07:57:02	1.89
@@ -327,37 +327,37 @@
    24,   24,   26,   26,   25,   25,   25,   28,   28,   27,
    27,   27,   27,   27,   27,   30,   30,   29,   29,   32,
    32,   31,   31,   31,   31,   31,   33,   33,   33,   33,
-   33,   33,   36,   36,   36,   36,   35,   35,   35,   35,
+   33,   33,   33,   33,   33,   36,   36,   36,   36,   36,
+   36,   35,   35,   35,   35,   34,   34,   34,   34,   34,
    34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
    34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-   34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-   34,   34,   34,   34,   40,   43,   56,   56,   56,   57,
-   57,   59,   59,   59,   61,   60,   60,   41,   41,   41,
-   42,   42,   62,   62,   63,   63,   64,   65,   65,   67,
-   67,   68,   69,   69,   46,   46,   70,   70,    3,    3,
-    3,   72,   72,   72,   72,   72,   73,   73,   74,   74,
-   75,   75,   76,   76,   77,   77,   78,   78,   78,   71,
-   71,   71,   71,   71,   71,   71,   71,   71,   18,   18,
-   79,   79,   79,   79,   79,   79,   79,   15,   15,   80,
-   80,   47,   47,   82,   82,   83,   83,   83,   83,   83,
-   84,   84,   84,   49,   49,   49,   50,   86,   87,   85,
-   85,   88,   54,   54,   89,   89,   90,    1,    1,    9,
-    9,   91,   66,   39,   39,   37,   37,   81,   81,   44,
-   44,   92,   92,   38,   13,   13,   17,   17,   17,   17,
-   17,   17,   17,   17,   17,   17,   17,   17,   45,   45,
-   51,   48,   48,   48,   95,   95,   96,   96,   94,   94,
-   52,   52,   55,   97,   53,   53,   58,   58,   98,   98,
-   98,   98,  100,  100,  100,  100,   99,   99,   99,  102,
-  102,  103,  103,  104,  104,  101,  101,   93,   93,   93,
-   93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-   93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-   93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-   93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-   93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-   93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-   93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-   93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
-   93,   93,
+   34,   34,   34,   34,   55,   55,   55,   55,   55,   55,
+   40,   43,   52,   52,   52,   53,   53,   60,   60,   60,
+   62,   61,   61,   41,   41,   41,   42,   42,   63,   63,
+   64,   64,   65,   66,   66,   68,   68,   69,   70,   70,
+   46,   46,   71,   71,    3,    3,    3,   73,   73,   73,
+   73,   73,   74,   74,   75,   75,   76,   76,   77,   77,
+   78,   78,   79,   79,   79,   72,   72,   72,   72,   72,
+   72,   72,   72,   72,   18,   18,   80,   80,   80,   80,
+   80,   80,   80,   15,   15,   81,   81,   56,   56,   83,
+   83,   84,   84,   84,   84,   84,   85,   85,   85,   58,
+   58,   58,   59,   87,   88,   86,   86,   89,   50,   50,
+   90,   90,   91,    1,    1,    9,    9,   92,   67,   39,
+   39,   37,   37,   82,   82,   44,   44,   93,   93,   38,
+   13,   13,   17,   17,   17,   17,   17,   17,   17,   17,
+   17,   17,   17,   17,   45,   45,   47,   57,   57,   57,
+   96,   96,   97,   97,   95,   95,   48,   48,   51,   98,
+   49,   49,   54,   54,   99,   99,   99,   99,  101,  101,
+  101,  101,  100,  100,  100,  103,  103,  104,  104,  105,
+  105,  102,  102,   94,   94,   94,   94,   94,   94,   94,
+   94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
+   94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
+   94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
+   94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
+   94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
+   94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
+   94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
+   94,   94,   94,   94,   94,   94,   94,   94,
 };
 final static short yylen[] = {                            2,
     1,    1,    2,    1,    1,    3,    3,    1,    3,    1,
@@ -368,29 +368,29 @@
     3,    3,    1,    1,    1,    3,    3,    1,    1,    1,
     3,    3,    3,    3,    3,    1,    1,    1,    3,    1,
     1,    1,    2,    2,    2,    2,    1,    1,    4,    4,
-    3,    4,    2,    3,    3,    4,    1,    2,    3,    4,
-    1,    1,    1,    1,    1,    1,    1,    3,    2,    1,
-    3,    3,    1,    3,    3,    5,    3,    4,    2,    3,
-    3,    4,    5,    1,    1,    4,    2,    2,    4,    2,
-    3,    2,    3,    2,    1,    3,    3,    5,    5,    4,
-    4,    0,    1,    1,    0,    5,    4,    0,    1,    3,
-    1,    2,    2,    3,    3,    5,    0,    1,    2,    1,
-    4,    2,    1,    4,    1,    1,    3,    2,    1,    3,
-    4,    1,    3,    5,    3,    5,    1,    2,    1,    2,
-    1,    2,    2,    3,    1,    1,    3,    3,    5,    3,
-    1,    2,    1,    1,    4,    4,    4,    2,    4,    2,
-    1,    1,    2,    4,    4,    1,    2,    2,    5,    1,
-    1,    1,    3,    1,    4,    3,    4,    3,    4,    3,
-    4,    5,    2,    4,    5,    2,    5,    3,    2,    0,
-    2,    3,    7,    5,    1,    3,    3,    0,    1,    1,
-    2,    0,    1,    3,    5,    1,    1,    1,    3,    1,
-    3,    3,    2,    1,    1,    1,    1,    1,    1,    1,
-    1,    1,    1,    1,    1,    1,    1,    1,    3,    5,
-    4,    5,    1,    1,    1,    3,    1,    3,    1,    3,
-    1,    1,    2,    3,    0,    2,    5,    3,    1,    2,
-    2,    4,    2,    4,    2,    4,    2,    5,    4,    2,
-    3,    1,    4,    2,    2,    0,    2,    1,    1,    1,
+    3,    3,    2,    3,    4,    2,    3,    3,    4,    2,
+    3,    1,    2,    3,    4,    1,    1,    1,    1,    1,
+    1,    1,    3,    2,    1,    3,    3,    1,    3,    3,
+    5,    3,    4,    5,    1,    1,    4,    2,    2,    4,
+    2,    3,    2,    1,    3,    4,    2,    3,    3,    2,
+    1,    3,    3,    5,    5,    4,    4,    0,    1,    1,
+    0,    5,    4,    0,    1,    3,    1,    2,    2,    3,
+    3,    5,    0,    1,    2,    1,    4,    2,    1,    4,
+    1,    1,    3,    2,    1,    3,    4,    1,    3,    5,
+    3,    5,    1,    2,    1,    2,    1,    2,    2,    3,
+    1,    1,    3,    3,    5,    3,    1,    2,    1,    1,
+    4,    4,    4,    2,    4,    2,    1,    1,    2,    4,
+    4,    1,    2,    2,    5,    1,    1,    1,    3,    1,
+    4,    3,    4,    3,    4,    3,    4,    5,    2,    4,
+    5,    2,    5,    3,    2,    0,    2,    3,    7,    5,
+    1,    3,    3,    0,    1,    1,    2,    0,    1,    3,
+    2,    1,    1,    1,    3,    1,    3,    3,    2,    1,
     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
+    1,    1,    1,    1,    3,    5,    4,    5,    1,    1,
+    1,    3,    1,    3,    1,    3,    1,    1,    2,    3,
+    0,    2,    5,    3,    1,    2,    2,    4,    2,    4,
+    2,    4,    2,    5,    4,    2,    3,    1,    4,    2,
+    2,    0,    2,    1,    1,    1,    1,    1,    1,    1,
     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -398,93 +398,93 @@
     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
     1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-    1,    1,
+    1,    1,    1,    1,    1,    1,    1,    1,
 };
 final static short yydefred[] = {                         0,
-  230,    0,    0,    0,    2,    0,  245,    0,    0,    0,
-  298,  299,  300,  301,  302,  303,  304,  305,  306,  307,
-  308,  309,  310,  311,  312,  313,  314,  315,  316,  317,
-  318,  319,  320,  321,  322,  323,  324,  325,  326,  327,
-  328,  329,  330,  331,  332,  333,  334,  335,  336,  337,
-  338,  339,  340,  341,  342,  343,  344,  345,  346,  347,
-  348,  349,  350,  351,  352,  353,  354,  355,  356,  357,
-  358,  359,  360,  361,  362,  363,  364,  365,  366,  367,
-  368,  369,  370,  371,  372,  373,  374,  375,  376,  377,
-  378,  379,  380,  381,  382,    0,    0,    0,    0,    0,
-  183,    0,    3,    0,  184,    0,  169,    0,  162,  167,
-  246,   91,   92,   93,   94,   95,   97,    0,    0,    0,
+  236,    0,    0,    0,    2,    0,  251,    0,    0,    0,
+  304,  305,  306,  307,  308,  309,  310,  311,  312,  313,
+  314,  315,  316,  317,  318,  319,  320,  321,  322,  323,
+  324,  325,  326,  327,  328,  329,  330,  331,  332,  333,
+  334,  335,  336,  337,  338,  339,  340,  341,  342,  343,
+  344,  345,  346,  347,  348,  349,  350,  351,  352,  353,
+  354,  355,  356,  357,  358,  359,  360,  361,  362,  363,
+  364,  365,  366,  367,  368,  369,  370,  371,  372,  373,
+  374,  375,  376,  377,  378,  379,  380,  381,  382,  383,
+  384,  385,  386,  387,  388,    0,    0,    0,    0,    0,
+  189,    0,    3,    0,  190,    0,  175,    0,  168,  173,
+  252,   96,   97,   98,   99,  100,  102,    0,    0,    0,
     0,    4,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    5,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    8,   12,    0,   15,
     0,    0,    0,    0,   28,    0,    0,    0,    0,    0,
-   60,    0,    0,   87,    0,   78,   96,    0,  100,  103,
-  114,  115,  231,    0,    0,    0,    0,    0,  168,  182,
-    0,  233,    0,    0,  148,    0,    0,    0,  153,    0,
-    0,    0,    0,    0,    0,  171,  170,    0,    0,    0,
-  134,  133,    0,    0,  200,  201,    0,    0,    0,    0,
-  192,  191,    0,    0,    0,  196,    0,    0,    0,  156,
-    0,    0,    0,  244,    0,   83,    0,  109,  232,    0,
-    0,    0,    0,    0,    0,    0,  122,   76,   75,   73,
-   74,    0,    0,    0,    0,    0,  236,    0,  240,  117,
-  118,    0,    0,  120,    0,    0,    0,  124,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    6,    0,
-    0,    0,    0,  247,  248,  249,  250,  251,    0,  252,
-  253,  254,  255,  256,  257,  258,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,   88,    0,
-  141,   99,    0,    0,    0,    0,    0,    0,  158,    0,
-    0,    0,  149,    0,    0,  152,    0,    0,    0,   10,
-  140,  180,    0,    0,  175,  173,  176,    0,  172,  160,
-   98,    0,    0,    0,    0,    0,  263,  264,  197,  193,
-    0,    0,    0,  110,    0,  104,    0,    0,    0,   85,
-  238,    0,   84,    0,  111,    0,  272,  271,    0,    0,
-  232,    0,  105,  121,    0,    0,    0,    0,  125,  243,
-    0,  101,  102,    0,    0,    0,  259,    0,    0,  150,
-    0,    0,    0,  216,  123,    0,    0,    0,    0,    0,
-    0,  107,    0,    9,    0,   16,    0,   21,   23,    0,
-   18,   22,   19,   25,   29,   31,   32,   40,   39,   36,
-   37,   38,   33,   34,   35,   43,   44,   45,   42,   46,
-    0,    0,   54,    0,   51,    0,   59,    0,   56,   57,
-   67,   66,   63,   65,   61,   62,   64,   71,   70,   69,
-    0,   81,    0,    0,    0,   89,  143,    0,  142,  187,
-  126,  161,  189,  157,    0,    0,    0,    0,  185,  186,
-    7,    0,    0,    0,    0,    0,  174,    0,  130,    0,
-  219,    0,  232,  131,    0,    0,    0,  204,    0,    0,
-    0,   86,    0,  232,    0,    0,  112,  273,  222,    0,
-    0,  225,    0,    0,    0,    0,    0,    0,    0,    0,
-  287,  278,  242,    0,  241,  239,  116,    0,  119,    0,
-    0,  221,    0,    0,   24,  108,    0,  198,    0,   80,
-   79,   82,   90,  144,  164,  151,  166,    0,  154,   11,
-  147,  145,  147,  178,  177,    0,    0,  218,  265,    0,
-  194,  195,    0,    0,  106,  129,  128,    0,  269,    0,
-    0,  276,    0,    0,    0,  113,    0,    0,    0,    0,
-  279,    0,    0,    0,    0,  290,    0,  292,    0,    0,
-  297,  260,  214,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,  217,    0,  235,
-  261,    0,  274,  227,  224,  226,    0,  280,  283,  285,
-  277,  281,    0,  295,  294,    0,  291,  289,    0,  215,
-    0,  146,  179,  137,    0,    0,    0,    0,    0,    0,
-    0,  266,    0,  262,  205,  270,    0,    0,    0,    0,
-    0,  288,  199,  136,    0,  210,    0,    0,    0,  213,
-  206,  208,  268,  223,  282,  284,  286,  293,  209,    0,
-  207,    0,  211,    0,  212,
+   60,    0,    0,   92,    0,   78,  101,    0,  105,  108,
+  115,  116,  124,  237,    0,    0,    0,    0,    0,  174,
+  188,    0,  239,    0,    0,  154,    0,    0,    0,  159,
+    0,    0,    0,    0,    0,    0,  177,  176,    0,    0,
+    0,  140,  139,    0,    0,  206,  207,    0,    0,    0,
+    0,  198,  197,    0,    0,    0,  202,    0,    0,    0,
+  162,    0,    0,    0,  250,    0,    0,    0,  127,  238,
+    0,    0,    0,    0,    0,    0,  123,    0,   76,   75,
+   73,   74,    0,    0,    0,    0,    0,  242,    0,  246,
+  118,  119,    0,    0,  121,    0,    0,    0,  130,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    6,
+    0,    0,    0,    0,  253,  254,  255,  256,  257,    0,
+  258,  259,  260,  261,  262,  263,  264,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  147,  104,    0,    0,    0,    0,    0,    0,  164,
+    0,    0,    0,  155,    0,    0,  158,    0,    0,    0,
+   10,  146,  186,    0,    0,  181,  179,  182,    0,  178,
+  166,  103,    0,    0,    0,    0,    0,  269,  270,  203,
+  199,    0,    0,    0,  128,    0,  109,    0,    0,    0,
+    0,  244,    0,    0,  241,    0,  112,    0,  278,  277,
+    0,  238,    0,    0,  110,  122,    0,    0,    0,    0,
+  131,  249,    0,  106,  107,    0,    0,    0,  265,    0,
+    0,  156,    0,    0,    0,  222,  129,    0,    0,    0,
+    0,    0,    0,  125,    0,    9,    0,   16,    0,   21,
+   23,    0,   18,   22,   19,   25,   29,   31,   32,   40,
+   39,   36,   37,   38,   33,   34,   35,   43,   44,   45,
+   42,   46,    0,    0,   54,    0,   51,    0,   59,    0,
+   56,   57,   67,   66,   63,   65,   61,   62,   64,   71,
+   70,   69,    0,    0,    0,    0,    0,    0,  149,    0,
+  148,  193,  132,  167,  195,  163,    0,    0,    0,    0,
+  191,  192,    7,    0,    0,    0,    0,    0,  180,    0,
+  136,    0,  225,    0,  238,  137,    0,    0,    0,  210,
+    0,    0,    0,    0,  240,  238,    0,    0,  113,  279,
+  228,    0,    0,    0,    0,  231,    0,    0,    0,    0,
+    0,    0,  293,  284,  248,    0,  247,  245,  117,    0,
+  120,    0,    0,  227,    0,    0,   24,  126,    0,  204,
+    0,    0,   79,    0,    0,  150,  170,  157,  172,    0,
+  160,   11,  153,  151,  153,  184,  183,    0,    0,  224,
+  271,    0,  200,  201,    0,    0,  111,  135,  134,  275,
+    0,    0,  282,  114,    0,    0,    0,    0,    0,    0,
+    0,  285,    0,    0,    0,    0,  296,    0,  298,    0,
+    0,  303,  266,  220,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,  223,    0,
+  267,    0,  280,  233,  230,  232,    0,  286,  289,  291,
+  283,  287,    0,  301,  300,    0,  297,  295,    0,  221,
+    0,  152,  185,  143,    0,    0,    0,    0,    0,    0,
+    0,  272,    0,  268,  211,  276,    0,    0,    0,    0,
+    0,  294,  205,  142,    0,  216,    0,    0,    0,  219,
+  212,  214,  274,  229,  288,  290,  292,  299,  215,    0,
+  213,    0,  217,    0,  218,
 };
 final static short yydgoto[] = {                          3,
-  192,    5,  400,  178,  146,  371,  339,  147,    6,  340,
-  149,  150,  151,  422,  451,  152,  287,  105,  154,  155,
-  156,  430,  157,  158,  159,  445,  160,  449,  161,  453,
-  162,  460,  163,  164,  165,  166,  245,  387,  226,  167,
-  168,  322,  169,  246,  170,  219,  268,  356,  259,  214,
-  375,  376,  507,  232,  377,  171,  172,  237,  203,  489,
-  490,  323,  345,  484,  184,  185,  186,  187,  188,  189,
-  107,  108,  109,  110,  197,  198,  346,  347,  215,  216,
-  248,  499,  605,  639,  660,  357,  358,  233,  511,  512,
-  378,  249,  111,  570,  560,  607,  508,  582,  388,  583,
-  521,  518,  587,  588,
+  193,    5,  402,  179,  146,  372,  340,  147,    6,  341,
+  149,  150,  151,  424,  453,  152,  288,  105,  154,  155,
+  156,  432,  157,  158,  159,  447,  160,  451,  161,  455,
+  162,  462,  163,  164,  165,  166,  246,  389,  227,  167,
+  168,  323,  169,  247,  170,  220,  377,  378,  509,  232,
+  379,  171,  172,  237,  173,  269,  357,  260,  215,  204,
+  491,  492,  324,  346,  486,  185,  186,  187,  188,  189,
+  190,  107,  108,  109,  110,  198,  199,  347,  348,  216,
+  217,  249,  501,  606,  639,  660,  358,  359,  234,  515,
+  516,  380,  250,  111,  571,  562,  608,  510,  583,  390,
+  584,  523,  520,  588,  589,
 };
-final static short yysindex[] = {                      -301,
-    0, 8755,    0,10628,    0, -280,    0,14625,   64,14625,
+final static short yysindex[] = {                      -303,
+    0,12652,    0,14525,    0, -318,    0,18522,   76,18522,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -493,68 +493,68 @@
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,11568,14625, 5745,   29,   54,
-    0, -187,    0,  140,    0,   19,    0,  145,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,11098, 9099, 9099,
-12032,    0, 8755, 5864,   64, 7371,   64,   89,   89,11912,
-   64,    0,   64,12032,14625,11568,11568,11568, -295,   30,
- -187,    4,13292, -187, 8174, -187,    0,    0,  178,    0,
-    0,  331, -136, -125,    0,   51,   -3,   16,  138,  -20,
-    0, -130, 7705,    0,  227,    0,    0,   97,    0,    0,
-    0,    0,    0,  212, -187, -134,  222,12032,    0,    0,
-12376,    0, -110,  203,    0,  -35,  217,  -33,    0,   56,
-   70,10628,  282,11098,   66,    0,    0,  118,11098,  103,
-    0,    0,   89,  -50,    0,    0,14625,14625,  209,  211,
-    0,    0,  303,   89,  -69,    0,   89, -110,   90,    0,
-   89,13528, -187,    0,  227,    0,  228,    0,    0, -187,
-  338,   89,  -58,   89,  228,13410,    0,    0,    0,    0,
-    0,14625,10628,  -19,  302,   50,    0,  354,    0,    0,
-    0,  144,10505,    0,  160, 8636,   53,    0,   89,  374,
-14625,14625,  299,  310,    0,   61,  140,12494,    0, 7829,
-10628,11098,10628,    0,    0,    0,    0,    0,10628,    0,
-    0,    0,    0,    0,    0,    0,10975,10628,11098,11098,
-11098,11445, 8755, 8755,11445,11445,11445,11098,11098,11098,
-11098,11098,11098,11098,11445,11098,11445,11445,11445,11445,
-11445,11445,11445,11445,13528, -187,14625,   58,    0,  414,
-    0,    0,  126,11098,  425, 8755,11098,  140,    0, 8755,
-  433, -187,    0,  353, -187,    0,  356,  357, -187,    0,
-    0,    0,  363,  364,    0,    0,    0,   66,    0,    0,
-    0,  223,   89, 8755, -187,  223,    0,    0,    0,    0,
-  237,  238, 8636,    0,14625,    0,10628,  221,  227,    0,
-    0,  438,    0, -187,    0, -104,    0,    0,   46, -187,
-    0,12032,    0,    0, -187, -187,   83,  120,    0,    0,
- -187,    0,    0, -295, -187,  379,    0, -187,  380,    0,
-  465, 8636,11098,    0,    0,    0,  212,  222,  252,  253,
-10628,    0,   89,    0, 8174,    0, -125,    0,    0,  -36,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
- -190, -190,    0,  138,    0,  138,    0,  -20,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-  227,    0,  424,  227,  227,    0,    0,  414,    0,    0,
-    0,    0,    0,    0, 9217, 8755, 9217, 5864,    0,    0,
-    0, 7829, -187,14625, 8755,13932,    0, 9099,    0,  250,
-    0,   89,    0,    0,  394,  399,  488,    0,  495,   89,
-  -59,    0,  247,    0, 8755,   89,    0,    0,    0,  129,
-   72,    0,  269,  265,  504, -116,14221,  509, -187,14625,
-    0,    0,    0,  -19,    0,    0,    0,  426,    0,  498,
-  512,    0,  441,  442,    0,    0,  140,    0,  110,    0,
-    0,    0,    0,    0,    0,    0,    0, -110,    0,    0,
-    0,    0,    0,    0,    0,  -50, 9099,    0,    0,   28,
-    0,    0,  498, -187,    0,    0,    0,   89,    0,  -62,
-   89,    0, 8755,  498, -187,    0, 8755, -187,13646,13646,
-    0,  443, -187,  500,  500,    0,  -14,    0,  500,  528,
-    0,    0,    0,  498,    0,    0, -187,  445,  448,  223,
-   89,   64,13764,13764, -187, -150,  450,    0,14625,    0,
-    0, -187,    0,    0,    0,    0,  125,    0,    0,    0,
-    0,    0, -195,    0,    0, -187,    0,    0,  500,    0,
-  151,    0,    0,    0,  223,  -91, 8636,  -24,   89,  104,
-   89,    0, -187,    0,    0,    0,  498, -187,13646,13646,
-14221,    0,    0,    0,   64,    0,  535,10628, 8636,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,  498,
-    0,  536,    0,  498,    0,
+    0,    0,    0,    0,    0,15465,18522, 9642,  -45,    4,
+    0, -283,    0,   80,    0,  -81,    0,   90,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,14995,12996,12996,
+15929,    0,12652, 9761,   76,11268,   76,   37,   37,15809,
+   76,    0,   76,15929,18522,15465,15465,15465, -276,   57,
+ -283,  -48,17189, -283,12071, -283,    0,    0,  109,    0,
+    0,  345, -221, -178,    0,   49,   72,   78,  265,  -23,
+    0, -181,11602,    0,  189,    0,    0,  -72,    0,    0,
+    0,    0,    0,    0,  175, -283, -153,  206,15929,    0,
+    0,16273,    0, -141,  182,    0,   -1,  188,   22,    0,
+   30,   44,14525,  275,14995,  122,    0,    0,  166,14995,
+  144,    0,    0,   37,  -34,    0,    0,18522,18522,  200,
+  213,    0,    0,  288,   37,  -83,    0,   37, -141,   59,
+    0,   37,17425, -283,    0,  189,  -53,  220,    0,    0,
+ -283,   37,  310,  -52,   37,  220,    0,17307,    0,    0,
+    0,    0,18522,14525,  -57,  268,   38,    0,  325,    0,
+    0,    0,  130,14402,    0,  134,12533,  159,    0,   37,
+  352,18522,18522,  277,  281,    0,   15,   80,16391,    0,
+11726,14525,14995,14525,    0,    0,    0,    0,    0,14525,
+    0,    0,    0,    0,    0,    0,    0,14872,14525,14995,
+14995,14995,15342,12652,12652,15342,15342,15342,14995,14995,
+14995,14995,14995,14995,14995,15342,14995,15342,15342,15342,
+15342,15342,15342,15342,15342,17425, -283,18522,  116,  -53,
+  370,    0,    0,  186,14995,  379,12652,14995,   80,    0,
+12652,  380, -283,    0,  320, -283,    0,  327,  331, -283,
+    0,    0,    0,  338,  341,    0,    0,    0,  122,    0,
+    0,    0,  207,   37,12652, -283,  207,    0,    0,    0,
+    0,  227,  238,12533,    0,18522,    0,14525,  223,  189,
+  -53,    0,  479,  -53,    0, -283,    0,  -56,    0,    0,
+   61,    0, -283,15929,    0,    0, -283, -283,  197,  146,
+    0,    0, -283,    0,    0, -276, -283,  404,    0, -283,
+  405,    0,  490,12533,14995,    0,    0,    0,  175,  206,
+  279,  280,14525,    0,   37,    0,12071,    0, -178,    0,
+    0,  -32,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,   82,   82,    0,  265,    0,  265,    0,  -23,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,  189,  -53,  441,  189,  189,  -53,    0,  370,
+    0,    0,    0,    0,    0,    0,13114,12652,13114, 9761,
+    0,    0,    0,11726, -283,18522,12652,17829,    0,12996,
+    0,  287,    0,   37,    0,    0,  426,  432,  521,    0,
+  519,   37,  -73,  -53,    0,    0,12652,   37,    0,    0,
+    0,  292,  295,  155,  212,    0,  530,  -26,18118,  533,
+ -283,18522,    0,    0,    0,  -57,    0,    0,    0,  450,
+    0,  518,  536,    0,  453,  454,    0,    0,   80,    0,
+  229,  -53,    0,  -53,  -53,    0,    0,    0,    0, -141,
+    0,    0,    0,    0,    0,    0,    0,  -34,12996,    0,
+    0,  127,    0,    0,  518, -283,    0,    0,    0,    0,
+  -55,   37,    0,    0,12652,  518, -283,12652, -283,17543,
+17543,    0,  456, -283,  524,  524,    0,   23,    0,  524,
+  545,    0,    0,    0,  518,    0,    0, -283,  462,  466,
+  207,   37,   76,17661,17661, -283, -174,  467,    0,18522,
+    0, -283,    0,    0,    0,    0,  255,    0,    0,    0,
+    0,    0, -196,    0,    0, -283,    0,    0,  524,    0,
+  283,    0,    0,    0,  207, -105,12533,  -33,   37,  205,
+   37,    0, -283,    0,    0,    0,  518, -283,17543,17543,
+18118,    0,    0,    0,   76,    0,  552,14525,12533,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  518,
+    0,  554,    0,  518,    0,
 };
-final static short yyrindex[] = {                      5283,
-    0,  174,    0,   75,    0, 4229,    0,    0,    0,    0,
+final static short yyrindex[] = {                      9180,
+    0,  224,    0,   26,    0, 8154,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
@@ -563,80 +563,80 @@
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
     0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,  174,    0,  -41,    0,    0,
-    0,10158,    0, 4609,    0,    0,    0, 4852,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,  174,  -17,  -47,
-    0,    0,  174,  174,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,  174,  174,  174, 9565,    0,
- 9688,    0,    0,10158,  174,  578,    0,    0,   14,    0,
-  783,  467,    0, 4906,    0, 3989, 4067, 3600, 3148, 2974,
-    0, 2938, 2902,    0, 2487,    0,    0,    0,    0,    0,
-    0,    0,    0, 4642,10158,    0, 4677,    0,    0,    0,
-    0,    0,  -25,    0,    0,   43,    0,  487,    0,    0,
-    0,  174,    0,  174,    0,    0,    0,    0,  174,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,12834,    0,    0,  300,    0,    0,
-    0,    0,10035,    0,    0,    0,    0,    0,    0,10158,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,  -21,   57,    0,    0,    0,   45,    0,    0,
-    0,    0,  174,    0,    0,   26,  459,    0,    0,    0,
-    0,    0,    0,    0, 6326,    0,  661,    0,    0,   95,
-   12,  174,  174,    0,    0,    0,    0,    0,  174,    0,
-    0,    0,    0,    0,    0,    0,  174,  174,  174,  174,
-  174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-  174,  174,  174,  174,  174,  174,  174,  174,  174,  174,
-  174,  174,  174,  174,    0, 9565,    0,    0,    0,    0,
-    0,    0,    0,  174,    0,  174,  174,  -31,    0,  174,
- 4712, 8292,    0, 4815, 5401,    0,    0,    0,   -1,    0,
-    0,    0,14743,14389,    0,    0,    0,    0,    0,    0,
-    0,  315,    0,  174,  -56,  315,    0,    0,    0,    0,
-    0,    0,   26,    0,    0,    0,  174, 1766,    0,    0,
-    0,    0,    0,  -48,    0, 1919,    0,    0,    0,10158,
-    0,    0,    0,    0,  -89,14103,  -83,    0,    0,    0,
-10158,    0,    0,10158,10158,    0,    0,  460,    0,    0,
-    0,   26,  174,    0,    0, 1198, 6666, 6788,    0,    0,
-  174,    0,    0,    0,  174,    0, 5106,    0,    0,10158,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
- 3735, 3771,    0, 3525,    0, 3564,    0, 3109,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,  174,  174,  174,  174,    0,    0,
-    0,  -15,10158,    0,  174,    0,    0,  -47,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,12952,    0,
-    0,    0, 2334,    0,  174,    0,    0,    0,    0,    0,
-    0,    0,    0, 1351,    0,  461,  546,    0,14103,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,  459,
-    0,    0,    0,    0,    0,    0, 6204,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,  -17,    0,    0,  -71,
-    0,    0,  459,14861,    0,    0,    0,    0,    0,    0,
-    0,    0,  174,  459,10158,    0,  174,  460,    0,    0,
-    0,    0,  460,  -23,  -23,    0,  548,    0,  -83,    0,
-    0,    0,    0,  459, 7128, 7250,10158,    0,    0,  315,
-    0,    0,    0,    0,  -56,  468,    0,    0,    0,    0,
-    0,  -42,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,  470,    0,    0,14507,    0,    0,  -83,    0,
-    0,    0,    0,    0,  315,    0,   26,  459,    0,  459,
-    0,    0,  460,    0,    0,    0,  459,  460,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,  174,   26,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,  459,
-    0,    0,    0,  459,    0,
+    0,    0,    0,    0,    0,  224,    0,  -28,    0,    0,
+    0,14055,    0,  431,    0,    0,    0, 8687,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,  224,  -92,  -67,
+    0,    0,  224,  224,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,  224,  224,  224,13462,    0,
+13585,    0,    0,14055,  224,  598,    0,    0,    5,    0,
+  732, 7278,    0, 8770,    0, 8723, 7992, 7525, 7073, 6899,
+    0, 6863, 6827,    0, 3004,    0,    0,    0,    0,    0,
+    0,    0,    0,    0, 8259,14055,    0, 8549,    0,    0,
+    0,    0,    0,  -12,    0,    0,   28,    0,  510,    0,
+    0,    0,  224,    0,  224,    0,    0,    0,    0,  224,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,16731,    0,    0,  324,    0,
+    0,    0,    0,13932,    0, 3419, 3572,    0,    0,    0,
+14055,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,  -13,   40,    0,    0,    0,   32,    0,
+    0,    0,    0,  224,    0,    0,   20,  485,    0,    0,
+    0,    0,    0,    0,    0,10223,    0,  610,    0,    0,
+   34,   16,  224,  224,    0,    0,    0,    0,    0,  224,
+    0,    0,    0,    0,    0,    0,    0,  224,  224,  224,
+  224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
+  224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
+  224,  224,  224,  224,  224,    0,13462,    0, 3987, 1715,
+    0,    0,    0,    0,  224,    0,  224,  224,  -29,    0,
+  224, 8584,12189,    0, 8632, 9298,    0,    0,    0,   10,
+    0,    0,    0,18640,18286,    0,    0,    0,    0,    0,
+    0,    0,  346,    0,  224,  214,  346,    0,    0,    0,
+    0,    0,    0,   20,    0,    0,    0,  224, 1868, 4140,
+ 4555,    0,    0, 4708,    0,  -54,    0, 2283,    0,    0,
+    0,    0,14055,    0,    0,    0,  -10,18000, -108,    0,
+    0,    0,14055,    0,    0,14055,14055,    0,    0,  491,
+    0,    0,    0,   20,  224,    0,    0, 1147,10563,10685,
+    0,    0,  224,    0,    0,    0,  224,    0, 9016,    0,
+    0,14055,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0, 7660, 7696,    0, 7450,    0, 7489,    0, 7034,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0, 5123, 5276,    0, 5691,    0, 2436,    0,    0,
+    0,    0,    0,    0,    0,    0,  224,  224,  224,  224,
+    0,    0,    0,   14,14055,    0,  224,    0,    0,  -67,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+16849,    0,    0, 5844,    0,    0,  224,    0,    0,    0,
+    0,    0, 1300,    0,    0,    0,    0,  493,  574,    0,
+18000,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,  485,    0,    0,    0,    0,    0,    0,10101,    0,
+    0, 6259,    0, 6412, 2851,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,  -92,    0,
+    0,  -51,    0,    0,  485,18758,    0,    0,    0,    0,
+    0,    0,    0,    0,  224,  485,14055,  224,  491,    0,
+    0,    0,    0,  491,    3,    3,    0,  576,    0, -108,
+    0,    0,    0,    0,  485,11025,11147,14055,    0,    0,
+  346,    0,    0,    0,    0,  214,  494,    0,    0,    0,
+    0,  -14,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,  495,    0,    0,18404,    0,    0, -108,    0,
+    0,    0,    0,    0,  346,    0,   20,  485,    0,  485,
+    0,    0,  491,    0,    0,    0,  485,  491,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,  224,   20,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  485,
+    0,    0,    0,  485,    0,
 };
 final static short yygindex[] = {                         0,
-    1,    0,  205,   -2,    0,  -79,  343,  337, -140,   -4,
-    0, -238,   37,    0,  241,    0,    0,   21,  329,  319,
-  308,  158,  161,  143,  -67,    0,  -45,  294,  162,  179,
-  295,    0,    0,  332,    0,    0, -152, -119,  -34, -232,
-   86,    0,   -5,    0,  313,    0,  -60, -230,  344,    0,
-  376,  234,  105,    0,  240,  117,    0,    0, -112, -328,
-    0,    0, -239, -298, -208, -102,   47,    0,    0, -109,
-  444, -223,    0,    0,    0,    0,  274,    0,    0,    0,
- -227,    0,    0,   22, -226, -488,   17,    0,    0,   55,
- -198,  235,    0,   68,    0,    0,    0,    0, -471,    0,
- -171,  112,    0,  -18,
+    1,    0,   25,   41,    0,  -91,  367,  351, -138,   -4,
+    0, -251,   31,    0,  492,    0,    0,  110,  355,  342,
+  333,  195,  138,  209,  -88,    0,  193,  330,  231,  235,
+  318,    0,    0,  208,    0,    0, -148, -123,  253, -155,
+   81,    0,   -7,    0,  -37,    0,  398,  260,  132,    0,
+  261,  143,    0,    0,  133,  -62, -247,  378,    0, -116,
+ -344,    0,    0, -258, -309, -245,  -87,   74,    0,    0,
+ -114,  471, -144,    0,    0,    0,    0,  306,    0,    0,
+    0, -225,    0,    0,   52, -223, -485,   55,    0,    0,
+   86,   21,  269,    0,  102,    0,    0,    0,    0, -486,
+    0, -343,  145,    0,   19,
 };
-final static int YYTABLESIZE=15240;
+final static int YYTABLESIZE=19137;
 
 //These two tables are not statically initialized, but rather
 //initialized on first use, so that a failure to initialize them
@@ -658,7 +658,7 @@
         yytable = (short[])obInp.readObject();
         yycheck = (short[])obInp.readObject();
         long hash = EYaccFixer.checkhash(yytable, yycheck);
-        if (hash != 8994340673236973412L) {
+        if (hash != 3656887456131444753L) {
             throw new RuntimeException(rName + " bad checkhash: " +
                                        hash);
         }
@@ -791,11 +791,16 @@
 "postfix : postfix '[' argList ']'",
 "postfix : postfix Send verb parenArgs",
 "postfix : postfix Send parenArgs",
+"postfix : postfix Send verb",
+"postfix : postfix verb",
+"postfix : postfix '.' ident",
 "postfix : postfix '.' ident parenArgs",
 "metaExpr : META parenArgs",
 "metaExpr : META verb parenArgs",
 "metaExpr : META Send parenArgs",
 "metaExpr : META Send verb parenArgs",
+"metaExpr : META verb",
+"metaExpr : META Send verb",
 "call : prim",
 "call : call parenArgs",
 "call : postfix verb parenArgs",
@@ -816,10 +821,6 @@
 "prim : ESCAPE pattern body",
 "prim : WHILE parenExpr body",
 "prim : FOR iterPattern IN assign body",
-"prim : define audits vTable",
-"prim : define audits funcHead body",
-"prim : THUNK body",
-"prim : CLASS classHead body",
 "prim : SWITCH parenExpr caseList",
 "prim : TRY body catchList finallyClause",
 "prim : WHEN whenHead body catches finallyClause",
@@ -832,8 +833,13 @@
 "prim : '@' LiteralInteger",
 "prim : SELECT parenExpr caseList",
 "prim : TYPEDEF oType",
-"prim : '_' funcHead body",
-"prim : '_' body",
+"prim : object",
+"object : define audits vTable",
+"object : define audits funcHead body",
+"object : THUNK body",
+"object : CLASS classHead body",
+"object : '_' funcHead body",
+"object : '_' body",
 "noun : ident",
 "parenExpr : '(' eExpr ')'",
 "ifExpr : IF parenExpr body",
@@ -944,7 +950,7 @@
 "emptyList :",
 "emptyBr : br",
 "parenArgs : '(' argList ')'",
-"parenArgs : '(' argList ')' THUNK body",
+"parenArgs : parenArgs object",
 "argList : emptyBr",
 "argList : args",
 "args : eExpr",
@@ -1094,7 +1100,7 @@
 "reserved : WSTRING",
 };
 
-//#line 1098 "e.y"
+//#line 1102 "e.y"
 
 /**
  *
@@ -1611,7 +1617,7 @@
 static public boolean isContinuer(int tokenType) {
     return TheContinuers[tokenType];
 }
-//#line 4584 "EParser.java"
+//#line 5370 "EParser.java"
 //###############################################################
 // method: yylexdebug : check lexer state
 //###############################################################
@@ -1984,744 +1990,770 @@
 { yyval = send(val_peek(2), "run", val_peek(0)); }
 break;
 case 82:
-//#line 400 "e.y"
-{ pocket("dot-props");
-                                          yyval = property(val_peek(3), val_peek(1), val_peek(0)); }
+//#line 392 "e.y"
+{ pocket("no-paren-call");
+                                          yyval = send(val_peek(2), val_peek(0), list()); }
 break;
 case 83:
-//#line 408 "e.y"
-{ yyval = doMeta("run", val_peek(0)); }
+//#line 394 "e.y"
+{ pocket("no-paren-call");
+                                          yyval = call(val_peek(1), val_peek(0), list()); }
 break;
 case 84:
-//#line 409 "e.y"
-{ yyval = doMeta(val_peek(1), val_peek(0)); }
+//#line 396 "e.y"
+{ pocket("dot-props");
+                                          yyval = property(val_peek(2), val_peek(0), list()); }
 break;
 case 85:
-//#line 410 "e.y"
-{ yyval = doMetaSend("run", val_peek(0)); }
+//#line 398 "e.y"
+{ pocket("dot-props");
+                                          yyval = property(val_peek(3), val_peek(1), val_peek(0)); }
 break;
 case 86:
-//#line 411 "e.y"
-{ yyval = doMetaSend(val_peek(1), val_peek(0)); }
+//#line 406 "e.y"
+{ yyval = doMeta("run", val_peek(0)); }
 break;
+case 87:
+//#line 407 "e.y"
+{ yyval = doMeta(val_peek(1), val_peek(0)); }
+break;
 case 88:
-//#line 431 "e.y"
-{ yyval = call(val_peek(1), "run", val_peek(0)); }
+//#line 408 "e.y"
+{ yyval = doMetaSend("run", val_peek(0)); }
 break;
 case 89:
-//#line 432 "e.y"
-{ yyval = call(val_peek(2), val_peek(1), val_peek(0)); }
+//#line 409 "e.y"
+{ yyval = doMetaSend(val_peek(1), val_peek(0)); }
 break;
 case 90:
-//#line 433 "e.y"
-{ reserved("verb="); }
+//#line 411 "e.y"
+{ pocket("no-paren-call");
+                                          yyval = doMeta(val_peek(0), list()); }
 break;
 case 91:
-//#line 441 "e.y"
-{ yyval = literal(val_peek(0)); }
-break;
-case 92:
-//#line 442 "e.y"
-{ yyval = literal(val_peek(0)); }
+//#line 413 "e.y"
+{ pocket("no-paren-call");
+                                          yyval = doMetaSend(val_peek(0), list()); }
 break;
 case 93:
-//#line 443 "e.y"
-{ yyval = literal(val_peek(0)); }
+//#line 427 "e.y"
+{ yyval = call(val_peek(1), "run", val_peek(0)); }
 break;
 case 94:
-//#line 444 "e.y"
-{ yyval = literal(val_peek(0)); }
+//#line 428 "e.y"
+{ yyval = call(val_peek(2), val_peek(1), val_peek(0)); }
 break;
 case 95:
-//#line 445 "e.y"
+//#line 429 "e.y"
+{ reserved("verb="); }
+break;
+case 96:
+//#line 437 "e.y"
 { yyval = literal(val_peek(0)); }
 break;
 case 97:
-//#line 449 "e.y"
-{ yyval = uriExpr(val_peek(0)); }
+//#line 438 "e.y"
+{ yyval = literal(val_peek(0)); }
 break;
 case 98:
-//#line 450 "e.y"
-{ yyval = uriExpr(val_peek(2),val_peek(1)); }
+//#line 439 "e.y"
+{ yyval = literal(val_peek(0)); }
 break;
 case 99:
-//#line 452 "e.y"
-{ yyval = quasiExpr(val_peek(1),val_peek(0)); }
+//#line 440 "e.y"
+{ yyval = literal(val_peek(0)); }
 break;
-case 101:
-//#line 455 "e.y"
-{ yyval = tuple(val_peek(1)); }
+case 100:
+//#line 441 "e.y"
+{ yyval = literal(val_peek(0)); }
 break;
 case 102:
-//#line 456 "e.y"
-{ yyval = map(val_peek(1)); }
+//#line 445 "e.y"
+{ yyval = uriExpr(val_peek(0)); }
 break;
 case 103:
-//#line 458 "e.y"
-{ yyval = hide(val_peek(0)); }
+//#line 446 "e.y"
+{ yyval = uriExpr(val_peek(2),val_peek(1)); }
 break;
 case 104:
-//#line 460 "e.y"
-{ yyval = escape(val_peek(1),val_peek(0)); }
-break;
-case 105:
-//#line 462 "e.y"
-{ yyval = whilex(val_peek(1),val_peek(0)); }
+//#line 448 "e.y"
+{ yyval = quasiExpr(val_peek(1),val_peek(0)); }
 break;
 case 106:
-//#line 464 "e.y"
-{ yyval = forx(val_peek(3),val_peek(1),val_peek(0)); }
+//#line 451 "e.y"
+{ yyval = tuple(val_peek(1)); }
 break;
 case 107:
-//#line 466 "e.y"
-{ yyval = object(val_peek(1), val_peek(0)); }
+//#line 452 "e.y"
+{ yyval = map(val_peek(1)); }
 break;
 case 108:
-//#line 467 "e.y"
-{ yyval = methObject(val_peek(2),val_peek(1),val_peek(0)); }
+//#line 454 "e.y"
+{ yyval = hide(val_peek(0)); }
 break;
 case 109:
-//#line 468 "e.y"
-{ yyval = thunk(val_peek(0)); }
+//#line 456 "e.y"
+{ yyval = escape(val_peek(1),val_peek(0)); }
 break;
 case 110:
-//#line 470 "e.y"
-{ yyval = classExpr(val_peek(1),val_peek(0)); }
+//#line 458 "e.y"
+{ yyval = whilex(val_peek(1),val_peek(0)); }
 break;
 case 111:
-//#line 472 "e.y"
-{ yyval = switchx(val_peek(1),val_peek(0)); }
+//#line 460 "e.y"
+{ yyval = forx(val_peek(3),val_peek(1),val_peek(0)); }
 break;
 case 112:
-//#line 474 "e.y"
-{ yyval = tryx(val_peek(2),val_peek(1),val_peek(0)); }
+//#line 462 "e.y"
+{ yyval = switchx(val_peek(1),val_peek(0)); }
 break;
 case 113:
-//#line 476 "e.y"
+//#line 464 "e.y"
+{ yyval = tryx(val_peek(2),val_peek(1),val_peek(0)); }
+break;
+case 114:
+//#line 466 "e.y"
 { yyval = when(val_peek(3),val_peek(2),val_peek(1),val_peek(0)); }
 break;
-case 116:
-//#line 482 "e.y"
+case 117:
+//#line 472 "e.y"
 { yyval = quasiLiteralExpr(val_peek(1)); }
 break;
-case 117:
-//#line 483 "e.y"
+case 118:
+//#line 473 "e.y"
 { yyval = quasiLiteralExpr(val_peek(0)); }
 break;
-case 118:
-//#line 484 "e.y"
+case 119:
+//#line 474 "e.y"
 { yyval = quasiLiteralExpr(); }
 break;
-case 119:
-//#line 485 "e.y"
+case 120:
+//#line 475 "e.y"
 { yyval = quasiPatternExpr(val_peek(1)); }
 break;
-case 120:
-//#line 486 "e.y"
+case 121:
+//#line 476 "e.y"
 { yyval = quasiPatternExpr(val_peek(0)); }
 break;
-case 121:
-//#line 489 "e.y"
+case 122:
+//#line 479 "e.y"
 { reserved("select"); }
 break;
-case 122:
-//#line 490 "e.y"
+case 123:
+//#line 480 "e.y"
 { pocket("typedef");
                                                   yyval = val_peek(0); }
 break;
-case 123:
-//#line 492 "e.y"
+case 125:
+//#line 489 "e.y"
+{ yyval = object(val_peek(1), val_peek(0)); }
+break;
+case 126:
+//#line 490 "e.y"
+{ yyval = methObject(val_peek(2),val_peek(1),val_peek(0)); }
+break;
+case 127:
+//#line 491 "e.y"
+{ yyval = thunk(val_peek(0)); }
+break;
+case 128:
+//#line 493 "e.y"
+{ yyval = classExpr(val_peek(1),val_peek(0)); }
+break;
+case 129:
+//#line 495 "e.y"
 { pocket("anon-lambda");
                                   yyval = methObject(audits(ignore(), list()),
                                                   val_peek(1),
                                                   val_peek(0)); }
 break;
-case 124:
-//#line 496 "e.y"
+case 130:
+//#line 499 "e.y"
 { pocket("anon-lambda");
                                   yyval = thunk(val_peek(0)); }
 break;
-case 125:
-//#line 505 "e.y"
+case 131:
+//#line 507 "e.y"
 { yyval = noun(val_peek(0)); }
 break;
-case 126:
-//#line 514 "e.y"
+case 132:
+//#line 516 "e.y"
 { yyval = val_peek(1); }
 break;
-case 127:
-//#line 523 "e.y"
+case 133:
+//#line 525 "e.y"
 { yyval = ifx(val_peek(1), val_peek(0)); }
 break;
-case 128:
-//#line 524 "e.y"
+case 134:
+//#line 526 "e.y"
 { yyval = ifx(val_peek(3), val_peek(2), val_peek(0)); }
 break;
-case 129:
-//#line 525 "e.y"
+case 135:
+//#line 527 "e.y"
 { yyval = ifx(val_peek(3), val_peek(2), val_peek(0)); }
 break;
-case 130:
-//#line 530 "e.y"
+case 136:
+//#line 532 "e.y"
 { yyval = macro(val_peek(3), val_peek(2), val_peek(1), val_peek(0)); }
 break;
-case 131:
-//#line 532 "e.y"
+case 137:
+//#line 534 "e.y"
 { yyval = macro(val_peek(3), val_peek(2), val_peek(1), val_peek(0)); }
 break;
-case 132:
-//#line 536 "e.y"
+case 138:
+//#line 538 "e.y"
 { yyval = null; }
 break;
-case 135:
-//#line 542 "e.y"
+case 141:
+//#line 544 "e.y"
 { yyval = null; }
 break;
-case 136:
-//#line 544 "e.y"
+case 142:
+//#line 546 "e.y"
 { yyval = macro(val_peek(4), val_peek(3), val_peek(2), val_peek(1)); }
 break;
-case 137:
-//#line 546 "e.y"
+case 143:
+//#line 548 "e.y"
 { yyval = macro(val_peek(3), val_peek(2), val_peek(1), val_peek(0)); }
 break;
-case 138:
-//#line 551 "e.y"
+case 144:
+//#line 553 "e.y"
 { yyval = noun("simple__quasiParser"); }
 break;
-case 139:
-//#line 552 "e.y"
+case 145:
+//#line 554 "e.y"
 { yyval = noun(val_peek(0) +  "__quasiParser"); }
 break;
-case 140:
-//#line 553 "e.y"
+case 146:
+//#line 555 "e.y"
 { yyval = val_peek(1); }
 break;
-case 141:
-//#line 557 "e.y"
+case 147:
+//#line 559 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 142:
-//#line 558 "e.y"
+case 148:
+//#line 560 "e.y"
 { yyval = with(val_peek(1), val_peek(0)); }
 break;
-case 143:
-//#line 562 "e.y"
+case 149:
+//#line 564 "e.y"
 { yyval = list(val_peek(1), val_peek(0)); }
 break;
-case 144:
-//#line 563 "e.y"
+case 150:
+//#line 565 "e.y"
 { yyval = with(with(val_peek(2), val_peek(1)), val_peek(0)); }
 break;
-case 145:
-//#line 567 "e.y"
+case 151:
+//#line 569 "e.y"
 { yyval = noun(val_peek(0)); }
 break;
-case 146:
-//#line 568 "e.y"
+case 152:
+//#line 570 "e.y"
 { yyval = val_peek(2); }
 break;
-case 147:
-//#line 572 "e.y"
+case 153:
+//#line 574 "e.y"
 { myLexer.quasiAgain(); }
 break;
-case 150:
-//#line 589 "e.y"
+case 156:
+//#line 591 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 151:
-//#line 590 "e.y"
+case 157:
+//#line 592 "e.y"
 { yyval = with(val_peek(3), val_peek(0)); }
 break;
-case 153:
-//#line 600 "e.y"
+case 159:
+//#line 602 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 154:
-//#line 601 "e.y"
+case 160:
+//#line 603 "e.y"
 { yyval = with(val_peek(3), val_peek(0)); }
 break;
-case 155:
-//#line 608 "e.y"
+case 161:
+//#line 610 "e.y"
 { yyval = new Assoc(ignore(), val_peek(0)); }
 break;
-case 157:
-//#line 613 "e.y"
+case 163:
+//#line 615 "e.y"
 { yyval = new Assoc(val_peek(2), val_peek(0)); }
 break;
-case 158:
-//#line 614 "e.y"
+case 164:
+//#line 616 "e.y"
 { reserved("var-extract-pattern"); }
 break;
-case 160:
-//#line 619 "e.y"
+case 166:
+//#line 621 "e.y"
 { yyval = suchThat(val_peek(2), val_peek(0)); }
 break;
-case 161:
-//#line 621 "e.y"
+case 167:
+//#line 623 "e.y"
 { reserved("meta pattern"); }
 break;
-case 163:
-//#line 626 "e.y"
+case 169:
+//#line 628 "e.y"
 { yyval = listPattern(val_peek(1)); }
 break;
-case 164:
-//#line 627 "e.y"
+case 170:
+//#line 629 "e.y"
 { yyval = cdrPattern(val_peek(3), val_peek(0)); }
 break;
-case 165:
-//#line 629 "e.y"
+case 171:
+//#line 631 "e.y"
 { reserved("map pattern"); }
 break;
-case 166:
-//#line 630 "e.y"
+case 172:
+//#line 632 "e.y"
 { reserved("map pattern"); }
 break;
-case 168:
-//#line 635 "e.y"
+case 174:
+//#line 637 "e.y"
 { yyval = patternEquals(val_peek(0)); }
 break;
-case 170:
-//#line 640 "e.y"
+case 176:
+//#line 642 "e.y"
 { yyval = quasiPattern(val_peek(1), val_peek(0)); }
 break;
-case 171:
-//#line 644 "e.y"
+case 177:
+//#line 646 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 172:
-//#line 645 "e.y"
+case 178:
+//#line 647 "e.y"
 { yyval = with(val_peek(1), val_peek(0)); }
 break;
-case 173:
-//#line 649 "e.y"
+case 179:
+//#line 651 "e.y"
 { yyval = list(val_peek(1), val_peek(0)); }
 break;
-case 174:
-//#line 650 "e.y"
+case 180:
+//#line 652 "e.y"
 { yyval = with(with(val_peek(2), val_peek(1)), val_peek(0)); }
 break;
-case 177:
-//#line 659 "e.y"
+case 183:
+//#line 661 "e.y"
 { yyval = finalPattern(val_peek(0)); }
 break;
-case 178:
-//#line 660 "e.y"
+case 184:
+//#line 662 "e.y"
 { yyval = ignore(); }
 break;
-case 179:
-//#line 661 "e.y"
+case 185:
+//#line 663 "e.y"
 { yyval = val_peek(2); }
 break;
-case 180:
-//#line 674 "e.y"
+case 186:
+//#line 676 "e.y"
 { yyval = finalPattern(val_peek(2), val_peek(0)); }
 break;
-case 181:
-//#line 675 "e.y"
+case 187:
+//#line 677 "e.y"
 { yyval = finalPattern(val_peek(0)); }
 break;
-case 182:
-//#line 676 "e.y"
+case 188:
+//#line 678 "e.y"
 { yyval = slotDefiner(val_peek(0)); }
 break;
-case 183:
-//#line 677 "e.y"
+case 189:
+//#line 679 "e.y"
 { yyval = ignore(); }
 break;
-case 185:
-//#line 680 "e.y"
+case 191:
+//#line 682 "e.y"
 { yyval = quasiLiteralPatt(val_peek(1)); }
 break;
-case 186:
-//#line 681 "e.y"
+case 192:
+//#line 683 "e.y"
 { yyval = quasiPatternPatt(val_peek(1)); }
 break;
-case 187:
-//#line 683 "e.y"
+case 193:
+//#line 685 "e.y"
 { pocket("bind");
                                           yyval = bindDefiner(val_peek(2), val_peek(0)); }
 break;
-case 188:
-//#line 685 "e.y"
+case 194:
+//#line 687 "e.y"
 { pocket("bind");
                                           yyval = bindDefiner(val_peek(0)); }
 break;
-case 189:
-//#line 690 "e.y"
+case 195:
+//#line 692 "e.y"
 { yyval = varPattern(val_peek(2), val_peek(0)); }
 break;
-case 190:
-//#line 691 "e.y"
+case 196:
+//#line 693 "e.y"
 { yyval = varPattern(val_peek(0)); }
 break;
-case 191:
-//#line 700 "e.y"
+case 197:
+//#line 702 "e.y"
 { yyval = finalPattern(val_peek(0)); }
 break;
-case 192:
-//#line 701 "e.y"
+case 198:
+//#line 703 "e.y"
 { yyval = ignore(); }
 break;
-case 193:
-//#line 702 "e.y"
+case 199:
+//#line 704 "e.y"
 { yyval = varPattern(val_peek(0)); }
 break;
-case 194:
-//#line 703 "e.y"
+case 200:
+//#line 705 "e.y"
 { yyval = quasiLiteralPatt(val_peek(1)); }
 break;
-case 195:
-//#line 704 "e.y"
+case 201:
+//#line 706 "e.y"
 { yyval = quasiPatternPatt(val_peek(1)); }
 break;
-case 197:
-//#line 706 "e.y"
+case 203:
+//#line 708 "e.y"
 { pocket("bind");
                                           yyval = bindDefiner(val_peek(0)); }
 break;
-case 198:
-//#line 727 "e.y"
+case 204:
+//#line 729 "e.y"
 { yyval = list(); }
 break;
-case 199:
-//#line 728 "e.y"
+case 205:
+//#line 730 "e.y"
 { yyval = append(list(val_peek(3)),val_peek(1)); }
 break;
-case 202:
-//#line 740 "e.y"
+case 208:
+//#line 742 "e.y"
 { yyval = audits(val_peek(0), list()); }
 break;
-case 203:
-//#line 741 "e.y"
+case 209:
+//#line 743 "e.y"
 { pocket("auditors");
                                                   yyval = audits(val_peek(2), val_peek(0)); }
 break;
-case 204:
-//#line 746 "e.y"
+case 210:
+//#line 748 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 205:
-//#line 747 "e.y"
+case 211:
+//#line 749 "e.y"
 { yyval = with(val_peek(3), val_peek(0)); }
 break;
-case 206:
-//#line 757 "e.y"
+case 212:
+//#line 759 "e.y"
 { yyval = method(val_peek(1), val_peek(0)); }
 break;
-case 207:
-//#line 759 "e.y"
+case 213:
+//#line 761 "e.y"
 { reserved("fields"); }
 break;
-case 208:
-//#line 760 "e.y"
+case 214:
+//#line 762 "e.y"
 { reserved("on event"); }
 break;
-case 209:
-//#line 761 "e.y"
+case 215:
+//#line 763 "e.y"
 { reserved("sealed meta"); }
 break;
-case 210:
-//#line 762 "e.y"
+case 216:
+//#line 764 "e.y"
 { reserved("sealed meta"); }
 break;
-case 211:
-//#line 770 "e.y"
+case 217:
+//#line 772 "e.y"
 { yyval = methHead("run", val_peek(2), val_peek(0)); }
 break;
-case 212:
-//#line 771 "e.y"
+case 218:
+//#line 773 "e.y"
 { yyval = methHead(val_peek(4), val_peek(2), val_peek(0)); }
 break;
-case 213:
-//#line 773 "e.y"
+case 219:
+//#line 775 "e.y"
 { pocket("no-paren-method");
                                                yyval = methHead(val_peek(1), list(), val_peek(0)); }
 break;
-case 214:
-//#line 782 "e.y"
+case 220:
+//#line 784 "e.y"
 { yyval = methHead("run", val_peek(2), val_peek(0)); }
 break;
-case 215:
-//#line 784 "e.y"
+case 221:
+//#line 786 "e.y"
 { pocket("one-method-object");
                                                yyval = methHead(val_peek(4), val_peek(2), val_peek(0)); }
 break;
-case 216:
-//#line 786 "e.y"
+case 222:
+//#line 788 "e.y"
 { pocket("no-paren-method");
                                                yyval = methHead(val_peek(1), list(), val_peek(0)); }
 break;
-case 217:
-//#line 795 "e.y"
+case 223:
+//#line 797 "e.y"
 { yyval = list(val_peek(4), val_peek(2), val_peek(0)); }
 break;
-case 218:
-//#line 805 "e.y"
+case 224:
+//#line 807 "e.y"
 { yyval = matcher(val_peek(1), val_peek(0)); }
 break;
-case 219:
-//#line 814 "e.y"
+case 225:
+//#line 816 "e.y"
 { yyval = delegatex(val_peek(0)); }
 break;
-case 220:
-//#line 821 "e.y"
+case 226:
+//#line 823 "e.y"
 { yyval = VOID; }
 break;
-case 221:
-//#line 822 "e.y"
+case 227:
+//#line 824 "e.y"
 { yyval = val_peek(0); }
 break;
-case 222:
-//#line 826 "e.y"
+case 228:
+//#line 828 "e.y"
 { yyval = val_peek(1); }
 break;
-case 223:
-//#line 831 "e.y"
+case 229:
+//#line 833 "e.y"
 { yyval = list(val_peek(6), val_peek(4), val_peek(2), val_peek(0)); }
 break;
-case 224:
-//#line 833 "e.y"
+case 230:
+//#line 835 "e.y"
 { pocket("when-clauses");
                                                   yyval = list(val_peek(4), val_peek(2), val_peek(0)); }
 break;
-case 225:
-//#line 838 "e.y"
+case 231:
+//#line 840 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 226:
-//#line 839 "e.y"
+case 232:
+//#line 841 "e.y"
 { yyval = with(val_peek(2), val_peek(0)); }
 break;
-case 227:
-//#line 843 "e.y"
+case 233:
+//#line 845 "e.y"
 { list(val_peek(2), val_peek(0)); }
 break;
-case 232:
-//#line 861 "e.y"
+case 238:
+//#line 863 "e.y"
 { yyval = list(); }
 break;
-case 233:
-//#line 865 "e.y"
+case 239:
+//#line 867 "e.y"
 { yyval = list(); }
 break;
-case 234:
-//#line 870 "e.y"
+case 240:
+//#line 872 "e.y"
 { yyval = val_peek(1); }
 break;
-case 235:
-//#line 874 "e.y"
-{ yyval = with(val_peek(3), thunk(val_peek(0))); }
+case 241:
+//#line 877 "e.y"
+{ pocket("lambda-args");
+                                          yyval = with(val_peek(1), val_peek(0)); }
 break;
-case 238:
-//#line 883 "e.y"
+case 244:
+//#line 887 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 239:
-//#line 884 "e.y"
+case 245:
+//#line 888 "e.y"
 { yyval = with(val_peek(2), val_peek(0)); }
 break;
-case 240:
-//#line 889 "e.y"
+case 246:
+//#line 893 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 241:
-//#line 890 "e.y"
+case 247:
+//#line 894 "e.y"
 { yyval = with(val_peek(2), val_peek(0)); }
 break;
-case 242:
-//#line 894 "e.y"
+case 248:
+//#line 898 "e.y"
 { yyval = new Assoc(val_peek(2), val_peek(0)); }
 break;
-case 243:
-//#line 895 "e.y"
+case 249:
+//#line 899 "e.y"
 { reserved("export binding"); }
 break;
-case 245:
-//#line 908 "e.y"
+case 251:
+//#line 912 "e.y"
 { yyval = hilbert(val_peek(0)); }
 break;
-case 246:
-//#line 909 "e.y"
+case 252:
+//#line 913 "e.y"
 { reserved("keyword \"" +
                                                    ((Token)val_peek(0)).token() +
                                                    "\""); }
 break;
-case 247:
-//#line 925 "e.y"
+case 253:
+//#line 929 "e.y"
 { yyval = "add"; }
 break;
-case 248:
-//#line 926 "e.y"
+case 254:
+//#line 930 "e.y"
 { yyval = "and"; }
 break;
-case 249:
-//#line 927 "e.y"
+case 255:
+//#line 931 "e.y"
 { yyval = "approxDivide"; }
 break;
-case 250:
-//#line 928 "e.y"
+case 256:
+//#line 932 "e.y"
 { yyval = "floorDivide"; }
 break;
-case 251:
-//#line 929 "e.y"
+case 257:
+//#line 933 "e.y"
 { yyval = "shiftLeft"; }
 break;
-case 252:
-//#line 930 "e.y"
+case 258:
+//#line 934 "e.y"
 { yyval = "remainder"; }
 break;
-case 253:
-//#line 931 "e.y"
+case 259:
+//#line 935 "e.y"
 { yyval = "mod"; }
 break;
-case 254:
-//#line 932 "e.y"
+case 260:
+//#line 936 "e.y"
 { yyval = "multiply"; }
 break;
-case 255:
-//#line 933 "e.y"
+case 261:
+//#line 937 "e.y"
 { yyval = "or"; }
 break;
-case 256:
-//#line 934 "e.y"
+case 262:
+//#line 938 "e.y"
 { yyval = "pow"; }
 break;
-case 257:
-//#line 935 "e.y"
+case 263:
+//#line 939 "e.y"
 { yyval = "subtract"; }
 break;
-case 258:
-//#line 936 "e.y"
+case 264:
+//#line 940 "e.y"
 { yyval = "xor"; }
 break;
-case 259:
-//#line 945 "e.y"
+case 265:
+//#line 949 "e.y"
 { yyval = NULL; }
 break;
-case 260:
-//#line 946 "e.y"
+case 266:
+//#line 950 "e.y"
 { yyval = val_peek(2); }
 break;
-case 261:
-//#line 950 "e.y"
+case 267:
+//#line 954 "e.y"
 { yyval = val_peek(1); }
 break;
-case 262:
-//#line 955 "e.y"
+case 268:
+//#line 959 "e.y"
 { yyval = eScript(val_peek(2), optMatcher(val_peek(1))); }
 break;
-case 263:
-//#line 957 "e.y"
+case 269:
+//#line 961 "e.y"
 { pocket("plumbing");
                                   yyval = eScript(null, val_peek(0)); }
 break;
-case 264:
-//#line 959 "e.y"
+case 270:
+//#line 963 "e.y"
 { pocket("plumbing");
                                   yyval = eScript(null, val_peek(0)); }
 break;
-case 266:
-//#line 969 "e.y"
+case 272:
+//#line 973 "e.y"
 { yyval = with(val_peek(2), val_peek(1)); }
 break;
-case 268:
-//#line 974 "e.y"
+case 274:
+//#line 978 "e.y"
 { yyval = with(val_peek(2), val_peek(1)); }
 break;
-case 270:
-//#line 979 "e.y"
+case 276:
+//#line 983 "e.y"
 { yyval = with(val_peek(2), val_peek(1)); }
 break;
-case 273:
-//#line 996 "e.y"
+case 279:
+//#line 1000 "e.y"
 { yyval = with(val_peek(1), val_peek(0)); }
 break;
-case 274:
-//#line 1000 "e.y"
+case 280:
+//#line 1004 "e.y"
 { yyval = matcher(val_peek(1), val_peek(0)); }
 break;
-case 275:
-//#line 1007 "e.y"
+case 281:
+//#line 1011 "e.y"
 { yyval = null; }
 break;
-case 276:
-//#line 1008 "e.y"
+case 282:
+//#line 1012 "e.y"
 { yyval = val_peek(0); }
 break;
-case 277:
-//#line 1019 "e.y"
+case 283:
+//#line 1023 "e.y"
 { yyval = oType(val_peek(4), val_peek(1)); }
 break;
-case 278:
-//#line 1020 "e.y"
+case 284:
+//#line 1024 "e.y"
 { yyval = oType(val_peek(2), list(val_peek(1))); }
 break;
-case 282:
-//#line 1027 "e.y"
+case 288:
+//#line 1031 "e.y"
 { yyval = with(val_peek(3),val_peek(1)); }
 break;
-case 283:
-//#line 1031 "e.y"
+case 289:
+//#line 1035 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 284:
-//#line 1032 "e.y"
+case 290:
+//#line 1036 "e.y"
 { yyval = with(val_peek(3),val_peek(0)); }
 break;
-case 285:
-//#line 1034 "e.y"
+case 291:
+//#line 1038 "e.y"
 { reserved("on event"); }
 break;
-case 286:
-//#line 1035 "e.y"
+case 292:
+//#line 1039 "e.y"
 { reserved("on event"); }
 break;
-case 287:
-//#line 1042 "e.y"
+case 293:
+//#line 1046 "e.y"
 { yyval = mType(val_peek(1),list(),val_peek(0)); }
 break;
-case 288:
-//#line 1043 "e.y"
+case 294:
+//#line 1047 "e.y"
 { yyval = mType(val_peek(4),val_peek(2),val_peek(0)); }
 break;
-case 289:
-//#line 1044 "e.y"
+case 295:
+//#line 1048 "e.y"
 { yyval = mType("run",val_peek(2),val_peek(0)); }
 break;
-case 290:
-//#line 1048 "e.y"
+case 296:
+//#line 1052 "e.y"
 { yyval = val_peek(0); }
 break;
-case 291:
-//#line 1049 "e.y"
+case 297:
+//#line 1053 "e.y"
 { yyval = val_peek(1); }
 break;
-case 292:
-//#line 1053 "e.y"
+case 298:
+//#line 1057 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 293:
-//#line 1054 "e.y"
+case 299:
+//#line 1058 "e.y"
 { yyval = with(val_peek(3),val_peek(0)); }
 break;
-case 294:
-//#line 1061 "e.y"
+case 300:
+//#line 1065 "e.y"
 { yyval = pType(val_peek(1),val_peek(0)); }
 break;
-case 295:
-//#line 1062 "e.y"
+case 301:
+//#line 1066 "e.y"
 { yyval = pType(null,val_peek(0)); }
 break;
-case 296:
-//#line 1066 "e.y"
+case 302:
+//#line 1070 "e.y"
 { yyval = null; }
 break;
-case 297:
-//#line 1067 "e.y"
+case 303:
+//#line 1071 "e.y"
 { yyval = val_peek(0); }
 break;
-//#line 5691 "EParser.java"
+//#line 6503 "EParser.java"
 //########## END OF USER-SUPPLIED ACTIONS ##########
     }//switch
     //#### Now let's reduce... ####



1.83      +17 -13    e/src/jsrc/org/erights/e/elang/syntax/e.y

Index: e.y
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/syntax/e.y,v
retrieving revision 1.82
retrieving revision 1.83
diff -u -r1.82 -r1.83
--- e.y	2001/09/08 22:59:21	1.82
+++ e.y	2001/09/09 07:57:02	1.83
@@ -389,14 +389,12 @@
  |      postfix Send verb parenArgs     { $$ = send($1, $3, $4); }
  |      postfix Send      parenArgs     { $$ = send($1, "run", $3); }
 
-/*
  |      postfix Send verb               { pocket("no-paren-call");
                                           $$ = send($1, $3, list()); }
  |      postfix verb                    { pocket("no-paren-call");
                                           $$ = call($1, $2, list()); }
  |      postfix '.' ident               { pocket("dot-props");
                                           $$ = property($1, $3, list()); }
-*/
  |      postfix '.' ident parenArgs     { pocket("dot-props");
                                           $$ = property($1, $3, $4); }
  ;
@@ -410,12 +408,10 @@
  |      META Send      parenArgs        { $$ = doMetaSend("run", $3); }
  |      META Send verb parenArgs        { $$ = doMetaSend($3, $4); }
 
-/*
  |      META      verb                  { pocket("no-paren-call");
                                           $$ = doMeta($2, list()); }
  |      META Send verb                  { pocket("no-paren-call");
                                           $$ = doMetaSend($3, list()); }
-*/
  ;
 
 
@@ -463,12 +459,6 @@
 
  |      FOR iterPattern IN assign body          { $$ = forx($2,$4,$5); }
 
- |      define audits vTable                    { $$ = object($2, $3); }
- |      define audits funcHead body             { $$ = methObject($2,$3,$4); }
- |      THUNK body                              { $$ = thunk($2); }
-
- |      CLASS classHead body                    { $$ = classExpr($2,$3); }
-
  |      SWITCH parenExpr caseList               { $$ = switchx($2,$3); }
 
  |      TRY body catchList finallyClause        { $$ = tryx($2,$3,$4); }
@@ -489,6 +479,19 @@
  |      SELECT parenExpr caseList               { reserved("select"); }
  |      TYPEDEF oType                           { pocket("typedef");
                                                   $$ = $2; }
+ |      object
+ ;
+
+/**
+ *
+ */
+object:
+        define audits vTable                    { $$ = object($2, $3); }
+ |      define audits funcHead body             { $$ = methObject($2,$3,$4); }
+ |      THUNK body                              { $$ = thunk($2); }
+
+ |      CLASS classHead body                    { $$ = classExpr($2,$3); }
+
  |      '_' funcHead body       { pocket("anon-lambda");
                                   $$ = methObject(audits(ignore(), list()),
                                                   $2,
@@ -497,7 +500,6 @@
                                   $$ = thunk($2); }
  ;
 
-
 /**
  * Evaluates to the binding of this name in the current scope
  */
@@ -869,9 +871,11 @@
 parenArgs:
         '(' argList ')'                 { $$ = $2; }
 /*
- |      '(' argList ')' body            { $$ = with($2, thunk($4)); }
+ |      parenArgs body                  { pocket("block-args");
+                                          $$ = with($1, thunk($2)); }
 */
- |      '(' argList ')' THUNK body      { $$ = with($2, thunk($5)); }
+ |      parenArgs object                { pocket("lambda-args");
+                                          $$ = with($1, $2); }
 ;
 
 argList: