[e-cvs] cvs commit: e/src/jsrc/org/erights/e/meta/java/lang ThrowableGuardSugar.java RuntimeExceptionGuardSugar.java

markm@eros.cs.jhu.edu markm@eros.cs.jhu.edu
Wed, 3 Oct 2001 00:41:04 -0400


markm       01/10/03 00:41:04

  Modified:    src/bin/resources/org/erights/e/elang/syntax
                        ParserTables.data
               src/esrc/scripts elmer.e
               src/jsrc/org/erights/e/elang/syntax EBuilder.java
                        ELexer.java EParser.java e.y
               src/jsrc/org/erights/e/elib/base ClassDesc.java
               src/jsrc/org/erights/e/elib/ref DeviceRef.java
               src/jsrc/org/erights/e/meta/java/lang
                        ThrowableGuardSugar.java
  Removed:     src/jsrc/org/erights/e/meta/java/lang
                        RuntimeExceptionGuardSugar.java
  Log:
  E now supports 'receiver verb= (args...)'.  Elmer now starts with helper text

Revision  Changes    Path
1.22      +25 -24    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.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
Binary files /tmp/cvsyWu9R6 and /tmp/cvs4MbCh5 differ



1.10      +8 -0      e/src/esrc/scripts/elmer.e

Index: elmer.e
===================================================================
RCS file: /cvs/e/src/esrc/scripts/elmer.e,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- elmer.e	2001/08/18 05:19:38	1.9
+++ elmer.e	2001/10/03 04:41:02	1.10
@@ -10,6 +10,14 @@
 for arg in interp getArgs() {
     first menuOpen(<file: arg>)
 }
