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