+first textArea() setText(
+"\
+Elmer is a simple text editor that also executes embedded
+command line examples.  Try hitting enter below
+
+    ? 2 + 3")
+    
+
 first setVisible(true)
 
 interp blockAtTop()



1.76      +12 -2     e/src/jsrc/org/erights/e/elang/syntax/EBuilder.java

Index: EBuilder.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/syntax/EBuilder.java,v
retrieving revision 1.75
retrieving revision 1.76
diff -u -r1.75 -r1.76
--- EBuilder.java	2001/09/06 09:55:46	1.75
+++ EBuilder.java	2001/10/03 04:41:02	1.76
@@ -206,11 +206,21 @@
      */
     /*package*/ EExpr update(Object lValue, Object verb, Object rnValue) {
 
+        String verbName;
+        if (verb instanceof Token) {
+            verbName = ((Token)verb).token();
+        } else {
+            verbName = (String)verb;
+        }
+        if (verbName.endsWith("=")) {
+            verbName = verbName.substring(0, verbName.length() -1);
+        }
+
         if (lValue instanceof NounExpr) {
             /*
              *  x "verb=" z expands to x := x verb(z)
              */
-            return assign(lValue, call(lValue, verb, rnValue));
+            return assign(lValue, call(lValue, verbName, rnValue));
 
         } else if (lValue instanceof CallExpr) {
             /*
@@ -242,7 +252,7 @@
              * Now let assign() do the rest of the transform
              */
             return sequence(result,
-                            assign(lval, call(lval, verb, rnValue)));
+                            assign(lval, call(lval, verbName, rnValue)));
 
         } else {
             syntaxError("Assignment can only be done to nouns and calls");



1.55      +5 -0      e/src/jsrc/org/erights/e/elang/syntax/ELexer.java

Index: ELexer.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/syntax/ELexer.java,v
retrieving revision 1.54
retrieving revision 1.55
diff -u -r1.54 -r1.55
--- ELexer.java	2001/09/23 10:46:16	1.54
+++ ELexer.java	2001/10/03 04:41:02	1.55
@@ -817,6 +817,11 @@
         do {
             nextChar();
         } while (myChar != EOFCHAR && isIdentifierPart((char)myChar));
+
+        if ('=' == myChar) {
+            nextChar();
+            return new Token(endToken(), EParser.VerbAss);
+        }
         return Identifier.make(endToken());
     }
 



1.91      +673 -671  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.90
retrieving revision 1.91
diff -u -r1.90 -r1.91
--- EParser.java	2001/10/01 08:31:04	1.90
+++ EParser.java	2001/10/03 04:41:02	1.91
@@ -164,187 +164,188 @@
 public final static short LiteralString=260;
 public final static short LiteralTwine=261;
 public final static short Identifier=262;
-public final static short QuasiOpen=263;
-public final static short QuasiClose=264;
-public final static short URI=265;
-public final static short URIStart=266;
-public final static short BodyStartWord=267;
-public final static short BodyNextWord=268;
-public final static short VTableStartWord=269;
-public final static short VTableNextWord=270;
-public final static short BIND=271;
-public final static short CATCH=272;
-public final static short CLASS=273;
-public final static short DEF=274;
-public final static short DELEGATE=275;
-public final static short ELSE=276;
-public final static short ESCAPE=277;
-public final static short FINALLY=278;
-public final static short FOR=279;
-public final static short IF=280;
-public final static short IN=281;
-public final static short MATCH=282;
-public final static short META=283;
-public final static short SWITCH=284;
-public final static short THUNK=285;
-public final static short TO=286;
-public final static short TRY=287;
-public final static short VAR=288;
-public final static short WHEN=289;
-public final static short WHILE=290;
-public final static short DEFINE=291;
-public final static short ON=292;
-public final static short SELECT=293;
-public final static short TYPEDEF=294;
-public final static short ABSTRACT=295;
-public final static short AN=296;
-public final static short AS=297;
-public final static short ATTRIBUTE=298;
-public final static short BE=299;
-public final static short BEGIN=300;
-public final static short BEHALF=301;
-public final static short BELIEF=302;
-public final static short BELIEVE=303;
-public final static short BELIEVES=304;
-public final static short CASE=305;
-public final static short CONST=306;
-public final static short CONSTRUCTOR=307;
-public final static short CONTEXT=308;
-public final static short DECLARE=309;
-public final static short DEFAULT=310;
-public final static short DEFMACRO=311;
-public final static short DEPRECATED=312;
-public final static short DISPATCH=313;
-public final static short DO=314;
-public final static short ENCAPSULATE=315;
-public final static short ENCAPSULATED=316;
-public final static short ENCAPSULATES=317;
-public final static short END=318;
-public final static short ENSURE=319;
-public final static short ENUM=320;
-public final static short EVENTUAL=321;
-public final static short EVENTUALLY=322;
-public final static short EXPORT=323;
-public final static short EXTENDS=324;
-public final static short FACET=325;
-public final static short FORALL=326;
-public final static short FUNCTION=327;
-public final static short GIVEN=328;
-public final static short HIDDEN=329;
-public final static short HIDES=330;
-public final static short IMPLEMENTS=331;
-public final static short INTERFACE=332;
-public final static short IS=333;
-public final static short KNOW=334;
-public final static short KNOWS=335;
-public final static short LAMBDA=336;
-public final static short LET=337;
-public final static short METHOD=338;
-public final static short METHODS=339;
-public final static short MODULE=340;
-public final static short NAMESPACE=341;
-public final static short NATIVE=342;
-public final static short OBEYS=343;
-public final static short OCTET=344;
-public final static short ONEWAY=345;
-public final static short PACKAGE=346;
-public final static short PRAGMA=347;
-public final static short PRIVATE=348;
-public final static short PROTECTED=349;
-public final static short PUBLIC=350;
-public final static short RAISES=351;
-public final static short RELIANCE=352;
-public final static short RELIANT=353;
-public final static short RELIES=354;
-public final static short RELY=355;
-public final static short REVEAL=356;
-public final static short SAKE=357;
-public final static short SIGNED=358;
-public final static short STATIC=359;
-public final static short STRUCT=360;
-public final static short SUCHTHAT=361;
-public final static short SUPPORTS=362;
-public final static short SUSPECT=363;
-public final static short SUSPECTS=364;
-public final static short SYNCHRONIZED=365;
-public final static short THIS=366;
-public final static short THROWS=367;
-public final static short TRANSIENT=368;
-public final static short TRUNCATABLE=369;
-public final static short UNSIGNED=370;
-public final static short UNUM=371;
-public final static short USES=372;
-public final static short USING=373;
-public final static short UTF8=374;
-public final static short UTF16=375;
-public final static short VALUETYPE=376;
-public final static short VIRTUAL=377;
-public final static short VOLATILE=378;
-public final static short WSTRING=379;
-public final static short EOL=380;
-public final static short OpLAnd=381;
-public final static short OpLOr=382;
-public final static short OpSame=383;
-public final static short OpNSame=384;
-public final static short OpButNot=385;
-public final static short OpLeq=386;
-public final static short OpABA=387;
-public final static short OpGeq=388;
-public final static short OpThru=389;
-public final static short OpTill=390;
-public final static short OpAsl=391;
-public final static short OpAsr=392;
-public final static short OpFlrDiv=393;
-public final static short OpMod=394;
-public final static short OpPow=395;
-public final static short OpAss=396;
-public final static short OpAssAdd=397;
-public final static short OpAssAnd=398;
-public final static short OpAssAprxDiv=399;
-public final static short OpAssFlrDiv=400;
-public final static short OpAssAsl=401;
-public final static short OpAssAsr=402;
-public final static short OpAssRemdr=403;
-public final static short OpAssMod=404;
-public final static short OpAssMul=405;
-public final static short OpAssOr=406;
-public final static short OpAssPow=407;
-public final static short OpAssSub=408;
-public final static short OpAssXor=409;
-public final static short Send=410;
-public final static short OpWhen=411;
-public final static short MapsTo=412;
-public final static short MatchBind=413;
-public final static short MisMatch=414;
-public final static short Audit=415;
+public final static short VerbAss=263;
+public final static short QuasiOpen=264;
+public final static short QuasiClose=265;
+public final static short URI=266;
+public final static short URIStart=267;
+public final static short BodyStartWord=268;
+public final static short BodyNextWord=269;
+public final static short VTableStartWord=270;
+public final static short VTableNextWord=271;
+public final static short BIND=272;
+public final static short CATCH=273;
+public final static short CLASS=274;
+public final static short DEF=275;
+public final static short DELEGATE=276;
+public final static short ELSE=277;
+public final static short ESCAPE=278;
+public final static short FINALLY=279;
+public final static short FOR=280;
+public final static short IF=281;
+public final static short IN=282;
+public final static short MATCH=283;
+public final static short META=284;
+public final static short SWITCH=285;
+public final static short THUNK=286;
+public final static short TO=287;
+public final static short TRY=288;
+public final static short VAR=289;
+public final static short WHEN=290;
+public final static short WHILE=291;
+public final static short DEFINE=292;
+public final static short ON=293;
+public final static short SELECT=294;
+public final static short TYPEDEF=295;
+public final static short ABSTRACT=296;
+public final static short AN=297;
+public final static short AS=298;
+public final static short ATTRIBUTE=299;
+public final static short BE=300;
+public final static short BEGIN=301;
+public final static short BEHALF=302;
+public final static short BELIEF=303;
+public final static short BELIEVE=304;
+public final static short BELIEVES=305;
+public final static short CASE=306;
+public final static short CONST=307;
+public final static short CONSTRUCTOR=308;
+public final static short CONTEXT=309;
+public final static short DECLARE=310;
+public final static short DEFAULT=311;
+public final static short DEFMACRO=312;
+public final static short DEPRECATED=313;
+public final static short DISPATCH=314;
+public final static short DO=315;
+public final static short ENCAPSULATE=316;
+public final static short ENCAPSULATED=317;
+public final static short ENCAPSULATES=318;
+public final static short END=319;
+public final static short ENSURE=320;
+public final static short ENUM=321;
+public final static short EVENTUAL=322;
+public final static short EVENTUALLY=323;
+public final static short EXPORT=324;
+public final static short EXTENDS=325;
+public final static short FACET=326;
+public final static short FORALL=327;
+public final static short FUNCTION=328;
+public final static short GIVEN=329;
+public final static short HIDDEN=330;
+public final static short HIDES=331;
+public final static short IMPLEMENTS=332;
+public final static short INTERFACE=333;
+public final static short IS=334;
+public final static short KNOW=335;
+public final static short KNOWS=336;
+public final static short LAMBDA=337;
+public final static short LET=338;
+public final static short METHOD=339;
+public final static short METHODS=340;
+public final static short MODULE=341;
+public final static short NAMESPACE=342;
+public final static short NATIVE=343;
+public final static short OBEYS=344;
+public final static short OCTET=345;
+public final static short ONEWAY=346;
+public final static short PACKAGE=347;
+public final static short PRAGMA=348;
+public final static short PRIVATE=349;
+public final static short PROTECTED=350;
+public final static short PUBLIC=351;
+public final static short RAISES=352;
+public final static short RELIANCE=353;
+public final static short RELIANT=354;
+public final static short RELIES=355;
+public final static short RELY=356;
+public final static short REVEAL=357;
+public final static short SAKE=358;
+public final static short SIGNED=359;
+public final static short STATIC=360;
+public final static short STRUCT=361;
+public final static short SUCHTHAT=362;
+public final static short SUPPORTS=363;
+public final static short SUSPECT=364;
+public final static short SUSPECTS=365;
+public final static short SYNCHRONIZED=366;
+public final static short THIS=367;
+public final static short THROWS=368;
+public final static short TRANSIENT=369;
+public final static short TRUNCATABLE=370;
+public final static short UNSIGNED=371;
+public final static short UNUM=372;
+public final static short USES=373;
+public final static short USING=374;
+public final static short UTF8=375;
+public final static short UTF16=376;
+public final static short VALUETYPE=377;
+public final static short VIRTUAL=378;
+public final static short VOLATILE=379;
+public final static short WSTRING=380;
+public final static short EOL=381;
+public final static short OpLAnd=382;
+public final static short OpLOr=383;
+public final static short OpSame=384;
+public final static short OpNSame=385;
+public final static short OpButNot=386;
+public final static short OpLeq=387;
+public final static short OpABA=388;
+public final static short OpGeq=389;
+public final static short OpThru=390;
+public final static short OpTill=391;
+public final static short OpAsl=392;
+public final static short OpAsr=393;
+public final static short OpFlrDiv=394;
+public final static short OpMod=395;
+public final static short OpPow=396;
+public final static short OpAss=397;
+public final static short OpAssAdd=398;
+public final static short OpAssAnd=399;
+public final static short OpAssAprxDiv=400;
+public final static short OpAssFlrDiv=401;
+public final static short OpAssAsl=402;
+public final static short OpAssAsr=403;
+public final static short OpAssRemdr=404;
+public final static short OpAssMod=405;
+public final static short OpAssMul=406;
+public final static short OpAssOr=407;
+public final static short OpAssPow=408;
+public final static short OpAssSub=409;
+public final static short OpAssXor=410;
+public final static short Send=411;
+public final static short OpWhen=412;
+public final static short MapsTo=413;
+public final static short MatchBind=414;
+public final static short MisMatch=415;
+public final static short Audit=416;
 public final static short YYERRCODE=256;
 final static short yylhs[] = {                           -1,
     0,    0,    0,    4,    4,    2,    6,    5,    5,    7,
     7,    8,   10,   10,   11,   11,   11,   14,   14,   12,
-   12,   12,   12,   12,   12,   12,   16,   16,   20,   20,
-   21,   21,   21,   21,   21,   21,   21,   21,   21,   23,
-   23,   22,   22,   22,   22,   22,   22,   24,   24,   24,
-   25,   25,   25,   27,   27,   26,   26,   26,   29,   29,
-   28,   28,   28,   28,   28,   28,   31,   31,   30,   30,
-   33,   33,   32,   32,   32,   32,   32,   34,   34,   34,
-   34,   34,   34,   34,   34,   34,   37,   37,   37,   37,
-   37,   37,   36,   36,   36,   36,   35,   35,   35,   35,
-   35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-   35,   35,   35,   35,   35,   35,   35,   35,   35,   35,
-   35,   35,   35,   35,   35,   56,   56,   56,   56,   56,
+   12,   12,   12,   12,   12,   12,   12,   16,   16,   21,
+   21,   22,   22,   22,   22,   22,   22,   22,   22,   22,
+   24,   24,   23,   23,   23,   23,   23,   23,   25,   25,
+   25,   26,   26,   26,   28,   28,   27,   27,   27,   30,
+   30,   29,   29,   29,   29,   29,   29,   32,   32,   31,
+   31,   34,   34,   33,   33,   33,   33,   33,   35,   35,
+   35,   35,   35,   35,   35,   35,   35,   38,   38,   38,
+   38,   38,   38,   37,   37,   37,   36,   36,   36,   36,
+   36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+   36,   36,   36,   36,   36,   36,   36,   36,   36,   36,
+   36,   36,   36,   36,   36,   56,   56,   56,   56,   56,
    56,   41,   44,   53,   53,   53,   54,   54,   61,   61,
    61,   63,   62,   62,   42,   42,   42,   43,   43,   64,
    64,   65,   65,   66,   67,   67,   69,   69,   70,   71,
    71,   47,   47,   72,   72,    3,    3,    3,   74,   74,
    74,   74,   74,   75,   75,   76,   76,   77,   77,   78,
    78,   79,   79,   80,   80,   80,   73,   73,   73,   73,
-   73,   73,   73,   73,   18,   18,   19,   19,   81,   81,
+   73,   73,   73,   73,   19,   19,   20,   20,   81,   81,
    81,   81,   81,   81,   81,   83,   83,   83,   84,   84,
    57,   57,   85,   85,   15,   15,   82,   82,   87,   87,
    87,   87,   87,   88,   88,   88,   59,   59,   59,   60,
    90,   91,   89,   89,   92,   51,   51,   93,   93,   94,
-    1,    1,    9,    9,   95,   68,   40,   40,   38,   38,
-   86,   86,   45,   45,   96,   96,   39,   13,   13,   17,
+    1,    1,    9,    9,   95,   68,   18,   18,   39,   39,
+   86,   86,   45,   45,   96,   96,   40,   13,   13,   17,
    17,   17,   17,   17,   17,   17,   17,   17,   17,   17,
    17,   46,   46,   48,   58,   58,   58,   99,   99,  100,
   100,   98,   98,   49,   49,   52,  101,   50,   50,   55,
@@ -363,14 +364,14 @@
 final static short yylen[] = {                            2,
     1,    1,    2,    1,    1,    3,    3,    1,    3,    1,
     3,    1,    1,    2,    1,    3,    2,    1,    1,    1,
-    3,    3,    3,    4,    3,    3,    1,    3,    1,    3,
-    1,    3,    3,    3,    3,    3,    3,    3,    3,    1,
-    1,    1,    3,    3,    3,    3,    3,    1,    3,    3,
-    1,    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,    3,    2,    3,    4,    2,    3,    3,    4,
-    2,    3,    1,    2,    3,    4,    1,    1,    1,    1,
+    3,    3,    3,    3,    4,    3,    3,    1,    3,    1,
+    3,    1,    3,    3,    3,    3,    3,    3,    3,    3,
+    1,    1,    1,    3,    3,    3,    3,    3,    1,    3,
+    3,    1,    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,    3,    2,    3,    4,    2,    3,    3,
+    4,    2,    3,    1,    2,    3,    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,    2,    3,    2,    3,    3,
@@ -418,8 +419,8 @@
     0,    0,    0,    4,    0,    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,    0,   29,    0,
-    0,    0,    0,    0,   61,    0,    0,   93,    0,   79,
+   12,    0,   15,    0,    0,    0,    0,    0,   30,    0,
+    0,    0,    0,    0,   62,    0,    0,   94,    0,   80,
   102,    0,  106,  109,  116,  117,  125,    0,    0,  244,
     0,    0,    0,    0,    0,    0,    0,  175,  189,    0,
   246,    0,    0,  155,    0,    0,    0,  160,    0,    0,
@@ -427,38 +428,38 @@
   140,    0,    0,    0,  217,  218,    0,    0,    0,    0,
   200,  199,    0,    0,  205,    0,    0,    0,    0,  163,
     0,    0,    0,  257,    0,    0,    0,  128,  245,    0,
-    0,    0,    0,    0,    0,    0,  124,    0,   77,   76,
-   74,   75,    0,    0,    0,    0,    0,  249,    0,  253,
+    0,    0,    0,    0,    0,    0,  124,    0,   78,   77,
+   75,   76,    0,    0,    0,    0,    0,  249,    0,  253,
   119,  120,    0,    0,  122,    0,    0,    0,  131,    0,
     0,    0,    0,    0,    0,    0,    0,    0,  206,    6,
-    0,    0,    0,    0,  260,  261,  262,  263,  264,    0,
-  265,  266,  267,  268,  269,  270,  271,    0,    0,    0,
+    0,    0,    0,    0,    0,  260,  261,  262,  263,  264,
+    0,  265,  266,  267,  268,  269,  270,  271,    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,  148,  105,    0,    0,    0,    0,  126,    0,
-  276,  277,    0,    0,    0,    0,    0,  207,  208,    0,
-  165,    0,    0,    0,  156,    0,    0,  159,    0,    0,
-    0,   10,  147,  187,    0,    0,  182,  180,  183,    0,
-  179,  167,  104,    0,    0,  201,  202,    0,    0,  129,
-    0,    0,  110,    0,    0,    0,    0,  251,    0,    0,
-  248,    0,  113,    0,  285,  284,    0,  245,    0,    0,
-  111,  123,    0,    0,    0,    0,  132,  256,    0,  107,
-  108,    0,    0,    0,  272,    0,    0,  157,    0,    0,
-    0,  229,  130,    0,    0,    0,    0,    0,    0,    9,
-    0,   16,    0,   21,   23,    0,   18,   22,   19,   25,
-   26,   30,   32,   33,   41,   40,   37,   38,   39,   34,
-   35,   36,   44,   45,   46,   43,   47,    0,    0,   55,
-    0,   52,    0,   60,    0,   57,   58,   68,   67,   64,
-   66,   62,   63,   65,   72,   71,   70,    0,    0,    0,
-    0,    0,    0,  150,    0,  149,  232,    0,  245,  127,
-  213,    0,  195,  133,  168,  197,  164,    0,    0,    0,
-    0,  193,  194,    7,    0,    0,    0,    0,    0,  181,
-    0,  137,    0,  138,    0,    0,    0,    0,    0,    0,
-    0,  247,  245,    0,    0,  114,  286,  235,    0,    0,
-    0,    0,  238,    0,    0,    0,    0,    0,    0,  300,
-  291,  255,    0,  254,  252,  118,    0,  121,    0,    0,
-  234,    0,    0,   24,    0,  215,    0,    0,   80,    0,
+    0,    0,    0,  148,  105,    0,    0,    0,    0,  126,
+    0,  276,  277,    0,    0,    0,    0,    0,  207,  208,
+    0,  165,    0,    0,    0,  156,    0,    0,  159,    0,
+    0,    0,   10,  147,  187,    0,    0,  182,  180,  183,
+    0,  179,  167,  104,    0,    0,  201,  202,    0,    0,
+  129,    0,    0,  110,    0,    0,    0,    0,  251,    0,
+  248,    0,    0,  113,    0,  285,  284,    0,  245,    0,
+    0,  111,  123,    0,    0,    0,    0,  132,  256,    0,
+  107,  108,    0,    0,    0,  272,    0,    0,  157,    0,
+    0,    0,  229,  130,    0,    0,    0,    0,    0,    0,
+    9,    0,   16,    0,    0,   21,   23,    0,   18,   22,
+   19,   26,   27,   31,   33,   34,   42,   41,   38,   39,
+   40,   35,   36,   37,   45,   46,   47,   44,   48,    0,
+    0,   56,    0,   53,    0,   61,    0,   58,   59,   69,
+   68,   65,   67,   63,   64,   66,   73,   72,   71,    0,
+    0,    0,    0,    0,  150,    0,  149,  232,    0,  245,
+  127,  213,    0,  195,  133,  168,  197,  164,    0,    0,
+    0,    0,  193,  194,    7,    0,    0,    0,    0,    0,
+  181,    0,  137,    0,  138,    0,    0,    0,    0,    0,
+    0,    0,  247,  245,    0,    0,  114,  286,  235,    0,
+    0,    0,    0,  238,    0,    0,    0,    0,    0,    0,
+  300,  291,  255,    0,  254,  252,  118,    0,  121,    0,
+    0,  234,    0,    0,   25,    0,  215,    0,    0,   81,
     0,  151,  231,  278,    0,    0,  171,  158,  173,    0,
   161,   11,  154,  152,  154,  185,  184,    0,    0,  203,
   204,    0,  112,  136,  135,  282,    0,    0,  289,  115,
@@ -475,20 +476,20 @@
   225,
 };
 final static short yydgoto[] = {                          3,
-  201,    5,  418,  187,  149,  388,  361,  150,    6,  362,
-  152,  153,  154,  438,  468,  155,  298,  105,  106,  158,
-  159,  160,  447,  161,  162,  163,  462,  164,  466,  165,
-  470,  166,  477,  167,  168,  169,  170,  256,  405,  236,
-  171,  172,  334,  173,  257,  174,  229,  393,  394,  526,
-  242,  395,  175,  176,  247,  177,  178,  339,  270,  223,
-  212,  512,  513,  335,  367,  507,  193,  194,  195,  196,
-  197,  198,  108,  109,  110,  111,  206,  207,  368,  369,
-  224,  225,  179,  226,  492,  259,  618,  651,  675,  341,
-  342,  244,  532,  533,  396,  260,  112,  587,  565,  620,
-  527,  599,  406,  600,  540,  537,  604,  605,
+  201,    5,  419,  187,  149,  389,  362,  150,    6,  363,
+  152,  153,  154,  440,  470,  155,  299,  235,  105,  106,
+  158,  159,  160,  449,  161,  162,  163,  464,  164,  468,
+  165,  472,  166,  479,  167,  168,  169,  170,  256,  406,
+  171,  172,  335,  173,  257,  174,  229,  394,  395,  527,
+  242,  396,  175,  176,  247,  177,  178,  340,  270,  223,
+  212,  513,  514,  336,  368,  508,  193,  194,  195,  196,
+  197,  198,  108,  109,  110,  111,  206,  207,  369,  370,
+  224,  225,  179,  226,  493,  259,  618,  651,  675,  342,
+  343,  244,  533,  534,  397,  260,  112,  587,  565,  620,
+  528,  599,  407,  600,  541,  538,  604,  605,
 };
-final static short yysindex[] = {                      -309,
-    0,13141,    0,15014,    0, -294,    0,19469,   96,19469,
+final static short yysindex[] = {                      -305,
+    0,13122,    0,15003,    0, -349,    0,19479,   56,19479,
     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,
@@ -497,70 +498,70 @@
     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,15954,19469, 9669,  -33,   28,
-    0, -199,    0,  129,    0,    0, -158,    0,  128,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,15361,13485,
-13485,19469,16418,    0,13141, 9788,   96,11757,   96,   72,
-   72,19469,16298,   96,    0,   96,16418,19469,15954,15954,
-15954, -278,   74, -199,  -51,17678, -199,12560, -199,    0,
-    0,  143,    0,    0,  400, -165, -161, -141,    0,  118,
-   22, -135,  205,    4,    0, -122,12091,    0,  235,    0,
-    0,  -91,    0,    0,    0,    0,    0,16880, -130,    0,
-  234, -199, -112,  243,19469,19469,16418,    0,    0,16762,
-    0,  -80,  261,    0,  -29,  270,  -19,    0,   71,  115,
-15014,  333,15361,   53,    0,    0,  104,15361,   68,    0,
-    0,   72,  -36,  234,    0,    0,19469,19469,  267,  279,
-    0,    0,   72,  -37,    0,  360,   72,  -80,  134,    0,
-   72,18372, -199,    0,  235,  203,  297,    0,    0,  243,
- -199,   72,  382,   29,   72,  297,    0,17796,    0,    0,
-    0,    0,19469,15014,   20,  353,   34,    0,  404,    0,
-    0,    0,  169,14891,    0,  198,13022,   35,    0,   72,
-  431,19469,19469,  334,  363,    0,  114,  129,    0,    0,
-12215,15014,15361,15014,    0,    0,    0,    0,    0,15014,
-    0,    0,    0,    0,    0,    0,    0,15484,15014,15014,
-15361,15361,15361,15831,13141,13141,15831,15831,15831,15361,
-15361,15361,15361,15361,15361,15361,15831,15361,15831,15831,
-15831,15831,15831,15831,15831,15831,18372, -199,19469,   40,
-  203,  464,    0,    0,  174,   72,13141, -199,    0,   72,
-    0,    0,19469,15361,  470,13141,15361,    0,    0,  129,
-    0,13141,  475, -199,    0,  396, -199,    0,  403,  405,
- -199,    0,    0,    0,  398,  406,    0,    0,    0,   53,
-    0,    0,    0,  263,  263,    0,    0,  278,  281,    0,
-19469,13022,    0,15014,  258,  235,  203,    0,  495,  203,
-    0, -199,    0, -117,    0,    0,   50,    0, -199,16418,
-    0,    0, -199, -199,   57,  166,    0,    0, -199,    0,
-    0, -278, -199,  422,    0, -199,  423,    0,  511,13022,
-15361,    0,    0,    0,  234,  243,  298,  299,15014,    0,
-12560,    0, -141,    0,    0,  -27,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,   73,   73,    0,
-  205,    0,  205,    0,    4,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,  235,  203,  467,
-  235,  235,  203,    0,  464,    0,    0,   72,    0,    0,
-    0,  517,    0,    0,    0,    0,    0,13603,13141,13603,
- 9788,    0,    0,    0,12215, -199,19469,13141,18776,    0,
-13485,    0,  300,    0,  440,  445,  517,  531,   72,  -75,
-  203,    0,    0,13141,   72,    0,    0,    0,  301,  296,
-  173,  125,    0,  540,  -82,19065,  545, -199,19469,    0,
-    0,    0,   20,    0,    0,    0,  463,    0,  532,  552,
-    0,  469,  472,    0,  129,    0,  240,  203,    0,  203,
-  203,    0,    0,    0,  133, -199,    0,    0,    0,  -80,
-    0,    0,    0,    0,    0,    0,    0,  -36,13485,    0,
-    0,  532,    0,    0,    0,    0,  -60,   72,    0,    0,
-13141,  532, -199,13141, -199,18490,18490,    0,  473, -199,
-  542,  542,    0,  -10,    0,  542,  562,    0,    0,    0,
-  532,    0,    0, -199,   96,18608,18608, -199, -128,  479,
-19469,  481,  482,  263,   72,    0,    0, -199,    0,    0,
-    0,    0,  277,    0,    0,    0,    0,    0, -194,    0,
-    0, -199,    0,    0,  542,    0,  389, -104,13022,  -20,
-   72,   91,   72,    0, -199,    0,    0,    0,    0,    0,
-  263,    0,  532, -199,18490,18490,19065,    0,    0,   96,
-    0,  567,15014,13022,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,  532,    0,  568,    0,  532,
+    0,    0,    0,    0,    0,15947,19479, 9637,    6,   25,
+    0, -298,    0,   48,    0,    0, -173,    0,   90,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,15351,13467,
+13467,19479,16413,    0,13122, 9757,   56,11731,   56,   72,
+   72,19479,16292,   56,    0,   56,16413,19479,15947,15947,
+15947, -315,   44, -298,  -85,17678, -298,12536, -298,    0,
+    0,   58,    0,    0,  878, -190, -181, -159,    0,  -17,
+   98,   77,  231,   20,    0, -140,12066,    0,  229,    0,
+    0,  -33,    0,    0,    0,    0,    0,16877, -129,    0,
+  179, -298, -104,  267,19479,19479,16413,    0,    0,16758,
+    0,  -84,  253,    0,    8,  255,   19,    0,   87,   95,
+15003,  319,15351,   39,    0,    0,   -1,15351,  269,    0,
+    0,   72,  -99,  179,    0,    0,19479,19479,  239,  241,
+    0,    0,   72,  -44,    0,  338,   72,  -84,  104,    0,
+   72,18376, -298,    0,  287,  229,  272,    0,    0,  267,
+ -298,   72,  361,    7,   72,  272,    0,17797,    0,    0,
+    0,    0,19479,15003,  -10,  324,   38,    0,  377,    0,
+    0,    0,  172,14879,    0,  175,13002,   81,    0,   72,
+  408,19479,19479,  330,  334,    0,   63,   48,    0,    0,
+12190,15003,  229,15351,15003,    0,    0,    0,    0,    0,
+15003,    0,    0,    0,    0,    0,    0,    0,15475,15003,
+15003,15351,15351,15351,15823,13122,13122,15823,15823,15823,
+15351,15351,15351,15351,15351,15351,15351,15823,15351,15823,
+15823,15823,15823,15823,15823,15823,15823,18376, -298,19479,
+  229,  287,  429,    0,    0,   17,   72,13122, -298,    0,
+   72,    0,    0,19479,15351,  431,13122,15351,    0,    0,
+   48,    0,13122,  433, -298,    0,  355, -298,    0,  363,
+  368, -298,    0,    0,    0,  357,  371,    0,    0,    0,
+   39,    0,    0,    0,  230,  230,    0,    0,  248,  250,
+    0,19479,13002,    0,15003,  233,  287,  229,    0,  467,
+    0,  287, -298,    0, -127,    0,    0,  197,    0, -298,
+16413,    0,    0, -298, -298,  116,  157,    0,    0, -298,
+    0,    0, -315, -298,  399,    0, -298,  401,    0,  498,
+13002,15351,    0,    0,    0,  179,  267,  284,  290,15003,
+    0,12536,    0,  287, -159,    0,    0,  -24,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  -55,
+  -55,    0,  231,    0,  231,    0,   20,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  287,
+  229,  453,  229,  287,    0,  429,    0,    0,   72,    0,
+    0,    0,  504,    0,    0,    0,    0,    0,13586,13122,
+13586, 9757,    0,    0,    0,12190, -298,19479,13122,18782,
+    0,13467,    0,  281,    0,  432,  438,  504,  513,   72,
+  -42,  287,    0,    0,13122,   72,    0,    0,    0,  291,
+  286,  162,  210,    0,  529,  202,19073,  530, -298,19479,
+    0,    0,    0,  -10,    0,    0,    0,  450,    0,  520,
+  540,    0,  457,  459,    0,   48,    0,  251,  287,    0,
+  287,    0,    0,    0, -101, -298,    0,    0,    0,  -84,
+    0,    0,    0,    0,    0,    0,    0,  -99,13467,    0,
+    0,  520,    0,    0,    0,    0,  -41,   72,    0,    0,
+13122,  520, -298,13122, -298,18495,18495,    0,  460, -298,
+  528,  528,    0,   21,    0,  528,  546,    0,    0,    0,
+  520,    0,    0, -298,   56,18614,18614, -298, -134,  463,
+19479,  466,  469,  230,   72,    0,    0, -298,    0,    0,
+    0,    0,  276,    0,    0,    0,    0,    0, -179,    0,
+    0, -298,    0,    0,  528,    0,  278, -107,13002,  -27,
+   72,  121,   72,    0, -298,    0,    0,    0,    0,    0,
+  230,    0,  520, -298,18495,18495,19073,    0,    0,   56,
+    0,  556,15003,13002,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,  520,    0,  557,    0,  520,
     0,
 };
-final static short yyrindex[] = {                      9207,
-    0,  216,    0,   61,    0, 8153,    0,    0,    0,    0,
+final static short yyrindex[] = {                      9163,
+    0,  143,    0,  159,    0, 8064,    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,
@@ -569,82 +570,82 @@
     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,  216,    0,  -64,    0,    0,
-    0,14544,    0, 8533,    0,    0,    0,    0, 8776,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,  216,  -38,
-  -81,    0,    0,    0,  216,  216,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,  216,  216,
-  216,13951,    0,14074,    0,    0,14544,  216,  616,    0,
-    0,   33,    0,  731, 7277,    0,    0, 8830,    0, 7913,
- 7991, 7524, 7072, 6898,    0, 6862, 6826,    0, 3003,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,17220,    0,
- 8566,14544,    0, 8601,    0,    0,    0,    0,    0,    0,
-    0,  -14,    0,    0,   21,    0,  524,    0,    0,    0,
-  216,    0,  216,    0,    0,    0,    0,  216,    0,    0,
-    0,    0,    0,11514,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,18136,    0,    0,    0,  337,    0,    0,
-    0,    0,14421,    0, 3418, 3571,    0,    0,    0,11636,
-14544,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,   14,   39,    0,    0,    0,   32,    0,
-    0,    0,    0,  216,    0,    0,   19,  497,    0,    0,
-    0,    0,    0,    0,    0,10250,    0,  571,    0,    0,
-   63,   23,  216,  216,    0,    0,    0,    0,    0,  216,
-    0,    0,    0,    0,    0,    0,    0,  216,  216,  216,
-  216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-  216,  216,  216,  216,  216,  216,  216,  216,  216,  216,
-  216,  216,  216,  216,  216,  216,    0,13951,    0, 3986,
- 1714,    0,    0,    0,    0,    0,  216,  -68,    0,    0,
-    0,    0,    0,  216,    0,  216,  216,    0,    0,  -23,
-    0,  216, 8636,12678,    0, 8739, 9325,    0,    0,    0,
-   -5,    0,    0,    0,19587,19233,    0,    0,    0,    0,
-    0,    0,    0,  354,  354,    0,    0,    0,    0,    0,
-    0,   19,    0,  216, 1867, 4139, 4554,    0,    0, 4707,
-    0,  -59,    0, 2282,    0,    0,    0,    0,14544,    0,
-    0,    0,  -56,18947, -101,    0,    0,    0,14544,    0,
-    0,14544,14544,    0,    0,  499,    0,    0,    0,   19,
-  216,    0,    0, 1146,10590,10712,    0,    0,  216,    0,
-  216,    0, 9030,    0,    0,14544,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0, 7659, 7695,    0,
- 7449,    0, 7488,    0, 7033,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0, 5122, 5275,    0,
- 5690,    0, 2435,    0,    0,    0,    0,    0,    0,    0,
-    0,17338,    0,    0,    0,    0,    0,  216,  216,  216,
-  216,    0,    0,    0,   59,14544,    0,  216,    0,    0,
-  -81,    0,    0,    0,    0,    0,18254,    0,    0,    0,
- 5843,    0,    0,  216,    0,    0,    0,    0,    0, 1299,
-    0,    0,    0,    0,  500,  587,    0,18947,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,  497,    0,
-    0,    0,    0,    0,10128,    0,    0, 6258,    0, 6411,
- 2850,    0,    0,    0,  -90,19705,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,  -38,    0,
-    0,  497,    0,    0,    0,    0,    0,    0,    0,    0,
-  216,  497,14544,  216,  499,    0,    0,    0,    0,  499,
-   15,   15,    0,  590,    0, -101,    0,    0,    0,    0,
-  497,11052,11174,14544,    0,    0,    0,  -68,  510,    0,
-    0,    0,    0,  354,    0,    0,    0,  -30,    0,    0,
-    0,    0,    0,    0,    0,    0,    0,    0,  512,    0,
-    0,19351,    0,    0, -101,    0,    0,    0,   19,  497,
-    0,  497,    0,    0,  499,    0,    0,    0,    0,    0,
-  354,    0,  497,  499,    0,    0,    0,    0,    0,    0,
-    0,    0,  216,   19,    0,    0,    0,    0,    0,    0,
-    0,    0,    0,    0,    0,  497,    0,    0,    0,  497,
+    0,    0,    0,    0,    0,  143,    0,  -56,    0,    0,
+    0,14531,    0, 7880,    0,    0,    0,    0, 8711,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,  143,  -77,
+  -59,    0,    0,    0,  143,  143,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,  143,  143,
+  143,13935,    0,14059,    0,    0,14531,  143,  602,    0,
+    0,   30,    0,  704,  404,    0,    0, 8779,    0, 8744,
+ 7843, 7425, 7030, 6822,    0, 6783, 6404,    0, 2830,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,17218,    0,
+ 8445,14531,    0, 8478,    0,    0,    0,    0,    0,    0,
+    0,   12,    0,    0,   29,    0,  511,    0,    0,    0,
+  143,    0,  143,    0,    0,    0,    0,  143,    0,    0,
+    0,    0,    0,11487,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,18138,    0,    0,    0,  325,    0,    0,
+    0,    0,14407,    0, 2984, 3400,    0,    0,    0,11609,
+14531,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,   -6,   42,    0,    0,    0,   37,    0,
+    0,    0,    0,  143,    0,    0,   13,  487,    0,    0,
+    0,    0,    0,    0,    0,10220,    0,  549,    0,    0,
+  190,   69,    0,  143,  143,    0,    0,    0,    0,    0,
+  143,    0,    0,    0,    0,    0,    0,    0,  143,  143,
+  143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
+  143,  143,  143,  143,  143,  143,  143,  143,  143,  143,
+  143,  143,  143,  143,  143,  143,  143,    0,13935,    0,
+ 3554, 1690,    0,    0,    0,    0,    0,  143,  316,    0,
+    0,    0,    0,    0,  143,    0,  143,  143,    0,    0,
+  -34,    0,  143, 8513,12657,    0, 8548, 9292,    0,    0,
+    0,  -21,    0,    0,    0,19598,19241,    0,    0,    0,
+    0,    0,    0,    0,  342,  342,    0,    0,    0,    0,
+    0,    0,   13,    0,  143, 1844, 3970, 4124,    0,    0,
+    0, 4540,  -37,    0, 2260,    0,    0,    0,    0,14531,
+    0,    0,    0,  -40,18954,  -76,    0,    0,    0,14531,
+    0,    0,14531,14531,    0,    0,  488,    0,    0,    0,
+   13,  143,    0,    0, 1120,10561,10683,    0,    0,  143,
+    0,  143,    0, 7885, 8942,    0,    0,14531,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0, 7464,
+ 7672,    0, 7238,    0, 7277,    0, 6858,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0, 4694,
+ 5110,    0, 5264, 2414,    0,    0,    0,    0,    0,    0,
+    0,    0,17337,    0,    0,    0,    0,    0,  143,  143,
+  143,  143,    0,    0,    0,  110,14531,    0,  143,    0,
+    0,  -59,    0,    0,    0,    0,    0,18257,    0,    0,
+    0, 5680,    0,    0,  143,    0,    0,    0,    0,    0,
+ 1274,    0,    0,    0,    0,  489,  574,    0,18954,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,    0,  487,
+    0,    0,    0,    0,    0,10098,    0,    0, 5834,    0,
+ 6250,    0,    0,    0,  -98,19717,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,  -77,    0,
+    0,  487,    0,    0,    0,    0,    0,    0,    0,    0,
+  143,  487,14531,  143,  488,    0,    0,    0,    0,  488,
+   -5,   -5,    0,  575,    0,  -76,    0,    0,    0,    0,
+  487,11024,11146,14531,    0,    0,    0,  316,  500,    0,
+    0,    0,    0,  342,    0,    0,    0,  -57,    0,    0,
+    0,    0,    0,    0,    0,    0,    0,    0,  502,    0,
+    0,19360,    0,    0,  -76,    0,    0,    0,   13,  487,
+    0,  487,    0,    0,  488,    0,    0,    0,    0,    0,
+  342,    0,  487,  488,    0,    0,    0,    0,    0,    0,
+    0,    0,  143,   13,    0,    0,    0,    0,    0,    0,
+    0,    0,    0,    0,    0,  487,    0,    0,    0,  487,
     0,
 };
 final static short yygindex[] = {                         0,
-    1,    0,  239,    7,    0,   69,  376,  361, -144,   -1,
-    0, -272,   42,    0,  416,    0,    0,   12,  185,  358,
-  343,  255,  144,  213,  -52,  -74,    0,  170,  325,  330,
-  191,  320,    0,    0,   37,    0,    0, -175, -124,  101,
- -222,   -2,    0,    8,    0,  107,    0,  402,  251,  127,
-    0,  262,  141,    0,    0,  223,    0, -205,  488,    0,
- -119, -362,    0,    0, -264, -326, -260,  -95,   75,    0,
-    0, -120,  477, -231,    0,    0,    0,    0,  303,    0,
- -111,    0,    0,  -84,  287, -232,    0,   54, -236, -478,
-   55,    0,    0,   84,  -28,  269,    0,  117,    0,    0,
-    0,    0, -254,    0, -261,  145,    0,   17,
+    1,    0,  124,   -2,    0,  -87,  364,  349, -144,    5,
+    0, -257,   43,    0,  413,    0,    0,  289,    3,   54,
+  347,  333,  918,  227,  201,  130, -105,    0,  117,  311,
+  208,  194,  314,    0,    0,   -3,    0,    0, -185, -117,
+ -212,  145,    0,   -9,    0,  -30,    0,  392,  249,  120,
+    0,  254,  131,    0,    0, 6444,    0, -201,  477,    0,
+ -113, -303,    0,    0, -286, -348, -264, -109,   64,    0,
+    0, -122,  472, -158,    0,    0,    0,    0,  292,    0,
+ -108,    0,    0, -111,  285, -235,    0,   49, -250, -485,
+   50,    0,    0,   75,  -63,  260,    0,  113,    0,    0,
+    0,    0, -231,    0, -512,  140,    0,   14,
 };
-final static int YYTABLESIZE=20084;
+final static int YYTABLESIZE=20097;
 
 //These two tables are not statically initialized, but rather
 //initialized on first use, so that a failure to initialize them
@@ -666,7 +667,7 @@
         yytable = (short[])obInp.readObject();
         yycheck = (short[])obInp.readObject();
         long hash = EYaccFixer.checkhash(yytable, yycheck);
-        if (hash != -1698461809567319641L) {
+        if (hash != -6767087121733791306L) {
             throw new RuntimeException(rName + " bad checkhash: " +
                                        hash);
         }
@@ -676,17 +677,17 @@
 }
 
 final static short YYFINAL=3;
-final static short YYMAXTOKEN=415;
+final static short YYMAXTOKEN=416;
 final static String yyname[] = {
 "end-of-file",null,null,null,null,null,null,null,null,null,null,null,null,null,
 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
 null,null,null,"'!'",null,null,"'$'","'%'","'&'",null,"'('","')'","'*'","'+'",
 "','","'-'","'.'","'/'",null,null,null,null,null,null,null,null,null,null,"':'",
-"';'","'<'","'='","'>'","'?'","'@'",null,null,null,null,null,null,null,null,
+"';'","'<'",null,"'>'","'?'","'@'",null,null,null,null,null,null,null,null,null,
 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
-null,null,"'['",null,"']'","'^'","'_'",null,null,null,null,null,null,null,null,
+null,"'['",null,"']'","'^'","'_'",null,null,null,null,null,null,null,null,null,
 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
-null,null,null,"'{'","'|'","'}'","'~'",null,null,null,null,null,null,null,null,
+null,null,"'{'","'|'","'}'","'~'",null,null,null,null,null,null,null,null,null,
 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
@@ -694,18 +695,18 @@
 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
-null,null,null,null,null,null,null,null,null,null,"LiteralInteger",
-"LiteralFloat64","LiteralChar","LiteralString","LiteralTwine","Identifier",
-"QuasiOpen","QuasiClose","URI","URIStart","BodyStartWord","BodyNextWord",
-"VTableStartWord","VTableNextWord","BIND","CATCH","CLASS","DEF","DELEGATE",
-"ELSE","ESCAPE","FINALLY","FOR","IF","IN","MATCH","META","SWITCH","THUNK","TO",
-"TRY","VAR","WHEN","WHILE","DEFINE","ON","SELECT","TYPEDEF","ABSTRACT","AN",
-"AS","ATTRIBUTE","BE","BEGIN","BEHALF","BELIEF","BELIEVE","BELIEVES","CASE",
-"CONST","CONSTRUCTOR","CONTEXT","DECLARE","DEFAULT","DEFMACRO","DEPRECATED",
-"DISPATCH","DO","ENCAPSULATE","ENCAPSULATED","ENCAPSULATES","END","ENSURE",
-"ENUM","EVENTUAL","EVENTUALLY","EXPORT","EXTENDS","FACET","FORALL","FUNCTION",
-"GIVEN","HIDDEN","HIDES","IMPLEMENTS","INTERFACE","IS","KNOW","KNOWS","LAMBDA",
-"LET","METHOD","METHODS","MODULE","NAMESPACE","NATIVE","OBEYS","OCTET","ONEWAY",
+null,null,null,null,null,null,null,null,null,"LiteralInteger","LiteralFloat64",
+"LiteralChar","LiteralString","LiteralTwine","Identifier","VerbAss","QuasiOpen",
+"QuasiClose","URI","URIStart","BodyStartWord","BodyNextWord","VTableStartWord",
+"VTableNextWord","BIND","CATCH","CLASS","DEF","DELEGATE","ELSE","ESCAPE",
+"FINALLY","FOR","IF","IN","MATCH","META","SWITCH","THUNK","TO","TRY","VAR",
+"WHEN","WHILE","DEFINE","ON","SELECT","TYPEDEF","ABSTRACT","AN","AS",
+"ATTRIBUTE","BE","BEGIN","BEHALF","BELIEF","BELIEVE","BELIEVES","CASE","CONST",
+"CONSTRUCTOR","CONTEXT","DECLARE","DEFAULT","DEFMACRO","DEPRECATED","DISPATCH",
+"DO","ENCAPSULATE","ENCAPSULATED","ENCAPSULATES","END","ENSURE","ENUM",
+"EVENTUAL","EVENTUALLY","EXPORT","EXTENDS","FACET","FORALL","FUNCTION","GIVEN",
+"HIDDEN","HIDES","IMPLEMENTS","INTERFACE","IS","KNOW","KNOWS","LAMBDA","LET",
+"METHOD","METHODS","MODULE","NAMESPACE","NATIVE","OBEYS","OCTET","ONEWAY",
 "PACKAGE","PRAGMA","PRIVATE","PROTECTED","PUBLIC","RAISES","RELIANCE","RELIANT",
 "RELIES","RELY","REVEAL","SAKE","SIGNED","STATIC","STRUCT","SUCHTHAT",
 "SUPPORTS","SUSPECT","SUSPECTS","SYNCHRONIZED","THIS","THROWS","TRANSIENT",
@@ -741,6 +742,7 @@
 "assign : cond OpAss assign",
 "assign : cond assignop nAssign",
 "assign : cond OpAssAsr assign",
+"assign : cond VerbAss parenArgs",
 "assign : define pattern OpAss assign",
 "assign : binder OpAss assign",
 "assign : varNamer OpAss assign",
@@ -813,7 +815,6 @@
 "call : prim",
 "call : call parenArgs",
 "call : postfix verb parenArgs",
-"call : postfix verb '=' parenArgs",
 "prim : LiteralInteger",
 "prim : LiteralFloat64",
 "prim : LiteralChar",
@@ -1115,7 +1116,7 @@
 "reserved : WSTRING",
 };
 
-//#line 1121 "e.y"
+//#line 1122 "e.y"
 
 /**
  *
@@ -1358,6 +1359,7 @@
     TheTokens[LiteralTwine]     = "literal-twine";
 
     TheTokens[Identifier]       = "non-keyword-identifier";
+    TheTokens[VerbAss]          = "verb-assign";
     TheTokens[QuasiOpen]        = "quasi-open";
     TheTokens[QuasiClose]       = "quasi-close";
     TheTokens[URI]              = "uniform-resource-identifier";
@@ -1632,7 +1634,7 @@
 static public boolean isContinuer(int tokenType) {
     return TheContinuers[tokenType];
 }
-//#line 5575 "EParser.java"
+//#line 5579 "EParser.java"
 //###############################################################
 // method: yylexdebug : check lexer state
 //###############################################################
@@ -1779,1018 +1781,1018 @@
       {
 //########## USER-SUPPLIED ACTIONS ##########
 case 1:
-//#line 148 "e.y"
+//#line 149 "e.y"
 { myEscape.run(null); }
 break;
 case 2:
-//#line 149 "e.y"
+//#line 150 "e.y"
 { myEscape.run(val_peek(0)); }
 break;
 case 3:
-//#line 151 "e.y"
+//#line 152 "e.y"
 { myEscape.run(val_peek(0)); }
 break;
 case 5:
-//#line 159 "e.y"
+//#line 160 "e.y"
 { pocket("define"); }
 break;
 case 6:
-//#line 168 "e.y"
+//#line 169 "e.y"
 { yyval = val_peek(1); }
 break;
 case 7:
-//#line 172 "e.y"
+//#line 173 "e.y"
 { yyval = val_peek(1); }
 break;
 case 9:
-//#line 183 "e.y"
+//#line 184 "e.y"
 { yyval = sequence(val_peek(2), val_peek(0)); }
 break;
 case 11:
-//#line 188 "e.y"
+//#line 189 "e.y"
 { yyval = sequence(val_peek(2), val_peek(0)); }
 break;
 case 12:
-//#line 196 "e.y"
+//#line 197 "e.y"
 { yyval = oneExpr(val_peek(0)); }
 break;
 case 16:
-//#line 211 "e.y"
+//#line 212 "e.y"
 { yyval = sequence(val_peek(2), val_peek(0)); }
 break;
 case 17:
-//#line 212 "e.y"
+//#line 213 "e.y"
 { yyval = forward(val_peek(0)); }
 break;
 case 18:
-//#line 227 "e.y"
+//#line 228 "e.y"
 { yyval = list(val_peek(0)); }
 break;
 case 21:
-//#line 232 "e.y"
+//#line 233 "e.y"
 { yyval = assign(val_peek(2),     val_peek(0)); }
 break;
 case 22:
-//#line 233 "e.y"
+//#line 234 "e.y"
 { yyval = update(val_peek(2), val_peek(1), val_peek(0)); }
 break;
 case 23:
-//#line 234 "e.y"
+//#line 235 "e.y"
 { yyval = assAsr(val_peek(2),     val_peek(0)); }
 break;
 case 24:
 //#line 236 "e.y"
-{ yyval = define(val_peek(2), val_peek(0)); }
+{ yyval = update(val_peek(2), val_peek(1), val_peek(0)); }
 break;
 case 25:
-//#line 237 "e.y"
+//#line 238 "e.y"
 { yyval = define(val_peek(2), val_peek(0)); }
 break;
 case 26:
-//#line 238 "e.y"
+//#line 239 "e.y"
 { yyval = define(val_peek(2), val_peek(0)); }
 break;
-case 28:
-//#line 247 "e.y"
+case 27:
+//#line 240 "e.y"
+{ yyval = define(val_peek(2), val_peek(0)); }
+break;
+case 29:
+//#line 249 "e.y"
 { yyval = condOr(val_peek(2), val_peek(0)); }
 break;
-case 30:
-//#line 256 "e.y"
+case 31:
+//#line 258 "e.y"
 { yyval = condAnd(val_peek(2), val_peek(0)); }
 break;
-case 32:
-//#line 265 "e.y"
-{ yyval = same(val_peek(2), val_peek(0)); }
-break;
 case 33:
-//#line 266 "e.y"
-{ yyval = not(same(val_peek(2), val_peek(0))); }
+//#line 267 "e.y"
+{ yyval = same(val_peek(2), val_peek(0)); }
 break;
 case 34:
-//#line 267 "e.y"
-{ yyval = call(val_peek(2), "and", val_peek(0)); }
+//#line 268 "e.y"
+{ yyval = not(same(val_peek(2), val_peek(0))); }
 break;
 case 35:
-//#line 268 "e.y"
-{ yyval = call(val_peek(2), "or", val_peek(0)); }
+//#line 269 "e.y"
+{ yyval = call(val_peek(2), "and", val_peek(0)); }
 break;
 case 36:
-//#line 269 "e.y"
-{ yyval = call(val_peek(2), "xor", val_peek(0)); }
+//#line 270 "e.y"
+{ yyval = call(val_peek(2), "or", val_peek(0)); }
 break;
 case 37:
-//#line 270 "e.y"
-{ yyval = call(val_peek(2), "butNot", val_peek(0)); }
+//#line 271 "e.y"
+{ yyval = call(val_peek(2), "xor", val_peek(0)); }
 break;
 case 38:
 //#line 272 "e.y"
-{ yyval = matchBind(val_peek(2), val_peek(0)); }
+{ yyval = call(val_peek(2), "butNot", val_peek(0)); }
 break;
 case 39:
-//#line 273 "e.y"
-{ yyval = not(matchBind(val_peek(2), val_peek(0))); }
+//#line 274 "e.y"
+{ yyval = matchBind(val_peek(2), val_peek(0)); }
 break;
 case 40:
-//#line 285 "e.y"
+//#line 275 "e.y"
+{ yyval = not(matchBind(val_peek(2), val_peek(0))); }
+break;
+case 41:
+//#line 287 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 43:
-//#line 290 "e.y"
+case 44:
+//#line 292 "e.y"
 { yyval = lessThan(val_peek(2), val_peek(0)); }
 break;
-case 44:
-//#line 291 "e.y"
+case 45:
+//#line 293 "e.y"
 { yyval = leq(val_peek(2), val_peek(0)); }
 break;
-case 45:
-//#line 292 "e.y"
+case 46:
+//#line 294 "e.y"
 { yyval = asBigAs(val_peek(2), val_peek(0)); }
 break;
-case 46:
-//#line 293 "e.y"
+case 47:
+//#line 295 "e.y"
 { yyval = geq(val_peek(2), val_peek(0)); }
 break;
-case 47:
-//#line 294 "e.y"
+case 48:
+//#line 296 "e.y"
 { yyval = greaterThan(val_peek(2), val_peek(0)); }
 break;
-case 49:
-//#line 303 "e.y"
+case 50:
+//#line 305 "e.y"
 { yyval = thru(val_peek(2), val_peek(0)); }
 break;
-case 50:
-//#line 304 "e.y"
+case 51:
+//#line 306 "e.y"
 { yyval = till(val_peek(2), val_peek(0)); }
 break;
-case 52:
-//#line 313 "e.y"
+case 53:
+//#line 315 "e.y"
 { yyval = call(val_peek(2), "shiftLeft", val_peek(0)); }
 break;
-case 53:
-//#line 314 "e.y"
+case 54:
+//#line 316 "e.y"
 { yyval = call(val_peek(2), "shiftLeft",
                                             list(call(val_peek(0), "negate", list())));
                                 }
 break;
-case 54:
-//#line 324 "e.y"
+case 55:
+//#line 326 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 57:
-//#line 329 "e.y"
+case 58:
+//#line 331 "e.y"
 { yyval = call(val_peek(2), "add", val_peek(0)); }
 break;
-case 58:
-//#line 330 "e.y"
+case 59:
+//#line 332 "e.y"
 { yyval = call(val_peek(2), "subtract", val_peek(0)); }
 break;
-case 59:
-//#line 338 "e.y"
+case 60:
+//#line 340 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 62:
-//#line 343 "e.y"
+case 63:
+//#line 345 "e.y"
 { yyval = call(val_peek(2), "multiply", val_peek(0)); }
 break;
-case 63:
-//#line 344 "e.y"
+case 64:
+//#line 346 "e.y"
 { yyval = call(val_peek(2), "approxDivide", val_peek(0)); }
 break;
-case 64:
-//#line 345 "e.y"
+case 65:
+//#line 347 "e.y"
 { yyval = call(val_peek(2), "floorDivide", val_peek(0)); }
 break;
-case 65:
-//#line 346 "e.y"
+case 66:
+//#line 348 "e.y"
 { yyval = call(val_peek(2), "remainder", val_peek(0)); }
 break;
-case 66:
-//#line 347 "e.y"
+case 67:
+//#line 349 "e.y"
 { yyval = mod(val_peek(2), val_peek(0)); }
 break;
-case 67:
-//#line 355 "e.y"
+case 68:
+//#line 357 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 70:
-//#line 360 "e.y"
+case 71:
+//#line 362 "e.y"
 { yyval = call(val_peek(2), "pow", val_peek(0)); }
 break;
-case 71:
-//#line 369 "e.y"
+case 72:
+//#line 371 "e.y"
 { yyval = list(val_peek(0)); }
 break;
-case 74:
-//#line 374 "e.y"
+case 75:
+//#line 376 "e.y"
 { yyval = call(val_peek(0), "not", list()); }
 break;
-case 75:
-//#line 375 "e.y"
+case 76:
+//#line 377 "e.y"
 { yyval = call(val_peek(0), "complement", list());}
 break;
-case 76:
-//#line 376 "e.y"
+case 77:
+//#line 378 "e.y"
 { yyval = call(val_peek(0), "negate", list()); }
 break;
-case 77:
-//#line 377 "e.y"
+case 78:
+//#line 379 "e.y"
 { yyval = slotExpr(val_peek(0)); }
 break;
-case 80:
-//#line 389 "e.y"
-{ yyval = call(val_peek(3), "get", val_peek(1)); }
-break;
 case 81:
-//#line 390 "e.y"
-{ yyval = send(val_peek(3), val_peek(1), val_peek(0)); }
+//#line 391 "e.y"
+{ yyval = call(val_peek(3), "get", val_peek(1)); }
 break;
 case 82:
-//#line 391 "e.y"
-{ yyval = send(val_peek(2), "run", val_peek(0)); }
+//#line 392 "e.y"
+{ yyval = send(val_peek(3), val_peek(1), val_peek(0)); }
 break;
 case 83:
 //#line 393 "e.y"
-{ pocket("no-paren-call");
-                                          yyval = send(val_peek(2), val_peek(0), list()); }
+{ yyval = send(val_peek(2), "run", val_peek(0)); }
 break;
 case 84:
 //#line 395 "e.y"
 { pocket("no-paren-call");
-                                          yyval = call(val_peek(1), val_peek(0), list()); }
+                                          yyval = send(val_peek(2), val_peek(0), list()); }
 break;
 case 85:
 //#line 397 "e.y"
-{ pocket("dot-props");
-                                          yyval = property(val_peek(2), val_peek(0), list()); }
+{ pocket("no-paren-call");
+                                          yyval = call(val_peek(1), val_peek(0), list()); }
 break;
 case 86:
 //#line 399 "e.y"
 { pocket("dot-props");
-                                          yyval = property(val_peek(3), val_peek(1), val_peek(0)); }
+                                          yyval = property(val_peek(2), val_peek(0), list()); }
 break;
 case 87:
-//#line 407 "e.y"
-{ yyval = doMeta("run", val_peek(0)); }
+//#line 401 "e.y"
+{ pocket("dot-props");
+                                          yyval = property(val_peek(3), val_peek(1), val_peek(0)); }
 break;
 case 88:
-//#line 408 "e.y"
-{ yyval = doMeta(val_peek(1), val_peek(0)); }
+//#line 409 "e.y"
+{ yyval = doMeta("run", val_peek(0)); }
 break;
 case 89:
-//#line 409 "e.y"
-{ yyval = doMetaSend("run", val_peek(0)); }
+//#line 410 "e.y"
+{ yyval = doMeta(val_peek(1), val_peek(0)); }
 break;
 case 90:
-//#line 410 "e.y"
-{ yyval = doMetaSend(val_peek(1), val_peek(0)); }
+//#line 411 "e.y"
+{ yyval = doMetaSend("run", val_peek(0)); }
 break;
 case 91:
 //#line 412 "e.y"
-{ pocket("no-paren-call");
-                                          yyval = doMeta(val_peek(0), list()); }
+{ yyval = doMetaSend(val_peek(1), val_peek(0)); }
 break;
 case 92:
 //#line 414 "e.y"
 { pocket("no-paren-call");
-                                          yyval = doMetaSend(val_peek(0), list()); }
+                                          yyval = doMeta(val_peek(0), list()); }
 break;
-case 94:
-//#line 428 "e.y"
-{ yyval = call(val_peek(1), "run", val_peek(0)); }
+case 93:
+//#line 416 "e.y"
+{ pocket("no-paren-call");
+                                          yyval = doMetaSend(val_peek(0), list()); }
 break;
 case 95:
-//#line 429 "e.y"
-{ yyval = call(val_peek(2), val_peek(1), val_peek(0)); }
+//#line 430 "e.y"
+{ yyval = call(val_peek(1), "run", val_peek(0)); }
 break;
 case 96:
-//#line 430 "e.y"
-{ reserved("verb="); }
+//#line 431 "e.y"
+{ yyval = call(val_peek(2), val_peek(1), val_peek(0)); }
 break;
 case 97:
-//#line 438 "e.y"
+//#line 439 "e.y"
 { yyval = literal(val_peek(0)); }
 break;
 case 98:
-//#line 439 "e.y"
+//#line 440 "e.y"
 { yyval = literal(val_peek(0)); }
 break;
 case 99:
-//#line 440 "e.y"
+//#line 441 "e.y"
 { yyval = literal(val_peek(0)); }
 break;
 case 100:
-//#line 441 "e.y"
+//#line 442 "e.y"
 { yyval = literal(val_peek(0)); }
 break;
 case 101:
-//#line 442 "e.y"
+//#line 443 "e.y"
 { yyval = literal(val_peek(0)); }
 break;
 case 103:
-//#line 446 "e.y"
+//#line 447 "e.y"
 { yyval = uriExpr(val_peek(0)); }
 break;
 case 104:
-//#line 447 "e.y"
+//#line 448 "e.y"
 { yyval = uriExpr(val_peek(2),val_peek(1)); }
 break;
 case 105:
-//#line 449 "e.y"
+//#line 450 "e.y"
 { yyval = quasiExpr(val_peek(1),val_peek(0)); }
 break;
 case 107:
-//#line 452 "e.y"
+//#line 453 "e.y"
 { yyval = tuple(val_peek(1)); }
 break;
 case 108:
-//#line 453 "e.y"
+//#line 454 "e.y"
 { yyval = map(val_peek(1)); }
 break;
 case 109:
-//#line 455 "e.y"
+//#line 456 "e.y"
 { yyval = hide(val_peek(0)); }
 break;
 case 110:
-//#line 457 "e.y"
+//#line 458 "e.y"
 { yyval = escape(val_peek(1),val_peek(0)); }
 break;
 case 111:
-//#line 459 "e.y"
+//#line 460 "e.y"
 { yyval = whilex(val_peek(1),val_peek(0)); }
 break;
 case 112:
-//#line 461 "e.y"
+//#line 462 "e.y"
 { yyval = forx(val_peek(3),val_peek(1),val_peek(0)); }
 break;
 case 113:
-//#line 463 "e.y"
+//#line 464 "e.y"
 { yyval = switchx(val_peek(1),val_peek(0)); }
 break;
 case 114:
-//#line 465 "e.y"
+//#line 466 "e.y"
 { yyval = tryx(val_peek(2),val_peek(1),val_peek(0)); }
 break;
 case 115:
-//#line 467 "e.y"
+//#line 468 "e.y"
 { yyval = when(val_peek(3),val_peek(2),val_peek(1),val_peek(0)); }
 break;
 case 118:
-//#line 473 "e.y"
+//#line 474 "e.y"
 { yyval = quasiLiteralExpr(val_peek(1)); }
 break;
 case 119:
-//#line 474 "e.y"
+//#line 475 "e.y"
 { yyval = quasiLiteralExpr(val_peek(0)); }
 break;
 case 120:
-//#line 475 "e.y"
+//#line 476 "e.y"
 { yyval = quasiLiteralExpr(); }
 break;
 case 121:
-//#line 476 "e.y"
+//#line 477 "e.y"
 { yyval = quasiPatternExpr(val_peek(1)); }
 break;
 case 122:
-//#line 477 "e.y"
+//#line 478 "e.y"
 { yyval = quasiPatternExpr(val_peek(0)); }
 break;
 case 123:
-//#line 480 "e.y"
+//#line 481 "e.y"
 { reserved("select"); }
 break;
 case 124:
-//#line 481 "e.y"
+//#line 482 "e.y"
 { pocket("typedef");
                                                   yyval = val_peek(0); }
 break;
 case 126:
-//#line 490 "e.y"
+//#line 491 "e.y"
 { yyval = object(val_peek(1), val_peek(0)); }
 break;
 case 127:
-//#line 491 "e.y"
+//#line 492 "e.y"
 { yyval = methObject(val_peek(2),val_peek(1),val_peek(0)); }
 break;
 case 128:
-//#line 492 "e.y"
+//#line 493 "e.y"
 { yyval = thunk(val_peek(0)); }
 break;
 case 129:
-//#line 494 "e.y"
+//#line 495 "e.y"
 { yyval = classExpr(val_peek(1),val_peek(0)); }
 break;
 case 130:
-//#line 496 "e.y"
+//#line 497 "e.y"
 { pocket("anon-lambda");
                                   yyval = methObject(audits(ignore(), list()),
                                                   val_peek(1),
                                                   val_peek(0)); }
 break;
 case 131:
-//#line 500 "e.y"
+//#line 501 "e.y"
 { pocket("anon-lambda");
                                   yyval = thunk(val_peek(0)); }
 break;
 case 132:
-//#line 508 "e.y"
+//#line 509 "e.y"
 { yyval = noun(val_peek(0)); }
 break;
 case 133:
-//#line 517 "e.y"
+//#line 518 "e.y"
 { yyval = val_peek(1); }
 break;
 case 134:
-//#line 526 "e.y"
+//#line 527 "e.y"
 { yyval = ifx(val_peek(1), val_peek(0)); }
 break;
 case 135:
-//#line 527 "e.y"
+//#line 528 "e.y"
 { yyval = ifx(val_peek(3), val_peek(2), val_peek(0)); }
 break;
 case 136:
-//#line 528 "e.y"
+//#line 529 "e.y"
 { yyval = ifx(val_peek(3), val_peek(2), val_peek(0)); }
 break;
 case 137:
-//#line 533 "e.y"
+//#line 534 "e.y"
 { yyval = macro(val_peek(3), val_peek(2), val_peek(1), val_peek(0)); }
 break;
 case 138:
-//#line 535 "e.y"
+//#line 536 "e.y"
 { yyval = macro(val_peek(3), val_peek(2), val_peek(1), val_peek(0)); }
 break;
 case 139:
-//#line 539 "e.y"
+//#line 540 "e.y"
 { yyval = null; }
 break;
 case 142:
-//#line 545 "e.y"
+//#line 546 "e.y"
 { yyval = null; }
 break;
 case 143:
-//#line 547 "e.y"
+//#line 548 "e.y"
 { yyval = macro(val_peek(4), val_peek(3), val_peek(2), val_peek(1)); }
 break;
 case 144:
-//#line 549 "e.y"
+//#line 550 "e.y"
 { yyval = macro(val_peek(3), val_peek(2), val_peek(1), val_peek(0)); }
 break;
 case 145:
-//#line 554 "e.y"
+//#line 555 "e.y"
 { yyval = noun("simple__quasiParser"); }
 break;
 case 146:
-//#line 555 "e.y"
+//#line 556 "e.y"
 { yyval = noun(val_peek(0) +  "__quasiParser"); }
 break;
 case 147:
-//#line 556 "e.y"
+//#line 557 "e.y"
 { yyval = val_peek(1); }
 break;
 case 148:
-//#line 560 "e.y"
+//#line 561 "e.y"
 { yyval = list(val_peek(0)); }
 break;
 case 149:
-//#line 561 "e.y"
+//#line 562 "e.y"
 { yyval = with(val_peek(1), val_peek(0)); }
 break;
 case 150:
-//#line 565 "e.y"
+//#line 566 "e.y"
 { yyval = list(val_peek(1), val_peek(0)); }
 break;
 case 151:
-//#line 566 "e.y"
+//#line 567 "e.y"
 { yyval = with(with(val_peek(2), val_peek(1)), val_peek(0)); }
 break;
 case 152:
-//#line 570 "e.y"
+//#line 571 "e.y"
 { yyval = noun(val_peek(0)); }
 break;
 case 153:
-//#line 571 "e.y"
+//#line 572 "e.y"
 { yyval = val_peek(2); }
 break;
 case 154:
-//#line 575 "e.y"
+//#line 576 "e.y"
 { myLexer.quasiAgain(); }
 break;
 case 157:
-//#line 592 "e.y"
+//#line 593 "e.y"
 { yyval = list(val_peek(0)); }
 break;
 case 158:
-//#line 593 "e.y"
+//#line 594 "e.y"
 { yyval = with(val_peek(3), val_peek(0)); }
 break;
 case 160:
-//#line 603 "e.y"
+//#line 604 "e.y"
 { yyval = list(val_peek(0)); }
 break;
 case 161:
-//#line 604 "e.y"
+//#line 605 "e.y"
 { yyval = with(val_peek(3), val_peek(0)); }
 break;
 case 162:
-//#line 611 "e.y"
+//#line 612 "e.y"
 { yyval = new Assoc(ignore(), val_peek(0)); }
 break;
 case 164:
-//#line 616 "e.y"
+//#line 617 "e.y"
 { yyval = new Assoc(val_peek(2), val_peek(0)); }
 break;
 case 165:
-//#line 617 "e.y"
+//#line 618 "e.y"
 { reserved("var-extract-pattern"); }
 break;
 case 167:
-//#line 622 "e.y"
+//#line 623 "e.y"
 { yyval = suchThat(val_peek(2), val_peek(0)); }
 break;
 case 168:
-//#line 624 "e.y"
+//#line 625 "e.y"
 { reserved("meta pattern"); }
 break;
 case 170:
-//#line 629 "e.y"
+//#line 630 "e.y"
 { yyval = listPattern(val_peek(1)); }
 break;
 case 171:
-//#line 630 "e.y"
+//#line 631 "e.y"
 { yyval = cdrPattern(val_peek(3), val_peek(0)); }
 break;
 case 172:
-//#line 632 "e.y"
+//#line 633 "e.y"
 { reserved("map pattern"); }
 break;
 case 173:
-//#line 633 "e.y"
+//#line 634 "e.y"
 { reserved("map pattern"); }
 break;
 case 175:
-//#line 638 "e.y"
+//#line 639 "e.y"
 { yyval = patternEquals(val_peek(0)); }
 break;
 case 177:
-//#line 643 "e.y"
+//#line 644 "e.y"
 { yyval = quasiPattern(val_peek(1), val_peek(0)); }
 break;
 case 178:
-//#line 647 "e.y"
+//#line 648 "e.y"
 { yyval = list(val_peek(0)); }
 break;
 case 179:
-//#line 648 "e.y"
+//#line 649 "e.y"
 { yyval = with(val_peek(1), val_peek(0)); }
 break;
 case 180:
-//#line 652 "e.y"
+//#line 653 "e.y"
 { yyval = list(val_peek(1), val_peek(0)); }
 break;
 case 181:
-//#line 653 "e.y"
+//#line 654 "e.y"
 { yyval = with(with(val_peek(2), val_peek(1)), val_peek(0)); }
 break;
 case 184:
-//#line 662 "e.y"
+//#line 663 "e.y"
 { yyval = finalPattern(val_peek(0)); }
 break;
 case 185:
-//#line 663 "e.y"
+//#line 664 "e.y"
 { yyval = ignore(); }
 break;
 case 186:
-//#line 664 "e.y"
+//#line 665 "e.y"
 { yyval = val_peek(2); }
 break;
 case 187:
-//#line 677 "e.y"
+//#line 678 "e.y"
 { yyval = finalPattern(val_peek(2), val_peek(0)); }
 break;
 case 188:
-//#line 678 "e.y"
+//#line 679 "e.y"
 { yyval = finalPattern(val_peek(0)); }
 break;
 case 189:
-//#line 679 "e.y"
+//#line 680 "e.y"
 { yyval = slotDefiner(val_peek(0)); }
 break;
 case 190:
-//#line 680 "e.y"
+//#line 681 "e.y"
 { yyval = ignore(); }
 break;
 case 193:
-//#line 684 "e.y"
+//#line 685 "e.y"
 { yyval = quasiLiteralPatt(val_peek(1)); }
 break;
 case 194:
-//#line 685 "e.y"
+//#line 686 "e.y"
 { yyval = quasiPatternPatt(val_peek(1)); }
 break;
 case 195:
-//#line 689 "e.y"
+//#line 690 "e.y"
 { yyval = bindDefiner(val_peek(2), val_peek(0)); }
 break;
 case 196:
-//#line 690 "e.y"
+//#line 691 "e.y"
 { yyval = bindDefiner(val_peek(0)); }
 break;
 case 197:
-//#line 694 "e.y"
+//#line 695 "e.y"
 { yyval = varPattern(val_peek(2), val_peek(0)); }
 break;
 case 198:
-//#line 695 "e.y"
+//#line 696 "e.y"
 { yyval = varPattern(val_peek(0)); }
 break;
 case 199:
-//#line 704 "e.y"
+//#line 705 "e.y"
 { yyval = finalPattern(val_peek(0)); }
 break;
 case 200:
-//#line 705 "e.y"
+//#line 706 "e.y"
 { yyval = ignore(); }
 break;
 case 201:
-//#line 706 "e.y"
+//#line 707 "e.y"
 { yyval = bindDefiner(val_peek(0)); }
 break;
 case 202:
-//#line 707 "e.y"
+//#line 708 "e.y"
 { yyval = varPattern(val_peek(0)); }
 break;
 case 203:
-//#line 708 "e.y"
+//#line 709 "e.y"
 { yyval = quasiLiteralPatt(val_peek(1)); }
 break;
 case 204:
-//#line 709 "e.y"
+//#line 710 "e.y"
 { yyval = quasiPatternPatt(val_peek(1)); }
 break;
 case 206:
-//#line 726 "e.y"
+//#line 727 "e.y"
 { yyval = val_peek(0); }
 break;
 case 207:
-//#line 727 "e.y"
+//#line 728 "e.y"
 { yyval = bindDefiner(val_peek(0)); }
 break;
 case 208:
-//#line 728 "e.y"
+//#line 729 "e.y"
 { yyval = varPattern(val_peek(0)); }
 break;
 case 209:
-//#line 735 "e.y"
+//#line 736 "e.y"
 { yyval = audits(val_peek(0), list()); }
 break;
 case 210:
-//#line 736 "e.y"
+//#line 737 "e.y"
 { pocket("auditors");
                                                   yyval = audits(val_peek(2), val_peek(0)); }
 break;
 case 211:
-//#line 744 "e.y"
+//#line 745 "e.y"
 { yyval = audits(val_peek(0), list()); }
 break;
 case 212:
-//#line 745 "e.y"
+//#line 746 "e.y"
 { pocket("auditors");
                                                   yyval = audits(val_peek(2), val_peek(0)); }
 break;
 case 213:
-//#line 750 "e.y"
+//#line 751 "e.y"
 { yyval = list(val_peek(0)); }
 break;
 case 214:
-//#line 751 "e.y"
+//#line 752 "e.y"
 { yyval = with(val_peek(3), val_peek(0)); }
 break;
 case 215:
-//#line 763 "e.y"
+//#line 764 "e.y"
 { yyval = list(); }
 break;
 case 216:
-//#line 764 "e.y"
+//#line 765 "e.y"
 { yyval = append(list(val_peek(3)),val_peek(1)); }
 break;
 case 219:
-//#line 778 "e.y"
+//#line 779 "e.y"
 { yyval = method(val_peek(1), val_peek(0)); }
 break;
 case 220:
-//#line 780 "e.y"
+//#line 781 "e.y"
 { reserved("fields"); }
 break;
 case 221:
-//#line 781 "e.y"
+//#line 782 "e.y"
 { reserved("on event"); }
 break;
 case 222:
-//#line 782 "e.y"
+//#line 783 "e.y"
 { reserved("sealed meta"); }
 break;
 case 223:
-//#line 783 "e.y"
+//#line 784 "e.y"
 { reserved("sealed meta"); }
 break;
 case 224:
-//#line 791 "e.y"
+//#line 792 "e.y"
 { yyval = methHead("run", val_peek(2), val_peek(0)); }
 break;
 case 225:
-//#line 792 "e.y"
+//#line 793 "e.y"
 { yyval = methHead(val_peek(4), val_peek(2), val_peek(0)); }
 break;
 case 226:
-//#line 794 "e.y"
+//#line 795 "e.y"
 { pocket("no-paren-method");
                                                yyval = methHead(val_peek(1), list(), val_peek(0)); }
 break;
 case 227:
-//#line 803 "e.y"
+//#line 804 "e.y"
 { yyval = methHead("run", val_peek(2), val_peek(0)); }
 break;
 case 228:
-//#line 805 "e.y"
+//#line 806 "e.y"
 { pocket("one-method-object");
                                                yyval = methHead(val_peek(4), val_peek(2), val_peek(0)); }
 break;
 case 229:
-//#line 807 "e.y"
+//#line 808 "e.y"
 { pocket("no-paren-method");
                                                yyval = methHead(val_peek(1), list(), val_peek(0)); }
 break;
 case 230:
-//#line 816 "e.y"
+//#line 817 "e.y"
 { yyval = list(val_peek(4), val_peek(2), val_peek(0)); }
 break;
 case 231:
-//#line 826 "e.y"
+//#line 827 "e.y"
 { yyval = matcher(val_peek(1), val_peek(0)); }
 break;
 case 232:
-//#line 835 "e.y"
+//#line 836 "e.y"
 { yyval = delegatex(val_peek(0)); }
 break;
 case 233:
-//#line 842 "e.y"
+//#line 843 "e.y"
 { yyval = VOID; }
 break;
 case 234:
-//#line 843 "e.y"
+//#line 844 "e.y"
 { yyval = val_peek(0); }
 break;
 case 235:
-//#line 847 "e.y"
+//#line 848 "e.y"
 { yyval = val_peek(1); }
 break;
 case 236:
-//#line 852 "e.y"
+//#line 853 "e.y"
 { yyval = list(val_peek(6), val_peek(4), val_peek(2), val_peek(0)); }
 break;
 case 237:
-//#line 854 "e.y"
+//#line 855 "e.y"
 { pocket("when-clauses");
                                                   yyval = list(val_peek(4), val_peek(2), val_peek(0)); }
 break;
 case 238:
-//#line 859 "e.y"
+//#line 860 "e.y"
 { yyval = list(val_peek(0)); }
 break;
 case 239:
-//#line 860 "e.y"
+//#line 861 "e.y"
 { yyval = with(val_peek(2), val_peek(0)); }
 break;
 case 240:
-//#line 864 "e.y"
+//#line 865 "e.y"
 { list(val_peek(2), val_peek(0)); }
 break;
 case 245:
-//#line 882 "e.y"
+//#line 883 "e.y"
 { yyval = list(); }
 break;
 case 246:
-//#line 886 "e.y"
+//#line 887 "e.y"
 { yyval = list(); }
 break;
 case 247:
-//#line 891 "e.y"
+//#line 892 "e.y"
 { yyval = val_peek(1); }
 break;
 case 248:
-//#line 896 "e.y"
+//#line 897 "e.y"
 { pocket("lambda-args");
                                           yyval = with(val_peek(1), val_peek(0)); }
 break;
 case 251:
-//#line 906 "e.y"
+//#line 907 "e.y"
 { yyval = list(val_peek(0)); }
 break;
 case 252:
-//#line 907 "e.y"
+//#line 908 "e.y"
 { yyval = with(val_peek(2), val_peek(0)); }
 break;
 case 253:
-//#line 912 "e.y"
+//#line 913 "e.y"
 { yyval = list(val_peek(0)); }
 break;
 case 254:
-//#line 913 "e.y"
+//#line 914 "e.y"
 { yyval = with(val_peek(2), val_peek(0)); }
 break;
 case 255:
-//#line 917 "e.y"
+//#line 918 "e.y"
 { yyval = new Assoc(val_peek(2), val_peek(0)); }
 break;
 case 256:
-//#line 918 "e.y"
+//#line 919 "e.y"
 { reserved("export binding"); }
 break;
 case 258:
-//#line 931 "e.y"
+//#line 932 "e.y"
 { yyval = hilbert(val_peek(0)); }
 break;
 case 259:
-//#line 932 "e.y"
+//#line 933 "e.y"
 { reserved("keyword \"" +
                                                    ((Token)val_peek(0)).token() +
                                                    "\""); }
 break;
 case 260:
-//#line 948 "e.y"
+//#line 949 "e.y"
 { yyval = "add"; }
 break;
 case 261:
-//#line 949 "e.y"
+//#line 950 "e.y"
 { yyval = "and"; }
 break;
 case 262:
-//#line 950 "e.y"
+//#line 951 "e.y"
 { yyval = "approxDivide"; }
 break;
 case 263:
-//#line 951 "e.y"
+//#line 952 "e.y"
 { yyval = "floorDivide"; }
 break;
 case 264:
-//#line 952 "e.y"
+//#line 953 "e.y"
 { yyval = "shiftLeft"; }
 break;
 case 265:
-//#line 953 "e.y"
+//#line 954 "e.y"
 { yyval = "remainder"; }
 break;
 case 266:
-//#line 954 "e.y"
+//#line 955 "e.y"
 { yyval = "mod"; }
 break;
 case 267:
-//#line 955 "e.y"
+//#line 956 "e.y"
 { yyval = "multiply"; }
 break;
 case 268:
-//#line 956 "e.y"
+//#line 957 "e.y"
 { yyval = "or"; }
 break;
 case 269:
-//#line 957 "e.y"
+//#line 958 "e.y"
 { yyval = "pow"; }
 break;
 case 270:
-//#line 958 "e.y"
+//#line 959 "e.y"
 { yyval = "subtract"; }
 break;
 case 271:
-//#line 959 "e.y"
+//#line 960 "e.y"
 { yyval = "xor"; }
 break;
 case 272:
-//#line 968 "e.y"
+//#line 969 "e.y"
 { yyval = NULL; }
 break;
 case 273:
-//#line 969 "e.y"
+//#line 970 "e.y"
 { yyval = val_peek(2); }
 break;
 case 274:
-//#line 973 "e.y"
+//#line 974 "e.y"
 { yyval = val_peek(1); }
 break;
 case 275:
-//#line 978 "e.y"
+//#line 979 "e.y"
 { yyval = eScript(val_peek(2), optMatcher(val_peek(1))); }
 break;
 case 276:
-//#line 980 "e.y"
+//#line 981 "e.y"
 { pocket("plumbing");
                                   yyval = eScript(null, val_peek(0)); }
 break;
 case 277:
-//#line 982 "e.y"
+//#line 983 "e.y"
 { pocket("plumbing");
                                   yyval = eScript(null, val_peek(0)); }
 break;
 case 279:
-//#line 992 "e.y"
+//#line 993 "e.y"
 { yyval = with(val_peek(2), val_peek(1)); }
 break;
 case 281:
-//#line 997 "e.y"
+//#line 998 "e.y"
 { yyval = with(val_peek(2), val_peek(1)); }
 break;
 case 283:
-//#line 1002 "e.y"
+//#line 1003 "e.y"
 { yyval = with(val_peek(2), val_peek(1)); }
 break;
 case 286:
-//#line 1019 "e.y"
+//#line 1020 "e.y"
 { yyval = with(val_peek(1), val_peek(0)); }
 break;
 case 287:
-//#line 1023 "e.y"
+//#line 1024 "e.y"
 { yyval = matcher(val_peek(1), val_peek(0)); }
 break;
 case 288:
-//#line 1030 "e.y"
+//#line 1031 "e.y"
 { yyval = null; }
 break;
 case 289:
-//#line 1031 "e.y"
+//#line 1032 "e.y"
 { yyval = val_peek(0); }
 break;
 case 290:
-//#line 1042 "e.y"
+//#line 1043 "e.y"
 { yyval = oType(val_peek(4), val_peek(1)); }
 break;
 case 291:
-//#line 1043 "e.y"
+//#line 1044 "e.y"
 { yyval = oType(val_peek(2), list(val_peek(1))); }
 break;
 case 295:
-//#line 1050 "e.y"
+//#line 1051 "e.y"
 { yyval = with(val_peek(3),val_peek(1)); }
 break;
 case 296:
-//#line 1054 "e.y"
+//#line 1055 "e.y"
 { yyval = list(val_peek(0)); }
 break;
 case 297:
-//#line 1055 "e.y"
+//#line 1056 "e.y"
 { yyval = with(val_peek(3),val_peek(0)); }
 break;
 case 298:
-//#line 1057 "e.y"
+//#line 1058 "e.y"
 { reserved("on event"); }
 break;
 case 299:
-//#line 1058 "e.y"
+//#line 1059 "e.y"
 { reserved("on event"); }
 break;
 case 300:
-//#line 1065 "e.y"
+//#line 1066 "e.y"
 { yyval = mType(val_peek(1),list(),val_peek(0)); }
 break;
 case 301:
-//#line 1066 "e.y"
+//#line 1067 "e.y"
 { yyval = mType(val_peek(4),val_peek(2),val_peek(0)); }
 break;
 case 302:
-//#line 1067 "e.y"
+//#line 1068 "e.y"
 { yyval = mType("run",val_peek(2),val_peek(0)); }
 break;
 case 303:
-//#line 1071 "e.y"
+//#line 1072 "e.y"
 { yyval = val_peek(0); }
 break;
 case 304:
-//#line 1072 "e.y"
+//#line 1073 "e.y"
 { yyval = val_peek(1); }
 break;
 case 305:
-//#line 1076 "e.y"
+//#line 1077 "e.y"
 { yyval = list(val_peek(0)); }
 break;
 case 306:
-//#line 1077 "e.y"
+//#line 1078 "e.y"
 { yyval = with(val_peek(3),val_peek(0)); }
 break;
 case 307:
-//#line 1084 "e.y"
+//#line 1085 "e.y"
 { yyval = pType(val_peek(1),val_peek(0)); }
 break;
 case 308:
-//#line 1085 "e.y"
+//#line 1086 "e.y"
 { yyval = pType(null,val_peek(0)); }
 break;
 case 309:
-//#line 1089 "e.y"
+//#line 1090 "e.y"
 { yyval = null; }
 break;
 case 310:
-//#line 1090 "e.y"
+//#line 1091 "e.y"
 { yyval = val_peek(0); }
 break;
-//#line 6730 "EParser.java"
+//#line 6734 "EParser.java"
 //########## END OF USER-SUPPLIED ACTIONS ##########
     }//switch
     //#### Now let's reduce... ####



1.85      +3 -1      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.84
retrieving revision 1.85
diff -u -r1.84 -r1.85
--- e.y	2001/10/01 08:31:05	1.84
+++ e.y	2001/10/03 04:41:03	1.85
@@ -54,6 +54,7 @@
 %token LiteralTwine
 
 %token Identifier
+%token VerbAss
 %token QuasiOpen
 %token QuasiClose
 %token URI
@@ -232,6 +233,7 @@
  |      cond OpAss    assign            { $$ = assign($1,     $3); }
  |      cond assignop nAssign           { $$ = update($1, $2, $3); }
  |      cond OpAssAsr assign            { $$ = assAsr($1,     $3); }
+ |      cond VerbAss parenArgs          { $$ = update($1, $2, $3); }
 
  |      define pattern OpAss assign     { $$ = define($2, $4); }
  |      binder         OpAss assign     { $$ = define($1, $3); }
@@ -427,7 +429,6 @@
         prim
  |      call             parenArgs      { $$ = call($1, "run", $2); }
  |      postfix verb     parenArgs      { $$ = call($1, $2, $3); }
- |      postfix verb '=' parenArgs      { reserved("verb="); }
  ;
 
 
@@ -1360,6 +1361,7 @@
     TheTokens[LiteralTwine]     = "literal-twine";
 
     TheTokens[Identifier]       = "non-keyword-identifier";
+    TheTokens[VerbAss]          = "verb-assign";
     TheTokens[QuasiOpen]        = "quasi-open";
     TheTokens[QuasiClose]       = "quasi-close";
     TheTokens[URI]              = "uniform-resource-identifier";



1.26      +17 -10    e/src/jsrc/org/erights/e/elib/base/ClassDesc.java

Index: ClassDesc.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/base/ClassDesc.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- ClassDesc.java	2001/10/02 23:38:31	1.25
+++ ClassDesc.java	2001/10/03 04:41:03	1.26
@@ -75,10 +75,6 @@
         { "java.lang.String",
           "org.erights.e.meta.java.lang.StringGuardSugar" },
 
-        { "java.lang.RuntimeException",
-          "org.erights.e.meta.java.lang.RuntimeExceptionGuardSugar" },
-        { "java.lang.Exception",
-          "org.erights.e.meta.java.lang.ThrowableGuardSugar" },
         { "java.lang.Throwable",
           "org.erights.e.meta.java.lang.ThrowableGuardSugar" },
 
@@ -352,23 +348,34 @@
     /**
      * Shortens, handles null, handles a trivial match ({@link
      * Class#isInstance(Object)}), and otherwise delegates to {@link
-     * #subCoerce(Object, OneArgFunc)}
+     * #subCoerce(Object, OneArgFunc)}.
+     * <p>
+     * But does check the output, so it can give a meaningful error if it
+     * doesn't match.  This allows subCoerce implementations to avoid
+     * checking for those errors that may as well be caught here.
      */
     public Object coerce(Object specimen, OneArgFunc optEjector) {
         //shorten first
         specimen = Ref.resolution(specimen);
         if (null == specimen) {
             throw Thrower.toEject(
-                optEjector,
-                new NullPointerException("must be a " +
-                                         getName() +
-                                         " rather than null"));
+              optEjector,
+              new NullPointerException("must be a " +
+                                       getName() +
+                                       " rather than null"));
         }
         if (myClass.isInstance(specimen)) {
             //try for a cheap success
             return specimen;
+        }
+        specimen = subCoerce(specimen, optEjector);
+        if (myClass.isInstance(specimen)) {
+            return specimen;
         }
-        return subCoerce(specimen, optEjector);
+        throw Thrower.toEject(
+          optEjector,
+          "but " + specimen + " isn't a " + getName()
+        );
     }
 
     /**



1.8       +9 -6      e/src/jsrc/org/erights/e/elib/ref/DeviceRef.java

Index: DeviceRef.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elib/ref/DeviceRef.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- DeviceRef.java	2001/10/02 23:38:32	1.7
+++ DeviceRef.java	2001/10/03 04:41:03	1.8
@@ -25,21 +25,24 @@
 
 /**
  * A TCB-internal, thread-safe, vat-crossing EVENTUAL reference to a target
- * object in some vat within this JVM.  A DeviceRef may be invoked from any
- * vat, so it may not grab the vatLock of its target's vat.  (This is
- * possible now that a vat's queue has a separate lock -- thanks Bill).
- *
+ * object in some vat within this JVM.
+ * <p>
+ * A DeviceRef may be invoked from any vat, so it may not grab the vatLock of
+ * its target's vat.  (This is possible now that a vat's queue has a separate
+ * lock -- thanks Bill.)  (More recently, the queue's lock is the only lock.
+ * The vatLock has disapeared -- thanks Dean.)
+ * <p>
  * The arguments passed in must be objects that may validly be used from
  * multiple vats at once, such as transitively pass-by-copy objects, or
  * further DeviceRefs.  This constraint is not enforced, so only trusted code
  * may hold DeviceRefs.  Messages sent over DeviceRefs return a DeviceRef for
  * designating a return result in the target's vat.
- *
+ * <p>
  * Even if the target is or becomes BROKEN or PassByConstruction, DeviceRef
  * will not shorten.  It will continue delivering messages to the target in
  * its vat.  For more complex behavior (such as shortening), build other Refs
  * using DeviceRef as a component.
- *
+ * <p>
  * XXX Should the target vat be forcibly shut down, the DeviceRefs into it
  * should become BROKEN.  This behavior is not yet supported.
  *



1.2       +15 -6     e/src/jsrc/org/erights/e/meta/java/lang/ThrowableGuardSugar.java

Index: ThrowableGuardSugar.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/meta/java/lang/ThrowableGuardSugar.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ThrowableGuardSugar.java	2001/10/01 08:31:05	1.1
+++ ThrowableGuardSugar.java	2001/10/03 04:41:04	1.2
@@ -23,26 +23,32 @@
 import org.erights.e.elib.util.OneArgFunc;
 import org.erights.e.elib.util.TwineException;
 import org.erights.e.elib.tables.Twine;
+import org.erights.e.develop.exception.NestedException;
 
 /**
- * Strings and Twine coerce to Exception and Throwable
+ * Coerces Strings, Twine, and Throwables to kinds of Throwbles.
+ * <p>
+ * Strings and Twine coerce to RuntimeException or Twine, and thereby also to
+ * Exception and Throwable.  Throwables coerce to RuntimeException.
  *
- * @see RuntimeExceptionGuardSugar
  * @author <a href="mailto:markm@erights.org">Mark S. Miller</a>
  */
 public class ThrowableGuardSugar extends ClassDesc {
 
     /**
-     * @param clazz must be Exception, or Throwable
+     * @param clazz must be a type of Throwable
      */
     public ThrowableGuardSugar(Class clazz) {
         super(clazz);
-        require(Exception.class == clazz || Throwable.class == clazz,
-                "internal: " + clazz + " must be Exception, or Throwable");
+        require(Throwable.class.isAssignableFrom(clazz),
+                "internal: " + clazz + " must be a type of Throwable");
     }
 
     /**
-     *
+     * This method can (and typically will) return a RuntimeException,
+     * independent of myClass, so, if myClass isn't RuntimeException,
+     * Exception, or Throwable, the result will often not represent a
+     * successful coercion.  We let 'coerce' sort this out.
      */
     public Object subCoerce(Object specimen, OneArgFunc optEjector) {
         if (specimen instanceof String) {
@@ -50,6 +56,9 @@
         }
         if (specimen instanceof Twine) {
             return TwineException.make((Twine)specimen);
+        }
+        if (specimen instanceof Throwable) {
+            return new NestedException("", (Throwable)specimen);
         }
         return super.subCoerce(specimen, optEjector);
     }