[e-cvs] cvs commit: e/src/jsrc/org/quasiliteral/term TermSchema.java TermLexer.java TermParser.java term.y
markm@eros.cs.jhu.edu
markm@eros.cs.jhu.edu
Sun, 2 Dec 2001 13:42:03 -0500
markm 01/12/02 13:42:02
Modified: src/jsrc Makefile
src/jsrc/org/erights/e/elang/interp InteractiveInterp.java
Interp.java
src/jsrc/org/erights/e/elang/syntax EBuilder.java
ELexer.java EParser.java PrettyFeeder.java
QuasiFeeder.java e.y
src/jsrc/org/erights/e/ui/elmer EInterpAdapter.java
src/jsrc/org/quasiliteral/astro AstroSchema.java
BaseSchema.java
src/jsrc/org/quasiliteral/term TermLexer.java
TermParser.java term.y
Added: src/jsrc/org/quasiliteral/syntax BaseLexer.java
FileFeeder.java Indenter.java LineFeeder.java
NeedMoreException.java SyntaxException.java
TwineFeeder.java
src/jsrc/org/quasiliteral/term TermSchema.java
Removed: src/jsrc/org/erights/e/elang/syntax FileFeeder.java
Indenter.java LineFeeder.java
NeedMoreException.java SyntaxException.java
TwineFeeder.java
Log:
Just snapshotting an intermediate, non-working state. Towards reconstruction of the TermParser.
Revision Changes Path
1.61 +2 -1 e/src/jsrc/Makefile
Index: Makefile
===================================================================
RCS file: /cvs/e/src/jsrc/Makefile,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- Makefile 2001/12/01 10:38:41 1.60
+++ Makefile 2001/12/02 18:42:01 1.61
@@ -50,7 +50,8 @@
# optional: remake the parsers from yacc, or just use the generated
# ones, which are included.
elang_parser:
- find org/quasiliteral/astro -name '*.java' > files.tmp
+ find org/quasiliteral/astro -name '*.java' > files.tmp
+ find org/quasiliteral/syntax -name '*.java' >> files.tmp
$(JCOMPILE) @files.tmp
# (cd $(TOP)/src/jsrc/org/quasiliteral/term; $(MAKE) all)
(cd $(ER)/elang/syntax; $(MAKE) all)
1.16 +3 -3 e/src/jsrc/org/erights/e/elang/interp/InteractiveInterp.java
Index: InteractiveInterp.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/interp/InteractiveInterp.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- InteractiveInterp.java 2001/12/02 06:01:43 1.15
+++ InteractiveInterp.java 2001/12/02 18:42:01 1.16
@@ -27,9 +27,9 @@
import org.erights.e.elang.scope.Scope;
import org.erights.e.elang.syntax.ELexer;
import org.erights.e.elang.syntax.EParser;
-import org.erights.e.elang.syntax.FileFeeder;
-import org.erights.e.elang.syntax.LineFeeder;
-import org.erights.e.elang.syntax.NeedMoreException;
+import org.quasiliteral.syntax.FileFeeder;
+import org.quasiliteral.syntax.LineFeeder;
+import org.quasiliteral.syntax.NeedMoreException;
import org.erights.e.elib.eio.TextWriter;
import org.erights.e.elib.prim.E;
import org.erights.e.elib.prim.FERunner;
1.79 +2 -2 e/src/jsrc/org/erights/e/elang/interp/Interp.java
Index: Interp.java
===================================================================
RCS file: /cvs/e/src/jsrc/org/erights/e/elang/interp/Interp.java,v
retrieving revision 1.78
retrieving revision 1.79
diff -u -r1.78 -r1.79
--- Interp.java 2001/12/02 05:32:05 1.78
+++ Interp.java 2001/12/02 18:42:01 1.79
@@ -28,8 +28,8 @@
import org.erights.e.elang.scope.Scope;
import org.erights.e.elang.syntax.ELexer;
import org.erights.e.elang.syntax.EParser;
-import org.erights.e.elang.syntax.FileFeeder;
-import org.erights.e.elang.syntax.LineFeeder;
+import org.quasiliteral.syntax.FileFeeder;
+import org.quasiliteral.syntax.LineFeeder;
import org.erights.e.elib.eio.TextWriter;
import org.erights.e.elib.prim.BERunner;
import org.erights.e.elib.prim.E;
1.88 +1 -0 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.87
retrieving revision 1.88
diff -u -r1.87 -r1.88
--- EBuilder.java 2001/12/02 06:01:44 1.87
+++ EBuilder.java 2001/12/02 18:42:01 1.88
@@ -64,6 +64,7 @@
import org.erights.e.elib.tables.FlexMap;
import org.erights.e.elib.tables.Twine;
import org.quasiliteral.astro.AstroToken;
+import org.quasiliteral.syntax.SyntaxException;
/**
* Build E parse-trees. As a notational hack, EParser inherits from
1.69 +36 -679 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.68
retrieving revision 1.69
diff -u -r1.68 -r1.69
--- ELexer.java 2001/12/02 06:01:44 1.68
+++ ELexer.java 2001/12/02 18:42:01 1.69
@@ -25,12 +25,16 @@
import org.erights.e.elib.tables.Twine;
import org.quasiliteral.astro.AstroSchema;
import org.quasiliteral.astro.AstroToken;
-import org.quasiliteral.astro.BaseSchema;
+import org.quasiliteral.astro.AstroTag;
+import org.quasiliteral.syntax.BaseLexer;
+import org.quasiliteral.syntax.FileFeeder;
+import org.quasiliteral.syntax.LineFeeder;
+import org.quasiliteral.syntax.SyntaxException;
+import org.quasiliteral.syntax.TwineFeeder;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
-import java.math.BigInteger;
/**
* Breaks textually input into a stream of tokens according to the E
@@ -38,92 +42,21 @@
*
* @author <a href="mailto:markm@erights.org">Mark S. Miller</a>
*/
-public class ELexer {
+public class ELexer extends BaseLexer {
/**
*
*/
- static public final int EOFCHAR = -1;
-
- /**
- *
- */
static private final String QUASI_ENDER = "$@`";
/**
*
*/
- static public final AstroSchema DEFAULT_SCHEMA =
- new BaseSchema(EParser.getTokenNames());
-
- /** contains all lines after the current line */
- private LineFeeder myInput;
-
- /** the current line, or null at end-of-file */
- public Twine myLTwine = null;
-
- /** the string part, but as an array for speed */
- public char[] myLData = null;
-
- /** position in current line of candidate character */
- private int myPos;
-
- /** the candidate character, or EOFCHAR for end-of-file. */
- private int myChar;
-
- /**
- * Where on the current line does the current token start? If the token
- * starts before the current line, or if there is no current token, this
- * is -1.
- */
- private int myOptStartPos = -1;
-
- /**
- * Accumulates all text of the current token from lines before the
- * current line, or null if no current token or if the current
- * token starts on the current line. The EOL token itself is not
- * considered to be a line spanning token.
- */
- private Twine myOptStartText = null;
-
- /**
- * Is there a nextChar() that's been delayed?
- */
- private boolean myDelayedNextChar = false;
-
- /**
- *
- */
- private boolean myPartialFlag;
-
- /**
- * Should tabs be rejected as valid whitespace?
- */
- private boolean myNoTabsFlag;
-
- /**
- * Keeps track of indentation level
- */
- private Indenter myIndenter;
-
- /**
- * Should the next line get extra indentation as a continuation line?
- */
- private boolean myContinueFlag;
-
- /**
- *
- */
- private AstroSchema mySchema;
-
- /**
- *
- */
public ELexer(LineFeeder input,
boolean partialFlag,
boolean noTabsFlag)
throws IOException {
- this(input, partialFlag, noTabsFlag, DEFAULT_SCHEMA);
+ this(input, partialFlag, noTabsFlag, EParser.DEFAULT_SCHEMA);
}
/**
@@ -134,21 +67,7 @@
boolean noTabsFlag,
AstroSchema schema)
throws IOException {
-
- myInput = input;
- myPos = -1;
- myPartialFlag = partialFlag;
- myLTwine = myInput.optNextLine(false, 0, 'x', 0);
- if (null == myLTwine) {
- myLData = null;
- } else {
- myLData = myLTwine.bare().toCharArray();
- }
- nextChar();
- myNoTabsFlag = noTabsFlag;
- myIndenter = new Indenter();
- myContinueFlag = false;
- mySchema = schema;
+ super(input, partialFlag, noTabsFlag, schema);
}
/**
@@ -170,273 +89,16 @@
}
/**
- * Does not affect the partial flag
- */
- public void setSource(Twine newSource) {
- TwineFeeder feeder = new TwineFeeder(newSource);
-
- myInput = feeder;
- myPos = -1;
- // myPartialFlag = ??;
- myLTwine = feeder.optNextLine(false, 0, 'x', 0);
- if (null == myLTwine) {
- myLData = null;
- } else {
- myLData = myLTwine.bare().toCharArray();
- }
- myOptStartPos = -1;
- myOptStartText = null;
- myDelayedNextChar = true; //rather than doing nextChar() ourselves
- myIndenter = new Indenter();
- myContinueFlag = false;
- }
-
- /**
- * Skip to the end of this line, so that the next character read will be
- * from the next line, forget any token we may have been in the midst
- * of, and reset our indentation tracker.
- */
- private void reset() {
- if (null != myLTwine) {
- myPos = myLData.length;
- }
- myOptStartPos = -1;
- myOptStartText = null;
- myDelayedNextChar = true;
- myIndenter = new Indenter();
- myContinueFlag = false;
- }
-
- /**
- *
- */
- private void nextLine() throws IOException {
- if (myLTwine == null) {
- myChar = EOFCHAR;
- return;
- }
- if (-1 == myOptStartPos) {
- if (null == myOptStartText) {
- //no current token, do nothing
- } else {
- //current token already started
- myOptStartText = (Twine)myOptStartText.add(myLTwine);
- }
- } else {
- //current token started on this line at myOptStartPos
- myOptStartText = (Twine)myLTwine.run(myOptStartPos,
- myLTwine.size());
- myOptStartPos = -1;
- }
- myPos = -1;
-
- //This is irritatingly redundant with needMore(..).
- //XXX Need to refactor, but how?
- char closer = myIndenter.getCloser();
- int indent = myIndenter.getIndent();
- if (myContinueFlag) {
- indent += 2;
- }
- myLTwine =
- myInput.optNextLine(('"' == closer || '`' == closer),
- indent,
- closer,
- myIndenter.getCloseIndent());
-
- if (null == myLTwine) {
- //don't clear myContinueFlag on end-of-file
- myLData = null;
- } else {
- myContinueFlag = false;
- myLData = myLTwine.bare().toCharArray();
- }
- myChar = '\n';
- }
-
- /**
- *
- */
- private void nextChar() throws IOException {
- while (true) {
- if (null == myLTwine) {
- myChar = EOFCHAR;
- return;
- }
- myPos++;
- int len = myLData.length;
- if (myPos < len) {
- myChar = myLData[myPos];
- return;
- } else {
- nextLine();
- }
- }
- }
-
- /**
- *
- */
- public AstroToken nextToken() throws IOException, SyntaxException {
- AstroToken result;
- try {
- result = getNextToken();
- } finally {
- myOptStartPos = -1;
- myOptStartText = null;
- }
- if (EParser.isContinuer(result.getType())) {
- return continuer(result);
- } else {
- return result;
- }
- }
-
- /**
- * Separated out for use by '>'
- */
- private AstroToken continuer(AstroToken result) throws IOException {
- if (isWhite(myPos, myLData.length)) {
- myContinueFlag = true;
- skipLine();
- }
- return result;
- }
-
- /**
- *
- */
- /*package*/
- void syntaxError(String msg) throws SyntaxException {
- int start = myOptStartPos;
- if (-1 == start) {
- start = myPos - 1;
- }
- start = Math.max(Math.min(start, myPos - 1), 0);
- int bound = Math.max(myPos, start + 1);
- SyntaxException sex = new SyntaxException(msg,
- myLTwine,
- start,
- bound);
- reset();
- throw sex;
- }
-
- /**
- * nest defaults to -1, meaning "unknown"
- */
- /*package*/
- void needMore(String msg)
- throws NeedMoreException, SyntaxException {
- if (myPartialFlag) {
-
- //This is irritatingly redundant with nextLine().
- //XXX Need to refactor, but how?
- char closer = myIndenter.getCloser();
- int indent = myIndenter.getIndent();
- if (myContinueFlag) {
- indent += 2;
- myContinueFlag = false;
- }
- NeedMoreException nme =
- new NeedMoreException(msg,
- ('"' == closer || '`' == closer),
- indent,
- closer,
- myIndenter.getCloseIndent());
- reset();
- throw nme;
- } else {
- syntaxError(msg);
- }
- }
-
- /**
- *
- */
- private boolean eatDigit(int radix) throws IOException {
- if (Character.digit((char)myChar, radix) != -1 || myChar == '_') {
- nextChar();
- return true;
- } else {
- return false;
- }
- }
-
- /**
- *
- */
- private void skipWhiteSpace() throws IOException {
- while (true) {
- if (myChar == EOFCHAR) {
- return;
- }
- if (Character.isWhitespace((char)myChar)) {
- if (myChar == '\n') {
- return;
- }
- if (myChar == '\t') {
- if (myNoTabsFlag) {
- syntaxError
- ("The optional e.enable.notabs feature" +
- " in eprops.txt is currently on,\n" +
- "so tabs are not considered valid whitespace");
- }
- //else, we should warn, but XXX we don't yet have a
- //warning mechanism.
- }
- nextChar();
- } else {
- if ((myChar == '?' || myChar == '>') && isWhite(0, myPos)) {
- //Is the first non-whitespace character on this line a
- //'?' or '>'?
- //If yes, so treat it as an updoc line
- skipLine();
- } else {
- //If not, treat it normally.
- return;
- }
- }
- }
- }
-
- /**
- * Are all the characters on the current line from start inclusive to
- * bound exclusive whitespace characters?
- */
- private boolean isWhite(int start, int bound) {
- for (int i = start; i < bound; i++) {
- if (!Character.isWhitespace(myLData[i])) {
- return false;
- }
- }
- return true;
- }
-
- /**
*
*/
- private AstroToken leafTag(int typeCode, Twine source) {
- return (AstroToken)mySchema.leafTag(typeCode, source);
+ protected boolean isContinuer(int tokenType) {
+ return EParser.isContinuer(tokenType);
}
/**
*
*/
- private AstroToken leafData(Object data, Twine source) {
- return (AstroToken)mySchema.leafData(data, source);
- }
-
- /**
- *
- */
- private AstroToken composite(int typeCode, Object data, Twine source) {
- return (AstroToken)mySchema.composite(typeCode, data, source);
- }
-
- /**
- *
- */
- private AstroToken getNextToken() throws IOException, SyntaxException {
+ protected AstroToken getNextToken() throws IOException, SyntaxException {
if (myDelayedNextChar) {
nextChar();
myDelayedNextChar = false;
@@ -511,7 +173,7 @@
isIdentifierPart((char)myChar));
Twine name = endToken();
String key = name.bare().substring(1);
- int tt = EParser.optKeywordType(key);
+ int tt = optKeywordType(key);
if (tt != -1) {
syntaxError(key + " is a keyword");
}
@@ -545,7 +207,7 @@
isIdentifierPart((char)myChar));
Twine name = endToken();
String key = name.bare().substring(1);
- int tt = EParser.optKeywordType(key);
+ int tt = optKeywordType(key);
if (tt != -1) {
syntaxError(key + " is a keyword");
}
@@ -728,8 +390,8 @@
syntaxError("\\u... not yet implemented");
return null; //keep compiler happy
}
- //an escaped newline is insensitive to trailing whitespace,
- //since that's invisible anyway.
+ //an escaped newline is insensitive to trailing
+ //whitespace, since that's invisible anyway.
skipWhiteSpace();
if (myChar == '\n') {
myContinueFlag = true;
@@ -789,7 +451,8 @@
nextChar();
return leafTag(EParser.MatchBind, endToken());
}
- syntaxError("use ':=' for assignment, or '==' for equality");
+ syntaxError
+ ("use ':=' for assignment, or '==' for equality");
return null; //keep compiler happy
}
case '&':
@@ -830,8 +493,8 @@
case '`':
{
//eat the backquote here so quasiPart can also
- //be called when we're continuing after a hole, in which case
- //there is no leading backquote.
+ //be called when we're continuing after a hole, in which
+ //case there is no leading backquote.
nextChar();
Twine openner = (Twine)myLTwine.run(myOptStartPos, myPos);
myIndenter.push(openner, '`', 0);
@@ -849,7 +512,6 @@
case '9':
{
return numberLiteral();
-
}
case '_':
{
@@ -866,14 +528,14 @@
return leafTag(EParser.OpFlrDiv, endToken());
}
return leafTag(EParser._, endToken());
-
}
default:
{
if (isIdentifierStart((char)myChar)) {
return identifier();
} else {
- syntaxError("unrecognized character: '" + (char)myChar +
+ syntaxError("unrecognized character: '" +
+ (char)myChar +
"' code: " + (int)myChar);
return null; //keep compiler happy
}
@@ -881,118 +543,26 @@
}
}
- /**
- *
- */
- private AstroToken openBracket(char closer) throws IOException {
- int tokenType = myChar;
- nextChar();
- Twine openner = endToken();
- return openBracket(tokenType, openner, closer);
- }
-
/**
- *
- */
- private AstroToken openBracket(int tokenType, Twine openner, char closer)
- throws IOException {
- if (isWhite(myPos, myLData.length)) {
- myIndenter.nest(openner, closer);
+ * If 'name' is a keyword, return it's token type code, else -1.
+ * <p>
+ * Note that E keywords are case insensitive, so 'name' is first
+ * toLowerCase()d.
+ */
+ private int optKeywordType(String name) {
+ name = name.toLowerCase();
+ AstroTag optTag = mySchema.getOptTagForName(name);
+ if (null == optTag) {
+ return -1;
} else {
- //Indent the next line to right after the open.
- myIndenter.push(openner, closer, myPos);
+ return optTag.getOptTypeCode();
}
- return leafTag(tokenType, openner);
- }
-
- /**
- *
- */
- private AstroToken closeBracket() throws IOException {
- char closerChar = (char)myChar;
- nextChar();
- Twine closer = endToken();
- //on mismatched close, throws SyntaxError at openner
- //on unmatched close, throws Syntax error at closer
- myIndenter.pop(closerChar, closer);
- return leafTag(closerChar, closer);
}
/**
- *
- */
- private char charConstant() throws IOException, SyntaxException {
- if (myChar == '\\') {
- nextChar();
- switch (myChar) {
- case 'b':
- return '\b';
- case 't':
- return '\t';
- case 'n':
- return '\n';
- case 'f':
- return '\f';
- case 'r':
- return '\r';
- case '"':
- return '"';
- case '\'':
- return '\'';
- case '\\':
- return '\\';
- case '\n':
- {
- //XXX need to move into stringLiteral only
- //XXX bug: must be accepted at end of string
- nextChar();
- return charConstant();
- }
- case EOFCHAR:
- {
- syntaxError("End of file in middle of literal");
- }
- case 'u':
- {
- syntaxError
- ("XXX escaped uchar codes not yet implemented");
- }
- default:
- {
- if (Character.isDigit((char)myChar)) {
- syntaxError
- ("XXX escaped char codes not yet implemented");
- } else {
- syntaxError("Unrecognized escaped character");
- }
- }
- }
- } else if (myChar == EOFCHAR) {
- syntaxError("End of file in middle of literal");
- } else {
- return (char)myChar;
- }
- return 'x'; //keep compiler happy
- }
-
- /**
- *
- */
- private AstroToken charLiteral() throws IOException, SyntaxException {
- nextChar();
- char value = charConstant();
- nextChar();
- if (myChar != '\'') {
- syntaxError("char constant must end in \"'\"");
- }
- nextChar();
- return leafData(new Character(value), endToken());
- }
-
- /**
* Called with myChar as the first character of the identifier.
*/
- private AstroToken identifier() throws IOException, SyntaxException {
+ protected AstroToken identifier() throws IOException, SyntaxException {
do {
nextChar();
} while (myChar != EOFCHAR && isIdentifierPart((char)myChar));
@@ -1005,7 +575,7 @@
nextChar();
Twine source = endToken();
String name = source.bare().substring(0, source.size() - 1);
- int tt = EParser.optKeywordType(name);
+ int tt = optKeywordType(name);
if (tt != -1) {
syntaxError(name + " is a keyword");
}
@@ -1013,7 +583,7 @@
}
}
Twine source = endToken();
- int ttype = EParser.optKeywordType(source.bare());
+ int ttype = optKeywordType(source.bare());
if (-1 == ttype) {
return composite(EParser.ID, source.bare(), source);
} else {
@@ -1022,143 +592,7 @@
}
}
- /** pretty self explanatory */
- public boolean isEndOfFile() {
- return null == myLTwine;
- }
-
- /**
- * The first character of an E identifier may be anything accepted
- * as the first character of a Java identifier except '$'. I.e.,
- * a letter or '_'.
- *
- * @see java.lang.Character#isJavaIdentifierStart
- */
- static public boolean isIdentifierStart(char ch) {
- return Character.isJavaIdentifierStart(ch) && ch != '$';
- }
-
- /**
- * A non-first character of an E identifier may be anything
- * accepted as a non-first character of a Java identifier except
- * '$'. The ascii subset consists of letters, digits, and '_'.
- * See Character.isJavaIdentifierPart() for the full spec.
- *
- * @see java.lang.Character#isJavaIdentifierPart
- */
- static public boolean isIdentifierPart(char ch) {
- return Character.isJavaIdentifierPart(ch) && ch != '$';
- }
-
-// /**
-// * A legal E identifier is a non-keyword string whose first character
-// * isIdentifierStart, the rest of whose characters are
-// * isIdentifierPart.
-// */
-// static public boolean isIdentifier(String str) {
-// int len = str.length();
-// if (len == 0) {
-// return false;
-// } else if (! isIdentifierStart(str.charAt(0))) {
-// return false;
-// } else {
-// for (int i = 1; i < len; i++) {
-// if (! isIdentifierPart(str.charAt(i))) {
-// return false;
-// }
-// }
-// //if it's not a keyword, it's an identifier
-// return -1 == EParser.tokenType(str.toLowerCase());
-// }
-// }
-
- /**
- *
- */
- private AstroToken numberLiteral()
- throws IOException, SyntaxException {
- // Now handles floating point numbers as well as integers
- boolean floating = false;
- int radix = 10;
- if (myChar == '0') {
- radix = 8;
- nextChar();
- if (myChar == 'x' || myChar == 'X') {
- radix = 16;
- nextChar();
- }
- }
- if (radix == 16) {
- while (eatDigit(16)) {
- }
- } else {
- //even if radix == 8, we may instead have a floating point literal
- while (eatDigit(10)) {
- }
- // If we have a decimal point go for the fractional part
- if (myChar == '.' && !peekChar('.')) {
- nextChar();
- floating = true;
- while (eatDigit(10)) {
- }
- }
-
- if ((myChar == 'E') || (myChar == 'e')) {
- nextChar();
- floating = true;
- if (myChar == '-') {
- nextChar();
- }
- while (eatDigit(10)) {
- }
- }
- }
- Twine tok = endToken();
- String str = tok.replaceAll("_", "").bare();
- if (floating) {
- return leafData(Double.valueOf(str), tok);
- } else {
- if (radix == 16) {
- //remove the leading "0x" to make BigInteger happy
- str = str.substring(2);
- }
- return leafData(new BigInteger(str, radix), tok);
- }
- }
-
- /**
- * XXX Get rid of peekChar/0 or make it work
- */
- private char peekChar() {
- if (myChar == EOFCHAR || myChar == '\n') {
- throw new Error("internal: can't peek here");
- }
- int last = myLData.length - 1;
-
- if (myPos < last) {
- return myLData[myPos + 1];
- } else {
- throw new Error("internal: (XXX bug) peek past end");
- }
- }
-
/**
- *
- */
- private boolean peekChar(char c) {
- if (myChar == EOFCHAR || myChar == '\n') {
- throw new Error("internal: can't peek here");
- }
- int last = myLData.length - 1;
-
- if (myPos < last) {
- return c == myLData[myPos + 1];
- } else {
- return false;
- }
- }
-
- /**
* XXX In order to enable optValue to be recovered from ttype and
* source, we need four ttypes rather than the current two: QuasiOpen
* and QuasiClose.
@@ -1223,83 +657,6 @@
);
}
}
- }
-
- /**
- * Skip to the rest of this line.
- */
- private void skipLine() throws IOException {
- if (null != myLTwine) {
- myPos = myLData.length - 1;
- myChar = myLData[myPos];
- }
- myDelayedNextChar = true;
- }
-
- /**
- *
- */
- private void startToken() {
- if (-1 != myOptStartPos || null != myOptStartText) {
- throw new Error("internal: token already started");
- }
- myOptStartPos = myPos;
- }
-
- /**
- * Cancels a started token
- */
- private void stopToken() {
- myOptStartPos = -1;
- myOptStartText = null;
- }
-
- /**
- *
- */
- private Twine endToken() {
- Twine result;
- int pos = myPos;
- if (myDelayedNextChar) {
- pos++;
- }
- if (-1 == myOptStartPos) {
- if (null == myOptStartText) {
- throw new Error("internal: no current token");
- } else {
- //started on previous line
- result = myOptStartText;
- if (null != myLTwine) {
- result = (Twine)result.add(myLTwine.run(0, pos));
- }
- }
- } else {
- //starts on this line
- result = (Twine)myLTwine.run(myOptStartPos, pos);
- }
- stopToken();
- return result;
- }
-
- /**
- *
- */
- private AstroToken stringLiteral() throws IOException, SyntaxException {
- nextChar();
- Twine openner = (Twine)myLTwine.run(myOptStartPos, myPos);
- myIndenter.push(openner, '"', 0);
- StringBuffer value = new StringBuffer();
- while (myChar != '"') {
- if (myChar == EOFCHAR) {
- needMore("File ends inside string literal");
- }
- value.append(charConstant());
- nextChar();
- }
- nextChar();
- Twine closer = endToken();
- myIndenter.pop('"', closer);
- return leafData(value.toString(), closer);
}
/**
1.106 +2714 -3418e/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.105
retrieving revision 1.106
diff -u -r1.105 -r1.106
--- EParser.java 2001/12/02 06:01:44 1.105
+++ EParser.java 2001/12/02 18:42:01 1.106
@@ -23,3580 +23,2876 @@
import org.erights.e.elib.tables.IdentityCacheTable;
import org.erights.e.elib.tables.IntTable;
import org.erights.e.elib.tables.Twine;
+import org.quasiliteral.astro.AstroSchema;
import org.quasiliteral.astro.AstroToken;
+import org.quasiliteral.astro.BaseSchema;
+import org.quasiliteral.syntax.SyntaxException;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
+//#line 33 "EParser.java"
-//#line 30 "EParser.java"
+
//#####################################################################
// class: EParser
// does : encapsulates yacc() parser functionality in a Java
// class for quick code development
//#####################################################################
-public class EParser extends EBuilder {
-
- boolean yydebug; //do I want debug output?
-
- int yynerrs; //number of errors so far
+public class EParser extends EBuilder
+{
- int yyerrflag; //was there an error?
+boolean yydebug; //do I want debug output?
+int yynerrs; //number of errors so far
+int yyerrflag; //was there an error?
+int yychar; //the current working character
- int yychar; //the current working character
-
- //########## MESSAGES ##########
+//########## MESSAGES ##########
//###############################################################
// method: debug
//###############################################################
- void debug(String msg) {
- if (yydebug)
- System.out.println(msg);
- }
-
- //########## STATE STACK ##########
- final static int YYSTACKSIZE = 500; //maximum stack size
-
- int statestk[],stateptr; //state stack
+void debug(String msg)
+{
+ if (yydebug)
+ System.out.println(msg);
+}
- //###############################################################
+//########## STATE STACK ##########
+final static int YYSTACKSIZE = 500; //maximum stack size
+int statestk[],stateptr; //state stack
+//###############################################################
// methods: state stack push,pop,drop,peek
//###############################################################
- void state_push(int state) {
- if (stateptr >= YYSTACKSIZE) //overflowed?
- return;
- statestk[++stateptr] = state;
- }
-
- int state_pop() {
- if (stateptr < 0) //underflowed?
- return -1;
- return statestk[stateptr--];
- }
-
- void state_drop(int cnt) {
- int ptr;
- ptr = stateptr - cnt;
- if (ptr < 0)
- return;
- stateptr = ptr;
- }
-
- int state_peek(int relative) {
- int ptr;
- ptr = stateptr - relative;
- if (ptr < 0)
- return -1;
- return statestk[ptr];
- }
-
- //###############################################################
+void state_push(int state)
+{
+ if (stateptr>=YYSTACKSIZE) //overflowed?
+ return;
+ statestk[++stateptr]=state;
+}
+int state_pop()
+{
+ if (stateptr<0) //underflowed?
+ return -1;
+ return statestk[stateptr--];
+}
+void state_drop(int cnt)
+{
+int ptr;
+ ptr=stateptr-cnt;
+ if (ptr<0)
+ return;
+ stateptr = ptr;
+}
+int state_peek(int relative)
+{
+int ptr;
+ ptr=stateptr-relative;
+ if (ptr<0)
+ return -1;
+ return statestk[ptr];
+}
+//###############################################################
// method: init_stacks : allocate and prepare stacks
//###############################################################
- boolean init_stacks() {
- statestk = new int[YYSTACKSIZE];
- stateptr = -1;
- val_init();
- return true;
- }
-
- //###############################################################
+boolean init_stacks()
+{
+ statestk = new int[YYSTACKSIZE];
+ stateptr = -1;
+ val_init();
+ return true;
+}
+//###############################################################
// method: dump_stacks : show n levels of the stacks
//###############################################################
- void dump_stacks(int count) {
- int i;
- System.out.println("=index==state====value= s:" + stateptr + " v:" + valptr);
- for (i = 0; i < count; i++)
- System.out.println(" " + i + " " + statestk[i] + " " + valstk[i]);
- System.out.println("======================");
- }
+void dump_stacks(int count)
+{
+int i;
+ System.out.println("=index==state====value= s:"+stateptr+" v:"+valptr);
+ for (i=0;i<count;i++)
+ System.out.println(" "+i+" "+statestk[i]+" "+valstk[i]);
+ System.out.println("======================");
+}
- //########## SEMANTIC VALUES ##########
+//########## SEMANTIC VALUES ##########
//## **user defined:Object
- String yytext;//user variable to return contextual strings
-
- Object yyval; //used to return semantic vals from action routines
-
- Object yylval;//the 'lval' (result) I got from yylex()
-
- Object valstk[];
-
- int valptr;
-
- //###############################################################
+String yytext;//user variable to return contextual strings
+Object yyval; //used to return semantic vals from action routines
+Object yylval;//the 'lval' (result) I got from yylex()
+Object valstk[];
+int valptr;
+//###############################################################
// methods: value stack push,pop,drop,peek.
//###############################################################
- void val_init() {
- valstk = new Object[YYSTACKSIZE];
- yyval = new Object();
- yylval = new Object();
- valptr = -1;
- }
-
- void val_push(Object val) {
- if (valptr >= YYSTACKSIZE)
- return;
- valstk[++valptr] = val;
- }
-
- Object val_pop() {
- if (valptr < 0)
- return null;
- return valstk[valptr--];
- }
-
- void val_drop(int cnt) {
- int ptr;
- ptr = valptr - cnt;
- if (ptr < 0)
- return;
- valptr = ptr;
- }
-
- Object val_peek(int relative) {
- int ptr;
- ptr = valptr - relative;
- if (ptr < 0)
- return null;
- return valstk[ptr];
- }
-
- //#### end semantic value section ####
- public final static short LiteralInteger = 257;
-
- public final static short LiteralFloat64 = 258;
-
- public final static short LiteralChar = 259;
-
- public final static short LiteralString = 260;
-
- public final static short LiteralTwine = 261;
-
- public final static short ID = 262;
-
- public final static short VerbAssign = 263;
-
- public final static short QuasiOpen = 264;
-
- public final static short QuasiClose = 265;
-
- public final static short DollarIdent = 266;
-
- public final static short AtIdent = 267;
-
- public final static short DollarOpen = 268;
-
- public final static short AtOpen = 269;
-
- public final static short URI = 270;
-
- public final static short URIStart = 271;
-
- public final static short BodyStartWord = 272;
-
- public final static short BodyNextWord = 273;
-
- public final static short VTableStartWord = 274;
-
- public final static short VTableNextWord = 275;
-
- public final static short BIND = 276;
-
- public final static short CATCH = 277;
-
- public final static short CLASS = 278;
-
- public final static short DEF = 279;
-
- public final static short DELEGATE = 280;
-
- public final static short ELSE = 281;
-
- public final static short ESCAPE = 282;
-
- public final static short FINALLY = 283;
-
- public final static short FOR = 284;
-
- public final static short IF = 285;
-
- public final static short IN = 286;
-
- public final static short MATCH = 287;
-
- public final static short META = 288;
-
- public final static short PRAGMA = 289;
-
- public final static short SWITCH = 290;
-
- public final static short THUNK = 291;
-
- public final static short TO = 292;
-
- public final static short TRY = 293;
-
- public final static short VAR = 294;
-
- public final static short WHEN = 295;
-
- public final static short WHILE = 296;
-
- public final static short _ = 297;
-
- public final static short DEFINE = 298;
-
- public final static short ON = 299;
-
- public final static short SELECT = 300;
-
- public final static short TYPEDEF = 301;
-
- public final static short ABSTRACT = 302;
-
- public final static short AN = 303;
-
- public final static short AS = 304;
-
- public final static short ATTRIBUTE = 305;
-
- public final static short BE = 306;
-
- public final static short BEGIN = 307;
-
- public final static short BEHALF = 308;
-
- public final static short BELIEF = 309;
-
- public final static short BELIEVE = 310;
-
- public final static short BELIEVES = 311;
-
- public final static short CASE = 312;
-
- public final static short CONST = 313;
-
- public final static short CONSTRUCTOR = 314;
-
- public final static short CONTEXT = 315;
-
- public final static short DECLARE = 316;
-
- public final static short DEFAULT = 317;
-
- public final static short DEFMACRO = 318;
-
- public final static short DEPRECATED = 319;
-
- public final static short DISPATCH = 320;
-
- public final static short DO = 321;
-
- public final static short ENCAPSULATE = 322;
-
- public final static short ENCAPSULATED = 323;
-
- public final static short ENCAPSULATES = 324;
-
- public final static short END = 325;
-
- public final static short ENSURE = 326;
-
- public final static short ENUM = 327;
-
- public final static short EVENTUAL = 328;
-
- public final static short EVENTUALLY = 329;
-
- public final static short EXPORT = 330;
-
- public final static short EXTENDS = 331;
-
- public final static short FACET = 332;
-
- public final static short FORALL = 333;
-
- public final static short FUNCTION = 334;
-
- public final static short GIVEN = 335;
-
- public final static short HIDDEN = 336;
-
- public final static short HIDES = 337;
-
- public final static short IMPLEMENTS = 338;
-
- public final static short INTERFACE = 339;
-
- public final static short IS = 340;
-
- public final static short KNOW = 341;
-
- public final static short KNOWS = 342;
-
- public final static short LAMBDA = 343;
-
- public final static short LET = 344;
-
- public final static short METHOD = 345;
-
- public final static short METHODS = 346;
-
- public final static short MODULE = 347;
-
- public final static short NAMESPACE = 348;
-
- public final static short NATIVE = 349;
-
- public final static short OBEYS = 350;
-
- public final static short OCTET = 351;
-
- public final static short ONEWAY = 352;
-
- public final static short PACKAGE = 353;
-
- public final static short PRIVATE = 354;
-
- public final static short PROTECTED = 355;
-
- public final static short PUBLIC = 356;
-
- public final static short RAISES = 357;
-
- public final static short RELIANCE = 358;
-
- public final static short RELIANT = 359;
-
- public final static short RELIES = 360;
-
- public final static short RELY = 361;
-
- public final static short REVEAL = 362;
-
- public final static short SAKE = 363;
-
- public final static short SIGNED = 364;
-
- public final static short STATIC = 365;
-
- public final static short STRUCT = 366;
-
- public final static short SUCHTHAT = 367;
-
- public final static short SUPPORTS = 368;
-
- public final static short SUSPECT = 369;
-
- public final static short SUSPECTS = 370;
-
- public final static short SYNCHRONIZED = 371;
-
- public final static short THIS = 372;
-
- public final static short THROWS = 373;
-
- public final static short TRANSIENT = 374;
-
- public final static short TRUNCATABLE = 375;
-
- public final static short UNSIGNED = 376;
-
- public final static short UNUM = 377;
-
- public final static short USES = 378;
-
- public final static short USING = 379;
-
- public final static short UTF8 = 380;
-
- public final static short UTF16 = 381;
-
- public final static short VALUETYPE = 382;
-
- public final static short VIRTUAL = 383;
-
- public final static short VOLATILE = 384;
-
- public final static short WSTRING = 385;
-
- public final static short EOL = 386;
-
- public final static short OpLAnd = 387;
-
- public final static short OpLOr = 388;
-
- public final static short OpSame = 389;
-
- public final static short OpNSame = 390;
-
- public final static short OpButNot = 391;
-
- public final static short OpLeq = 392;
-
- public final static short OpABA = 393;
-
- public final static short OpGeq = 394;
-
- public final static short OpThru = 395;
-
- public final static short OpTill = 396;
-
- public final static short OpAsl = 397;
-
- public final static short OpAsr = 398;
-
- public final static short OpFlrDiv = 399;
-
- public final static short OpMod = 400;
-
- public final static short OpPow = 401;
-
- public final static short OpAss = 402;
-
- public final static short OpAssAdd = 403;
-
- public final static short OpAssAnd = 404;
-
- public final static short OpAssAprxDiv = 405;
-
- public final static short OpAssFlrDiv = 406;
-
- public final static short OpAssAsl = 407;
-
- public final static short OpAssAsr = 408;
-
- public final static short OpAssRemdr = 409;
-
- public final static short OpAssMod = 410;
-
- public final static short OpAssMul = 411;
-
- public final static short OpAssOr = 412;
-
- public final static short OpAssPow = 413;
-
- public final static short OpAssSub = 414;
-
- public final static short OpAssXor = 415;
-
- public final static short Send = 416;
-
- public final static short OpWhen = 417;
-
- public final static short MapsTo = 418;
-
- public final static short MatchBind = 419;
-
- public final static short MisMatch = 420;
-
- public final static short Audit = 421;
-
- 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, 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, 59, 59, 59, 59, 59,
- 59, 43, 46, 56, 56, 56, 54, 55, 57, 57,
- 69, 68, 68, 67, 67, 67, 44, 44, 44, 45,
- 45, 70, 70, 71, 71, 72, 72, 74, 74, 75,
- 76, 76, 64, 64, 77, 77, 3, 3, 3, 79,
- 79, 79, 79, 79, 80, 80, 81, 81, 82, 82,
- 83, 83, 84, 84, 85, 85, 78, 78, 78, 78,
- 78, 78, 78, 78, 78, 19, 19, 20, 20, 86,
- 86, 86, 86, 86, 86, 86, 88, 88, 88, 89,
- 89, 60, 60, 90, 90, 15, 15, 87, 87, 92,
- 92, 92, 92, 92, 93, 93, 93, 62, 62, 62,
- 63, 95, 96, 94, 94, 97, 65, 65, 98, 98,
- 99, 1, 1, 9, 9, 100, 73, 18, 18, 39,
- 39, 91, 91, 47, 47, 101, 101, 40, 13, 41,
- 41, 17, 17, 17, 17, 17, 17, 17, 17, 17,
- 17, 17, 17, 49, 49, 50, 61, 61, 61, 104,
- 104, 105, 105, 103, 103, 52, 52, 66, 106, 53,
- 53, 58, 58, 107, 107, 107, 107, 109, 109, 109,
- 109, 108, 108, 108, 111, 111, 112, 112, 113, 113,
- 110, 110, 42, 42, 48, 51, 102, 102, 102, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
- 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
- };
-
- 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, 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, 2, 4,
- 4, 5, 5, 1, 1, 1, 1, 3, 2, 2,
- 3, 2, 3, 2, 1, 2, 4, 3, 3, 4,
- 3, 1, 3, 4, 6, 7, 8, 5, 5, 6,
- 0, 6, 6, 0, 1, 1, 0, 1, 3, 1,
- 2, 2, 3, 1, 3, 1, 2, 1, 4, 2,
- 1, 4, 1, 1, 3, 2, 1, 3, 4, 1,
- 3, 5, 3, 5, 1, 2, 1, 2, 1, 2,
- 2, 3, 1, 1, 1, 3, 3, 1, 2, 1,
- 3, 1, 1, 3, 3, 4, 2, 4, 2, 1,
- 1, 2, 2, 3, 3, 1, 2, 2, 2, 1,
- 3, 1, 3, 1, 4, 2, 5, 1, 1, 4,
- 6, 4, 6, 4, 4, 5, 2, 4, 5, 2,
- 6, 4, 3, 0, 2, 3, 8, 6, 1, 3,
- 3, 0, 1, 1, 2, 0, 1, 3, 2, 1,
- 1, 1, 3, 1, 3, 3, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 4, 6, 4, 5, 1, 1, 1,
- 3, 1, 3, 1, 3, 1, 1, 2, 4, 0,
- 3, 5, 3, 1, 2, 2, 4, 2, 4, 2,
- 4, 2, 5, 4, 2, 3, 1, 4, 2, 2,
- 0, 2, 1, 1, 0, 0, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- };
-
- final static short yydefred[] = { 0,
- 244, 0, 0, 0, 2, 0, 260, 0, 0, 0,
- 313, 314, 0, 0, 317, 318, 319, 320, 321, 322,
- 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
- 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
- 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
- 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
- 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
- 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
- 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
- 393, 394, 395, 396, 397, 398, 399, 400, 0, 0,
- 0, 0, 3, 0, 192, 193, 0, 0, 0, 177,
- 0, 170, 175, 261, 97, 98, 99, 100, 101, 0,
- 0, 103, 0, 315, 315, 0, 0, 4, 0, 0,
- 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 8, 12, 0, 15, 132, 0, 0,
- 0, 0, 30, 0, 0, 0, 0, 0, 62, 0,
- 0, 94, 0, 80, 0, 102, 0, 106, 0, 114,
- 115, 116, 117, 125, 0, 0, 245, 0, 0, 0,
- 259, 0, 0, 0, 0, 0, 176, 189, 0, 247,
- 0, 0, 156, 0, 0, 0, 161, 0, 0, 0,
- 0, 0, 0, 179, 178, 0, 0, 0, 0, 0,
- 0, 0, 0, 218, 219, 0, 0, 0, 0, 201,
- 200, 0, 0, 206, 315, 0, 0, 0, 315, 0,
- 0, 124, 0, 78, 77, 75, 76, 0, 0, 0,
- 0, 0, 250, 0, 254, 119, 120, 122, 0, 0,
- 0, 0, 0, 0, 0, 0, 207, 6, 0, 0,
- 0, 0, 0, 262, 263, 264, 265, 266, 0, 267,
- 268, 269, 270, 271, 272, 273, 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, 258,
- 0, 0, 0, 0, 0, 0, 150, 105, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 109, 0,
- 0, 126, 278, 279, 0, 194, 195, 0, 0, 191,
- 208, 209, 166, 0, 0, 0, 157, 0, 0, 160,
- 0, 10, 149, 187, 0, 0, 154, 185, 0, 0,
- 183, 181, 184, 0, 180, 168, 118, 121, 104, 146,
- 145, 0, 0, 0, 0, 202, 203, 129, 0, 0,
- 252, 0, 246, 0, 0, 0, 123, 0, 0, 0,
- 0, 257, 0, 107, 108, 0, 0, 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, 0, 0, 249,
- 0, 0, 0, 152, 0, 151, 0, 0, 0, 164,
- 0, 0, 128, 246, 0, 0, 0, 131, 0, 0,
- 246, 0, 0, 0, 214, 0, 196, 198, 165, 0,
- 0, 0, 0, 7, 0, 133, 169, 0, 0, 182,
- 0, 0, 316, 204, 205, 0, 0, 236, 315, 0,
- 286, 0, 315, 246, 0, 0, 0, 0, 0, 302,
- 293, 256, 0, 255, 253, 0, 0, 25, 0, 216,
- 0, 0, 81, 0, 248, 0, 153, 110, 0, 0,
- 316, 0, 287, 111, 158, 0, 0, 0, 230, 130,
- 316, 0, 280, 0, 233, 0, 127, 0, 172, 159,
- 174, 0, 162, 11, 155, 186, 315, 139, 0, 0,
- 0, 0, 288, 0, 138, 0, 0, 239, 0, 284,
- 0, 0, 0, 305, 0, 307, 0, 0, 0, 0,
- 294, 0, 0, 0, 312, 0, 315, 315, 112, 0,
- 113, 0, 0, 235, 274, 0, 0, 0, 0, 0,
- 232, 0, 0, 315, 140, 0, 0, 0, 0, 0,
- 0, 0, 276, 0, 0, 310, 309, 0, 306, 304,
- 295, 298, 300, 292, 296, 0, 0, 0, 0, 0,
- 135, 228, 0, 316, 0, 0, 0, 281, 0, 277,
- 215, 0, 0, 231, 0, 291, 241, 238, 240, 0,
- 285, 0, 0, 0, 0, 303, 217, 316, 136, 229,
- 275, 0, 0, 0, 0, 0, 0, 283, 316, 0,
- 289, 0, 308, 297, 299, 301, 137, 0, 224, 0,
- 0, 0, 227, 220, 222, 0, 0, 237, 316, 0,
- 316, 0, 143, 142, 223, 225, 221, 0, 226,
- };
-
- final static short yydgoto[] = { 3,
- 198, 5, 545, 186, 143, 381, 351, 144, 6, 352,
- 146, 147, 148, 413, 443, 149, 277, 312, 105, 106,
- 152, 153, 154, 422, 155, 156, 157, 437, 158, 441,
- 159, 445, 160, 452, 161, 162, 163, 164, 241, 390,
- 107, 165, 166, 167, 318, 168, 242, 169, 329, 387,
- 570, 509, 575, 170, 171, 172, 173, 232, 174, 175,
- 332, 479, 222, 469, 228, 510, 372, 568, 569, 319,
- 361, 192, 193, 194, 195, 196, 197, 110, 111, 112,
- 113, 205, 206, 362, 363, 223, 224, 176, 225, 486,
- 244, 608, 675, 693, 333, 334, 230, 577, 578, 511,
- 245, 114, 581, 554, 610, 573, 592, 391, 593, 520,
- 516, 585, 586,
- };
-
- final static short yysindex[] = { -310,
- 0,15951, 0,14168, 0, -280, 0, -127, -122,19458,
- 0, 0,19458, 87, 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, 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, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,16556,19458,
- 12002, -229, 0, 104, 0, 0, 0, 163, -95, 0,
- 142, 0, 0, 0, 0, 0, 0, 0, 0, -44,
- 6, 0,14521, 0, 0,19458,19086, 0,19458,16806,
- 0, 163,19086,19458,16556,16556,16556, -306, -9, 8,
- -229,15129, -229, 0, 0, 190, 0, 0, 735, -125,
- -109, -107, 0, -24, 76, 66, 52, 2, 0, -84,
- 12592, 0, 265, 0,12252, 0, -23, 0, 694, 0,
- 0, 0, 0, 0, 197, -93, 0, 201, 216, 285,
- 0, 290,14521,19458,19458,19086, 0, 0,16680, 0,
- -48, 260, 0, -27, 284, -26, 0,14168, 332,14521,
- -229, -40, 456, 0, 0, 46,14521, 255, 257, 49,
- 16075,16075, 285, 0, 0, 127, 131,19458,19458, 0,
- 0, 271, -14, 0, 0, 290, -229, 271, 0, -20,
- 289, 0,17870, 0, 0, 0, 0,19458,14168, -5,
- 323, 17, 0, 373, 0, 0, 0, 0, 379, 164,
- 176,19458,19458, 87, 32, 104, 0, 0,12721,14168,
- 265,14521,14168, 0, 0, 0, 0, 0,14168, 0,
- 0, 0, 0, 0, 0, 0,14650,14168,14168,14521,
- 14521,14521,15003,15951,15951,15003,15003,15003,14521,14521,
- 14521,14521,14521,14521,14521,15003,14521,15003,15003,15003,
- 15003,15003,15003,15003,15003,18588, -229,19458, 265, 0,
- -229, 147,18588, 147, 265, -152, 0, 0, 58,15951,
- 12127, 163, 163, 271, 271, 163,17994, -229, 0, -229,
- 17400, 0, 0, 0,19458, 0, 0,14521,14521, 0,
- 0, 0, 0,15951, 396, -229, 0, 325, -229, 0,
- -229, 0, 0, 0, 409,15951, 0, 0, -229,15951,
- 0, 0, 0, 456, 0, 0, 0, 0, 0, 0,
- 0, 271, 197, 327, 333, 0, 0, 0,19458, 419,
- 0, 40, 0, 431,19086, -229, 0, -229, -229, 61,
- 86, 0, -229, 0, 0, -306, -229, 0, 348, 350,
- 285, 290,14168, 0,15129, 0, 147, -107, 0, 0,
- -12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -96, -96, 0, 52, 0, 52, 0, 2,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 147, 265, 383, 265, 147, 437, -126, 0,
- 147, 265, 147, 0, -152, 0, 271, -48, 193, 0,
- 271, 289, 0, 0, 271,15601, 89, 0, 271,14039,
- 0, 271,15951, 271, 0, 436, 0, 0, 0,16423,
- 15951,16423,12127, 0,12721, 0, 0, 357, 358, 0,
- 210, -112, 0, 0, 0, 436,15601, 0, 0, 0,
- 0, -229, 0, 0,19210, 445, -184, -229,19458, 0,
- 0, 0, -5, 0, 0, 0, 0, 0, 104, 0,
- 102, 147, 0, 147, 0, 147, 0, 0,14168, 206,
- 0, 0, 0, 0, 0, 451,15601,14521, 0, 0,
- 0, -229, 0, 0, 0, 271, 0, -229, 0, 0,
- 0, -48, 0, 0, 0, 0, 0, 0, 220, 210,
- 455, 221, 0, 214, 0, 90, 179, 0, 463, 0,
- 381, 446, 446, 0, -10, 0, 446, -229,18712,18712,
- 0, 390, -229, 477, 0, -229, 0, 0, 0, -103,
- 0, 462, 480, 0, 0, 397, -133, -229, 0, 400,
- 0,19458,16075, 0, 0, 462,15951, 271,15951, 462,
- -229,15951, 0, 242, -229, 0, 0, -229, 0, 0,
- 0, 0, 0, 0, 0, -213, 446, 213, 271, -64,
- 0, 0, 462, 0, 163,18836,18836, 0, -229, 0,
- 0, 197,16075, 0, 271, 0, 0, 0, 0, 230,
- 0,19210, -229,18712,18712, 0, 0, 0, 0, 0,
- 0, -111,15601, -30, 271, 114, 271, 0, 0, 271,
- 0, 462, 0, 0, 0, 0, 0, 163, 0, 489,
- 14168,15601, 0, 0, 0, 210, 210, 0, 0, 462,
- 0, 497, 0, 0, 0, 0, 0, 462, 0,
- };
-
- final static short yyrindex[] = { 9616,
- 0, 81, 0, 645, 0, 8526, 0, 0, 0, 0,
- 0, 0, 0, 8650, 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, 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, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 821, 0,
- 20,13686, 0, 8916, 0, 0, 969, 0, 0, 0,
- 9219, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 821, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 821, 821, 821,13075, 0, 0,
- 13686, 81, 540, 0, 0, 25, 0, 0, 779, 0,
- 0, 9416, 0, 9379, 8346, 7962, 7503, 7330, 0, 7291,
- 6907, 0, 5168, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,17524,17152, 0, 0, 0, 8951,
- 0, 8984, 821, 0, 0, 0, 0, 0, 0, 0,
- -35, 0, 0, 30, 0, 449, 0, 821, 0, 821,
- 13686, 0, 0, 0, 0, 0, 821, 0, 0, 0,
- -88, -86,11183, 0, 0, 0, 0, 0, 0, 0,
- 0, 0,18340, 0, 0,11529,13686, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 661, 29,
- 0, 0, 0, 33, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 9773, 0, 1135, 0, 0, 791, 391,
- 0, 821, 821, 0, 0, 0, 0, 0, 821, 0,
- 0, 0, 0, 0, 0, 0, 821, 821, 821, 821,
- 821, 821, 821, 81, 81, 821, 821, 821, 821, 821,
- 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
- 821, 821, 821, 821, 821, 0,13075, 0, 5589, 0,
- 13204, 1522, 0, 2848, 5748, 0, 0, 0, 0, 81,
- 81, 0, 0, 0, 0, 0, 0,13557, 0, -80,
- 0, 0, 0, 0, 0, 0, 0, 821, 821, 0,
- 0, 0, 0, 81, 9142,15477, 0, 9182,11654, 0,
- -8, 0, 0, 0, 0, 81, 0, 0,13686, 81,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, -94, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, -60, 0,18960, -37, -105,
- 0, 0,13686, 0, 0,13686,13686, 1681, 0, 0,
- 10119,10243, 821, 0, 81, 0, 746, 9449, 0, 0,
- 13686, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 8193, 8269, 0, 7809, 0, 7886, 0, 7367,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 3269, 6169, 0, 6328, 2102, 0, 0, 0,
- 3428, 6749, 3849, 0, 0, 0, 0, 261, 0, 0,
- 0, 0, 0, 0, 0, 5, 423, 0, 0, 821,
- 0, 0, 81, 0, 0,17276, 0, 0, 0, 81,
- 81, 81, 81, 0, -18, 0, 0, 0, 0, 0,
- 276, 0, 0, 0, 0,18464, 5, 0, 0, 2261,
- 0,13686, 0, 0, 511, 0, 426,18960, 0, 0,
- 0, 0, 0, 0, 0,10589,10713, 0,11059, 0,
- 0, 4008, 0, 4429, 0, 4588, 0, 0, 821, 5009,
- 0, 2682, 0, 0, 0, 0, 5, 821, 0, 0,
- 0, 429, 0, 280, 0, 0, 0,19582, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 276,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 270, 7, 7, 0, 517, 0, -105, 429, 0, 0,
- 0, 0, 429, 0, 0,13686, 0, 0, 0, 0,
- 0, 423, 0, 0, 0, 0, 0, -80, -69, 0,
- 0, 0, -86, 0, 0, 423, 81, 0, 81, 423,
- 13686, 81, 0, 0, -65, 0, 0,19334, 0, 0,
- 0, 0, 0, 0, 0, 440, -105, 0, 0, 0,
- 0, 0, 423, 0, 0, 0, 0, 0, 429, 0,
- 0, -94, -88, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 429, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 5, 423, 0, 423, 0, 0, 0, 0,
- 0, 423, 0, 0, 0, 0, 0, 0, 0, 0,
- 821, 5, 0, 0, 0, 276, 276, 0, 0, 423,
- 0, 0, 0, 0, 0, 0, 0, 423, 0,
- };
-
- final static short yygindex[] = { 0,
- 1, 0, 243, 37, 0, -98, 91, 302, -137, -1,
- 0, -247, -2, 0, 903, 0, 0, 295, 159, 188,
- 307, 293, -49, 143, 45, 67, -71, 0, 57, 275,
- 233, 457, 272, 0, 0, -46, 0, 0, -67, -146,
- 580, 48, -231, 19, 0, -70, 0, 510, 322, 98,
- 51, 106, 36, 0, 0, -17, 0, 0, 310, 0,
- -331, 251, 0, 0, 0, 110, -207, -498, 0, 0,
- -269, -343, -83, -34, 0, 0, -257, 407, -301, 0,
- 0, 0, 0, 234, 0, -118, 0, 0, -76, 218,
- -225, 0, -62, -414, -488, -4, 0, 0, -21, -190,
- 211, 0, 59, 0, 0, 0, 0, -512, 0, -500,
- 88, 0, -50,
- };
-
- final static int YYTABLESIZE = 19967;
+void val_init()
+{
+ valstk=new Object[YYSTACKSIZE];
+ yyval=new Object();
+ yylval=new Object();
+ valptr=-1;
+}
+void val_push(Object val)
+{
+ if (valptr>=YYSTACKSIZE)
+ return;
+ valstk[++valptr]=val;
+}
+Object val_pop()
+{
+ if (valptr<0)
+ return null;
+ return valstk[valptr--];
+}
+void val_drop(int cnt)
+{
+int ptr;
+ ptr=valptr-cnt;
+ if (ptr<0)
+ return;
+ valptr = ptr;
+}
+Object val_peek(int relative)
+{
+int ptr;
+ ptr=valptr-relative;
+ if (ptr<0)
+ return null;
+ return valstk[ptr];
+}
+//#### end semantic value section ####
+public final static short LiteralInteger=257;
+public final static short LiteralFloat64=258;
+public final static short LiteralChar=259;
+public final static short LiteralString=260;
+public final static short LiteralTwine=261;
+public final static short ID=262;
+public final static short VerbAssign=263;
+public final static short QuasiOpen=264;
+public final static short QuasiClose=265;
+public final static short DollarIdent=266;
+public final static short AtIdent=267;
+public final static short DollarOpen=268;
+public final static short AtOpen=269;
+public final static short URI=270;
+public final static short URIStart=271;
+public final static short BodyStartWord=272;
+public final static short BodyNextWord=273;
+public final static short VTableStartWord=274;
+public final static short VTableNextWord=275;
+public final static short BIND=276;
+public final static short CATCH=277;
+public final static short CLASS=278;
+public final static short DEF=279;
+public final static short DELEGATE=280;
+public final static short ELSE=281;
+public final static short ESCAPE=282;
+public final static short FINALLY=283;
+public final static short FOR=284;
+public final static short IF=285;
+public final static short IN=286;
+public final static short MATCH=287;
+public final static short META=288;
+public final static short PRAGMA=289;
+public final static short SWITCH=290;
+public final static short THUNK=291;
+public final static short TO=292;
+public final static short TRY=293;
+public final static short VAR=294;
+public final static short WHEN=295;
+public final static short WHILE=296;
+public final static short _=297;
+public final static short DEFINE=298;
+public final static short ON=299;
+public final static short SELECT=300;
+public final static short TYPEDEF=301;
+public final static short ABSTRACT=302;
+public final static short AN=303;
+public final static short AS=304;
+public final static short ATTRIBUTE=305;
+public final static short BE=306;
+public final static short BEGIN=307;
+public final static short BEHALF=308;
+public final static short BELIEF=309;
+public final static short BELIEVE=310;
+public final static short BELIEVES=311;
+public final static short CASE=312;
+public final static short CONST=313;
+public final static short CONSTRUCTOR=314;
+public final static short CONTEXT=315;
+public final static short DECLARE=316;
+public final static short DEFAULT=317;
+public final static short DEFMACRO=318;
+public final static short DEPRECATED=319;
+public final static short DISPATCH=320;
+public final static short DO=321;
+public final static short ENCAPSULATE=322;
+public final static short ENCAPSULATED=323;
+public final static short ENCAPSULATES=324;
+public final static short END=325;
+public final static short ENSURE=326;
+public final static short ENUM=327;
+public final static short EVENTUAL=328;
+public final static short EVENTUALLY=329;
+public final static short EXPORT=330;
+public final static short EXTENDS=331;
+public final static short FACET=332;
+public final static short FORALL=333;
+public final static short FUNCTION=334;
+public final static short GIVEN=335;
+public final static short HIDDEN=336;
+public final static short HIDES=337;
+public final static short IMPLEMENTS=338;
+public final static short INTERFACE=339;
+public final static short IS=340;
+public final static short KNOW=341;
+public final static short KNOWS=342;
+public final static short LAMBDA=343;
+public final static short LET=344;
+public final static short METHOD=345;
+public final static short METHODS=346;
+public final static short MODULE=347;
+public final static short NAMESPACE=348;
+public final static short NATIVE=349;
+public final static short OBEYS=350;
+public final static short OCTET=351;
+public final static short ONEWAY=352;
+public final static short PACKAGE=353;
+public final static short PRIVATE=354;
+public final static short PROTECTED=355;
+public final static short PUBLIC=356;
+public final static short RAISES=357;
+public final static short RELIANCE=358;
+public final static short RELIANT=359;
+public final static short RELIES=360;
+public final static short RELY=361;
+public final static short REVEAL=362;
+public final static short SAKE=363;
+public final static short SIGNED=364;
+public final static short STATIC=365;
+public final static short STRUCT=366;
+public final static short SUCHTHAT=367;
+public final static short SUPPORTS=368;
+public final static short SUSPECT=369;
+public final static short SUSPECTS=370;
+public final static short SYNCHRONIZED=371;
+public final static short THIS=372;
+public final static short THROWS=373;
+public final static short TRANSIENT=374;
+public final static short TRUNCATABLE=375;
+public final static short UNSIGNED=376;
+public final static short UNUM=377;
+public final static short USES=378;
+public final static short USING=379;
+public final static short UTF8=380;
+public final static short UTF16=381;
+public final static short VALUETYPE=382;
+public final static short VIRTUAL=383;
+public final static short VOLATILE=384;
+public final static short WSTRING=385;
+public final static short EOL=386;
+public final static short OpLAnd=387;
+public final static short OpLOr=388;
+public final static short OpSame=389;
+public final static short OpNSame=390;
+public final static short OpButNot=391;
+public final static short OpLeq=392;
+public final static short OpABA=393;
+public final static short OpGeq=394;
+public final static short OpThru=395;
+public final static short OpTill=396;
+public final static short OpAsl=397;
+public final static short OpAsr=398;
+public final static short OpFlrDiv=399;
+public final static short OpMod=400;
+public final static short OpPow=401;
+public final static short OpAss=402;
+public final static short OpAssAdd=403;
+public final static short OpAssAnd=404;
+public final static short OpAssAprxDiv=405;
+public final static short OpAssFlrDiv=406;
+public final static short OpAssAsl=407;
+public final static short OpAssAsr=408;
+public final static short OpAssRemdr=409;
+public final static short OpAssMod=410;
+public final static short OpAssMul=411;
+public final static short OpAssOr=412;
+public final static short OpAssPow=413;
+public final static short OpAssSub=414;
+public final static short OpAssXor=415;
+public final static short Send=416;
+public final static short OpWhen=417;
+public final static short MapsTo=418;
+public final static short MatchBind=419;
+public final static short MisMatch=420;
+public final static short Audit=421;
+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, 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, 59, 59, 59, 59, 59,
+ 59, 43, 46, 56, 56, 56, 54, 55, 57, 57,
+ 69, 68, 68, 67, 67, 67, 44, 44, 44, 45,
+ 45, 70, 70, 71, 71, 72, 72, 74, 74, 75,
+ 76, 76, 64, 64, 77, 77, 3, 3, 3, 79,
+ 79, 79, 79, 79, 80, 80, 81, 81, 82, 82,
+ 83, 83, 84, 84, 85, 85, 78, 78, 78, 78,
+ 78, 78, 78, 78, 78, 19, 19, 20, 20, 86,
+ 86, 86, 86, 86, 86, 86, 88, 88, 88, 89,
+ 89, 60, 60, 90, 90, 15, 15, 87, 87, 92,
+ 92, 92, 92, 92, 93, 93, 93, 62, 62, 62,
+ 63, 95, 96, 94, 94, 97, 65, 65, 98, 98,
+ 99, 1, 1, 9, 9, 100, 73, 18, 18, 39,
+ 39, 91, 91, 47, 47, 101, 101, 40, 13, 41,
+ 41, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+ 17, 17, 17, 49, 49, 50, 61, 61, 61, 104,
+ 104, 105, 105, 103, 103, 52, 52, 66, 106, 53,
+ 53, 58, 58, 107, 107, 107, 107, 109, 109, 109,
+ 109, 108, 108, 108, 111, 111, 112, 112, 113, 113,
+ 110, 110, 42, 42, 48, 51, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+ 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
+};
+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, 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, 2, 4,
+ 4, 5, 5, 1, 1, 1, 1, 3, 2, 2,
+ 3, 2, 3, 2, 1, 2, 4, 3, 3, 4,
+ 3, 1, 3, 4, 6, 7, 8, 5, 5, 6,
+ 0, 6, 6, 0, 1, 1, 0, 1, 3, 1,
+ 2, 2, 3, 1, 3, 1, 2, 1, 4, 2,
+ 1, 4, 1, 1, 3, 2, 1, 3, 4, 1,
+ 3, 5, 3, 5, 1, 2, 1, 2, 1, 2,
+ 2, 3, 1, 1, 1, 3, 3, 1, 2, 1,
+ 3, 1, 1, 3, 3, 4, 2, 4, 2, 1,
+ 1, 2, 2, 3, 3, 1, 2, 2, 2, 1,
+ 3, 1, 3, 1, 4, 2, 5, 1, 1, 4,
+ 6, 4, 6, 4, 4, 5, 2, 4, 5, 2,
+ 6, 4, 3, 0, 2, 3, 8, 6, 1, 3,
+ 3, 0, 1, 1, 2, 0, 1, 3, 2, 1,
+ 1, 1, 3, 1, 3, 3, 2, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 4, 6, 4, 5, 1, 1, 1,
+ 3, 1, 3, 1, 3, 1, 1, 2, 4, 0,
+ 3, 5, 3, 1, 2, 2, 4, 2, 4, 2,
+ 4, 2, 5, 4, 2, 3, 1, 4, 2, 2,
+ 0, 2, 1, 1, 0, 0, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+};
+final static short yydefred[] = { 0,
+ 244, 0, 0, 0, 2, 0, 260, 0, 0, 0,
+ 313, 314, 0, 0, 317, 318, 319, 320, 321, 322,
+ 323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
+ 333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
+ 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
+ 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
+ 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
+ 383, 384, 385, 386, 387, 388, 389, 390, 391, 392,
+ 393, 394, 395, 396, 397, 398, 399, 400, 0, 0,
+ 0, 0, 3, 0, 192, 193, 0, 0, 0, 177,
+ 0, 170, 175, 261, 97, 98, 99, 100, 101, 0,
+ 0, 103, 0, 315, 315, 0, 0, 4, 0, 0,
+ 5, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 8, 12, 0, 15, 132, 0, 0,
+ 0, 0, 30, 0, 0, 0, 0, 0, 62, 0,
+ 0, 94, 0, 80, 0, 102, 0, 106, 0, 114,
+ 115, 116, 117, 125, 0, 0, 245, 0, 0, 0,
+ 259, 0, 0, 0, 0, 0, 176, 189, 0, 247,
+ 0, 0, 156, 0, 0, 0, 161, 0, 0, 0,
+ 0, 0, 0, 179, 178, 0, 0, 0, 0, 0,
+ 0, 0, 0, 218, 219, 0, 0, 0, 0, 201,
+ 200, 0, 0, 206, 315, 0, 0, 0, 315, 0,
+ 0, 124, 0, 78, 77, 75, 76, 0, 0, 0,
+ 0, 0, 250, 0, 254, 119, 120, 122, 0, 0,
+ 0, 0, 0, 0, 0, 0, 207, 6, 0, 0,
+ 0, 0, 0, 262, 263, 264, 265, 266, 0, 267,
+ 268, 269, 270, 271, 272, 273, 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, 258,
+ 0, 0, 0, 0, 0, 0, 150, 105, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 109, 0,
+ 0, 126, 278, 279, 0, 194, 195, 0, 0, 191,
+ 208, 209, 166, 0, 0, 0, 157, 0, 0, 160,
+ 0, 10, 149, 187, 0, 0, 154, 185, 0, 0,
+ 183, 181, 184, 0, 180, 168, 118, 121, 104, 146,
+ 145, 0, 0, 0, 0, 202, 203, 129, 0, 0,
+ 252, 0, 246, 0, 0, 0, 123, 0, 0, 0,
+ 0, 257, 0, 107, 108, 0, 0, 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, 0, 0, 249,
+ 0, 0, 0, 152, 0, 151, 0, 0, 0, 164,
+ 0, 0, 128, 246, 0, 0, 0, 131, 0, 0,
+ 246, 0, 0, 0, 214, 0, 196, 198, 165, 0,
+ 0, 0, 0, 7, 0, 133, 169, 0, 0, 182,
+ 0, 0, 316, 204, 205, 0, 0, 236, 315, 0,
+ 286, 0, 315, 246, 0, 0, 0, 0, 0, 302,
+ 293, 256, 0, 255, 253, 0, 0, 25, 0, 216,
+ 0, 0, 81, 0, 248, 0, 153, 110, 0, 0,
+ 316, 0, 287, 111, 158, 0, 0, 0, 230, 130,
+ 316, 0, 280, 0, 233, 0, 127, 0, 172, 159,
+ 174, 0, 162, 11, 155, 186, 315, 139, 0, 0,
+ 0, 0, 288, 0, 138, 0, 0, 239, 0, 284,
+ 0, 0, 0, 305, 0, 307, 0, 0, 0, 0,
+ 294, 0, 0, 0, 312, 0, 315, 315, 112, 0,
+ 113, 0, 0, 235, 274, 0, 0, 0, 0, 0,
+ 232, 0, 0, 315, 140, 0, 0, 0, 0, 0,
+ 0, 0, 276, 0, 0, 310, 309, 0, 306, 304,
+ 295, 298, 300, 292, 296, 0, 0, 0, 0, 0,
+ 135, 228, 0, 316, 0, 0, 0, 281, 0, 277,
+ 215, 0, 0, 231, 0, 291, 241, 238, 240, 0,
+ 285, 0, 0, 0, 0, 303, 217, 316, 136, 229,
+ 275, 0, 0, 0, 0, 0, 0, 283, 316, 0,
+ 289, 0, 308, 297, 299, 301, 137, 0, 224, 0,
+ 0, 0, 227, 220, 222, 0, 0, 237, 316, 0,
+ 316, 0, 143, 142, 223, 225, 221, 0, 226,
+};
+final static short yydgoto[] = { 3,
+ 198, 5, 545, 186, 143, 381, 351, 144, 6, 352,
+ 146, 147, 148, 413, 443, 149, 277, 312, 105, 106,
+ 152, 153, 154, 422, 155, 156, 157, 437, 158, 441,
+ 159, 445, 160, 452, 161, 162, 163, 164, 241, 390,
+ 107, 165, 166, 167, 318, 168, 242, 169, 329, 387,
+ 570, 509, 575, 170, 171, 172, 173, 232, 174, 175,
+ 332, 479, 222, 469, 228, 510, 372, 568, 569, 319,
+ 361, 192, 193, 194, 195, 196, 197, 110, 111, 112,
+ 113, 205, 206, 362, 363, 223, 224, 176, 225, 486,
+ 244, 608, 675, 693, 333, 334, 230, 577, 578, 511,
+ 245, 114, 581, 554, 610, 573, 592, 391, 593, 520,
+ 516, 585, 586,
+};
+final static short yysindex[] = { -310,
+ 0,15951, 0,14168, 0, -280, 0, -127, -122,19458,
+ 0, 0,19458, 87, 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, 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, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0,16556,19458,
+12002, -229, 0, 104, 0, 0, 0, 163, -95, 0,
+ 142, 0, 0, 0, 0, 0, 0, 0, 0, -44,
+ 6, 0,14521, 0, 0,19458,19086, 0,19458,16806,
+ 0, 163,19086,19458,16556,16556,16556, -306, -9, 8,
+ -229,15129, -229, 0, 0, 190, 0, 0, 735, -125,
+ -109, -107, 0, -24, 76, 66, 52, 2, 0, -84,
+12592, 0, 265, 0,12252, 0, -23, 0, 694, 0,
+ 0, 0, 0, 0, 197, -93, 0, 201, 216, 285,
+ 0, 290,14521,19458,19458,19086, 0, 0,16680, 0,
+ -48, 260, 0, -27, 284, -26, 0,14168, 332,14521,
+ -229, -40, 456, 0, 0, 46,14521, 255, 257, 49,
+16075,16075, 285, 0, 0, 127, 131,19458,19458, 0,
+ 0, 271, -14, 0, 0, 290, -229, 271, 0, -20,
+ 289, 0,17870, 0, 0, 0, 0,19458,14168, -5,
+ 323, 17, 0, 373, 0, 0, 0, 0, 379, 164,
+ 176,19458,19458, 87, 32, 104, 0, 0,12721,14168,
+ 265,14521,14168, 0, 0, 0, 0, 0,14168, 0,
+ 0, 0, 0, 0, 0, 0,14650,14168,14168,14521,
+14521,14521,15003,15951,15951,15003,15003,15003,14521,14521,
+14521,14521,14521,14521,14521,15003,14521,15003,15003,15003,
+15003,15003,15003,15003,15003,18588, -229,19458, 265, 0,
+ -229, 147,18588, 147, 265, -152, 0, 0, 58,15951,
+12127, 163, 163, 271, 271, 163,17994, -229, 0, -229,
+17400, 0, 0, 0,19458, 0, 0,14521,14521, 0,
+ 0, 0, 0,15951, 396, -229, 0, 325, -229, 0,
+ -229, 0, 0, 0, 409,15951, 0, 0, -229,15951,
+ 0, 0, 0, 456, 0, 0, 0, 0, 0, 0,
+ 0, 271, 197, 327, 333, 0, 0, 0,19458, 419,
+ 0, 40, 0, 431,19086, -229, 0, -229, -229, 61,
+ 86, 0, -229, 0, 0, -306, -229, 0, 348, 350,
+ 285, 290,14168, 0,15129, 0, 147, -107, 0, 0,
+ -12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -96, -96, 0, 52, 0, 52, 0, 2,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 147, 265, 383, 265, 147, 437, -126, 0,
+ 147, 265, 147, 0, -152, 0, 271, -48, 193, 0,
+ 271, 289, 0, 0, 271,15601, 89, 0, 271,14039,
+ 0, 271,15951, 271, 0, 436, 0, 0, 0,16423,
+15951,16423,12127, 0,12721, 0, 0, 357, 358, 0,
+ 210, -112, 0, 0, 0, 436,15601, 0, 0, 0,
+ 0, -229, 0, 0,19210, 445, -184, -229,19458, 0,
+ 0, 0, -5, 0, 0, 0, 0, 0, 104, 0,
+ 102, 147, 0, 147, 0, 147, 0, 0,14168, 206,
+ 0, 0, 0, 0, 0, 451,15601,14521, 0, 0,
+ 0, -229, 0, 0, 0, 271, 0, -229, 0, 0,
+ 0, -48, 0, 0, 0, 0, 0, 0, 220, 210,
+ 455, 221, 0, 214, 0, 90, 179, 0, 463, 0,
+ 381, 446, 446, 0, -10, 0, 446, -229,18712,18712,
+ 0, 390, -229, 477, 0, -229, 0, 0, 0, -103,
+ 0, 462, 480, 0, 0, 397, -133, -229, 0, 400,
+ 0,19458,16075, 0, 0, 462,15951, 271,15951, 462,
+ -229,15951, 0, 242, -229, 0, 0, -229, 0, 0,
+ 0, 0, 0, 0, 0, -213, 446, 213, 271, -64,
+ 0, 0, 462, 0, 163,18836,18836, 0, -229, 0,
+ 0, 197,16075, 0, 271, 0, 0, 0, 0, 230,
+ 0,19210, -229,18712,18712, 0, 0, 0, 0, 0,
+ 0, -111,15601, -30, 271, 114, 271, 0, 0, 271,
+ 0, 462, 0, 0, 0, 0, 0, 163, 0, 489,
+14168,15601, 0, 0, 0, 210, 210, 0, 0, 462,
+ 0, 497, 0, 0, 0, 0, 0, 462, 0,
+};
+final static short yyrindex[] = { 9616,
+ 0, 81, 0, 645, 0, 8526, 0, 0, 0, 0,
+ 0, 0, 0, 8650, 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, 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, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 821, 0,
+ 20,13686, 0, 8916, 0, 0, 969, 0, 0, 0,
+ 9219, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 821, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 821, 821, 821,13075, 0, 0,
+13686, 81, 540, 0, 0, 25, 0, 0, 779, 0,
+ 0, 9416, 0, 9379, 8346, 7962, 7503, 7330, 0, 7291,
+ 6907, 0, 5168, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,17524,17152, 0, 0, 0, 8951,
+ 0, 8984, 821, 0, 0, 0, 0, 0, 0, 0,
+ -35, 0, 0, 30, 0, 449, 0, 821, 0, 821,
+13686, 0, 0, 0, 0, 0, 821, 0, 0, 0,
+ -88, -86,11183, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0,18340, 0, 0,11529,13686, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 661, 29,
+ 0, 0, 0, 33, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 9773, 0, 1135, 0, 0, 791, 391,
+ 0, 821, 821, 0, 0, 0, 0, 0, 821, 0,
+ 0, 0, 0, 0, 0, 0, 821, 821, 821, 821,
+ 821, 821, 821, 81, 81, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 821, 821, 821, 821, 821,
+ 821, 821, 821, 821, 821, 0,13075, 0, 5589, 0,
+13204, 1522, 0, 2848, 5748, 0, 0, 0, 0, 81,
+ 81, 0, 0, 0, 0, 0, 0,13557, 0, -80,
+ 0, 0, 0, 0, 0, 0, 0, 821, 821, 0,
+ 0, 0, 0, 81, 9142,15477, 0, 9182,11654, 0,
+ -8, 0, 0, 0, 0, 81, 0, 0,13686, 81,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, -94, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, -60, 0,18960, -37, -105,
+ 0, 0,13686, 0, 0,13686,13686, 1681, 0, 0,
+10119,10243, 821, 0, 81, 0, 746, 9449, 0, 0,
+13686, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 8193, 8269, 0, 7809, 0, 7886, 0, 7367,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 3269, 6169, 0, 6328, 2102, 0, 0, 0,
+ 3428, 6749, 3849, 0, 0, 0, 0, 261, 0, 0,
+ 0, 0, 0, 0, 0, 5, 423, 0, 0, 821,
+ 0, 0, 81, 0, 0,17276, 0, 0, 0, 81,
+ 81, 81, 81, 0, -18, 0, 0, 0, 0, 0,
+ 276, 0, 0, 0, 0,18464, 5, 0, 0, 2261,
+ 0,13686, 0, 0, 511, 0, 426,18960, 0, 0,
+ 0, 0, 0, 0, 0,10589,10713, 0,11059, 0,
+ 0, 4008, 0, 4429, 0, 4588, 0, 0, 821, 5009,
+ 0, 2682, 0, 0, 0, 0, 5, 821, 0, 0,
+ 0, 429, 0, 280, 0, 0, 0,19582, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 276,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 270, 7, 7, 0, 517, 0, -105, 429, 0, 0,
+ 0, 0, 429, 0, 0,13686, 0, 0, 0, 0,
+ 0, 423, 0, 0, 0, 0, 0, -80, -69, 0,
+ 0, 0, -86, 0, 0, 423, 81, 0, 81, 423,
+13686, 81, 0, 0, -65, 0, 0,19334, 0, 0,
+ 0, 0, 0, 0, 0, 440, -105, 0, 0, 0,
+ 0, 0, 423, 0, 0, 0, 0, 0, 429, 0,
+ 0, -94, -88, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 429, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 5, 423, 0, 423, 0, 0, 0, 0,
+ 0, 423, 0, 0, 0, 0, 0, 0, 0, 0,
+ 821, 5, 0, 0, 0, 276, 276, 0, 0, 423,
+ 0, 0, 0, 0, 0, 0, 0, 423, 0,
+};
+final static short yygindex[] = { 0,
+ 1, 0, 243, 37, 0, -98, 91, 302, -137, -1,
+ 0, -247, -2, 0, 903, 0, 0, 295, 159, 188,
+ 307, 293, -49, 143, 45, 67, -71, 0, 57, 275,
+ 233, 457, 272, 0, 0, -46, 0, 0, -67, -146,
+ 580, 48, -231, 19, 0, -70, 0, 510, 322, 98,
+ 51, 106, 36, 0, 0, -17, 0, 0, 310, 0,
+ -331, 251, 0, 0, 0, 110, -207, -498, 0, 0,
+ -269, -343, -83, -34, 0, 0, -257, 407, -301, 0,
+ 0, 0, 0, 234, 0, -118, 0, 0, -76, 218,
+ -225, 0, -62, -414, -488, -4, 0, 0, -21, -190,
+ 211, 0, 59, 0, 0, 0, 0, -512, 0, -500,
+ 88, 0, -50,
+};
+final static int YYTABLESIZE=19967;
- //These two tables are not statically initialized, but rather
+//These two tables are not statically initialized, but rather
//initialized on first use, so that a failure to initialize them
//can successfully report the problem.
- static private short[] yytable = null;
-
- static private short[] yycheck = null;
-
- /** Ensures that yytable and yycheck are initialized. */
- static private void initTables() {
- if (null != yycheck) {
- return;
+static private short[] yytable = null;
+static private short[] yycheck = null;
+/** Ensures that yytable and yycheck are initialized. */
+static private void initTables() {
+ if (null != yycheck) {
+ return;
+ }
+ try {
+ String rName = "org/erights/e/elang/syntax/ParserTables.data";
+ InputStream inp = ClassLoader.getSystemResourceAsStream(rName);
+ if (null == inp) {
+ throw new RuntimeException(rName + " not found");
}
- try {
- String rName = "org/erights/e/elang/syntax/ParserTables.data";
- InputStream inp = ClassLoader.getSystemResourceAsStream(rName);
- if (null == inp) {
- throw new RuntimeException(rName + " not found");
- }
- ObjectInput obInp = new ObjectInputStream(inp);
- yytable = (short[])obInp.readObject();
- yycheck = (short[])obInp.readObject();
- long hash = EYaccFixer.checkhash(yytable, yycheck);
- if (hash != -4408874519322207609L) {
- throw new RuntimeException(rName + " bad checkhash: " +
- hash);
- }
- } catch (Exception ex) {
- throw ThrowableSugar.backtrace(ex, "initializing parser");
+ ObjectInput obInp = new ObjectInputStream(inp);
+ yytable = (short[])obInp.readObject();
+ yycheck = (short[])obInp.readObject();
+ long hash = EYaccFixer.checkhash(yytable, yycheck);
+ if (hash != -4408874519322207609L) {
+ throw new RuntimeException(rName + " bad checkhash: " +
+ hash);
}
+ } catch (Exception ex) {
+ throw ThrowableSugar.backtrace(ex, "initializing parser");
}
+}
- final static short YYFINAL = 3;
+final static short YYFINAL=3;
+final static short YYMAXTOKEN=421;
+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,null,null,null,
+null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
+null,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","ID","VerbAssign","QuasiOpen",
+"QuasiClose","DollarIdent","AtIdent","DollarOpen","AtOpen","URI","URIStart",
+"BodyStartWord","BodyNextWord","VTableStartWord","VTableNextWord","BIND",
+"CATCH","CLASS","DEF","DELEGATE","ELSE","ESCAPE","FINALLY","FOR","IF","IN",
+"MATCH","META","PRAGMA","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","PRIVATE",
+"PROTECTED","PUBLIC","RAISES","RELIANCE","RELIANT","RELIES","RELY","REVEAL",
+"SAKE","SIGNED","STATIC","STRUCT","SUCHTHAT","SUPPORTS","SUSPECT","SUSPECTS",
+"SYNCHRONIZED","THIS","THROWS","TRANSIENT","TRUNCATABLE","UNSIGNED","UNUM",
+"USES","USING","UTF8","UTF16","VALUETYPE","VIRTUAL","VOLATILE","WSTRING","EOL",
+"OpLAnd","OpLOr","OpSame","OpNSame","OpButNot","OpLeq","OpABA","OpGeq","OpThru",
+"OpTill","OpAsl","OpAsr","OpFlrDiv","OpMod","OpPow","OpAss","OpAssAdd",
+"OpAssAnd","OpAssAprxDiv","OpAssFlrDiv","OpAssAsl","OpAssAsr","OpAssRemdr",
+"OpAssMod","OpAssMul","OpAssOr","OpAssPow","OpAssSub","OpAssXor","Send",
+"OpWhen","MapsTo","MatchBind","MisMatch","Audit",
+};
+final static String yyrule[] = {
+"$accept : start",
+"start : br",
+"start : topExpr",
+"start : MatchBind pattern",
+"define : DEF",
+"define : DEFINE",
+"topExpr : br topSeqs br",
+"eExpr : br seqs br",
+"topSeqs : topSeq",
+"topSeqs : topSeqs EOLs topSeq",
+"seqs : seq",
+"seqs : seqs EOLs seq",
+"topSeq : seq",
+"seq : assigns",
+"seq : assigns ';'",
+"assigns : assign",
+"assigns : assigns ';' assign",
+"assigns : define noun",
+"nAssign : assign",
+"nAssign : plural",
+"assign : cond",
+"assign : cond OpAss assign",
+"assign : cond assignop nAssign",
+"assign : cond OpAssAsr assign",
+"assign : cond VerbAssign parenArgs",
+"assign : define pattern OpAss assign",
+"assign : binder OpAss assign",
+"assign : varNamer OpAss assign",
+"cond : condAnd",
+"cond : cond OpLOr condAnd",
+"condAnd : comp",
+"condAnd : condAnd OpLAnd comp",
+"comp : order",
+"comp : order OpSame order",
+"comp : order OpNSame order",
+"comp : order '&' nOrder",
+"comp : order '|' nOrder",
+"comp : order '^' nOrder",
+"comp : order OpButNot nOrder",
+"comp : order MatchBind pattern",
+"comp : order MisMatch pattern",
+"nOrder : order",
+"nOrder : plural",
+"order : interval",
+"order : interval '<' interval",
+"order : interval OpLeq interval",
+"order : interval OpABA interval",
+"order : interval OpGeq interval",
+"order : interval '>' interval",
+"interval : shift",
+"interval : shift OpThru shift",
+"interval : shift OpTill shift",
+"shift : add",
+"shift : shift OpAsl nAdd",
+"shift : shift OpAsr add",
+"nAdd : add",
+"nAdd : plural",
+"add : mult",
+"add : add '+' nMult",
+"add : add '-' nMult",
+"nMult : mult",
+"nMult : plural",
+"mult : pow",
+"mult : mult '*' nPow",
+"mult : mult '/' nPow",
+"mult : mult OpFlrDiv nPow",
+"mult : mult '%' nPow",
+"mult : mult OpMod nPow",
+"nPow : pow",
+"nPow : plural",
+"pow : prefix",
+"pow : prefix OpPow nPrefix",
+"nPrefix : prefix",
+"nPrefix : plural",
+"prefix : postfix",
+"prefix : '!' prim",
+"prefix : '~' prim",
+"prefix : '-' prim",
+"prefix : '&' noun",
+"postfix : call",
+"postfix : metaExpr",
+"postfix : postfix '[' argList ']'",
+"postfix : postfix Send verb parenArgs",
+"postfix : postfix Send parenArgs",
+"postfix : postfix Send verb",
+"postfix : postfix verb",
+"postfix : postfix '.' ident",
+"postfix : postfix '.' ident parenArgs",
+"metaExpr : metaoid parenArgs",
+"metaExpr : metaoid verb parenArgs",
+"metaExpr : metaoid Send parenArgs",
+"metaExpr : metaoid Send verb parenArgs",
+"metaExpr : metaoid verb",
+"metaExpr : metaoid Send verb",
+"call : prim",
+"call : call parenArgs",
+"call : postfix verb parenArgs",
+"prim : LiteralInteger",
+"prim : LiteralFloat64",
+"prim : LiteralChar",
+"prim : LiteralString",
+"prim : LiteralTwine",
+"prim : nounExpr",
+"prim : URI",
+"prim : URIStart add '>'",
+"prim : quasiParser quasiExpr",
+"prim : parenExpr",
+"prim : '[' argList ']'",
+"prim : '[' maps ']'",
+"prim : begin body",
+"prim : begin ESCAPE pattern body",
+"prim : begin WHILE parenExpr body",
+"prim : begin SWITCH parenExpr caseList end",
+"prim : begin TRY body catchList finallyClause",
+"prim : forExpr",
+"prim : whenExpr",
+"prim : ifExpr",
+"prim : macro",
+"prim : DollarOpen LiteralInteger '}'",
+"prim : '$' LiteralInteger",
+"prim : '$' '$'",
+"prim : AtOpen LiteralInteger '}'",
+"prim : '@' LiteralInteger",
+"prim : SELECT parenExpr caseList",
+"prim : TYPEDEF oType",
+"prim : object",
+"object : defAudits vTable",
+"object : defAudits begin funcHead body",
+"object : begin THUNK body",
+"object : CLASS classHead body",
+"object : begin _ funcHead body",
+"object : begin _ body",
+"nounExpr : noun",
+"parenExpr : '(' eExpr ')'",
+"ifExpr : begin IF parenExpr body",
+"ifExpr : begin IF parenExpr body ELSE ifExpr",
+"ifExpr : begin IF parenExpr body ELSE begin body",
+"forExpr : begin FOR iterPattern IN assign begin body end",
+"whenExpr : WHEN whenHead body catches finallyClause",
+"macro : BodyStartWord begin macroArg body restMacro",
+"macro : VTableStartWord begin macroArg vTable end restMacro",
+"$$1 :",
+"restMacro : $$1 BodyNextWord begin macroArg body restMacro",
+"restMacro : VTableNextWord begin macroArg vTable end restMacro",
+"macroArg :",
+"macroArg : parenExpr",
+"macroArg : pattern",
+"quasiParser :",
+"quasiParser : ident",
+"quasiParser : '(' eExpr ')'",
+"quasiExpr : QuasiClose",
+"quasiExpr : innerExprs QuasiClose",
+"innerExprs : QuasiOpen innerExpr",
+"innerExprs : innerExprs QuasiOpen innerExpr",
+"innerExpr : DollarIdent",
+"innerExpr : DollarOpen eExpr '}'",
+"patternList : emptyBr",
+"patternList : patterns br",
+"patterns : pattern",
+"patterns : patterns ',' br pattern",
+"mapPatternList : mapPatterns br",
+"mapPatterns : mapPattern",
+"mapPatterns : mapPatterns ',' br mapPattern",
+"iterPattern : pattern",
+"iterPattern : mapPattern",
+"mapPattern : pattern MapsTo pattern",
+"mapPattern : MapsTo namer",
+"pattern : listPatt",
+"pattern : listPatt '?' order",
+"pattern : metaoid parenExpr MapsTo pattern",
+"listPatt : eqPatt",
+"listPatt : '[' patternList ']'",
+"listPatt : '[' patternList ']' '+' listPatt",
+"listPatt : '[' mapPatternList ']'",
+"listPatt : '[' mapPatternList ']' '|' listPatt",
+"eqPatt : quasiPatt",
+"eqPatt : OpSame prim",
+"quasiPatt : namer",
+"quasiPatt : quasiParser quasiPattern",
+"quasiPattern : QuasiClose",
+"quasiPattern : innerThings QuasiClose",
+"innerThings : QuasiOpen innerThing",
+"innerThings : innerThings QuasiOpen innerThing",
+"innerThing : innerExpr",
+"innerThing : innerPattern",
+"innerPattern : AtIdent",
+"innerPattern : AtOpen pattern '}'",
+"namer : noun ':' order",
+"namer : noun",
+"namer : '&' noun",
+"namer : _",
+"namer : _ ':' order",
+"namer : binder",
+"namer : varNamer",
+"namer : DollarOpen LiteralInteger '}'",
+"namer : AtOpen LiteralInteger '}'",
+"binder : BIND noun ':' order",
+"binder : BIND noun",
+"varNamer : VAR noun ':' order",
+"varNamer : VAR noun",
+"oName : noun",
+"oName : _",
+"oName : BIND noun",
+"oName : VAR noun",
+"oName : DollarOpen LiteralInteger '}'",
+"oName : AtOpen LiteralInteger '}'",
+"oName : litString",
+"defName : define oName",
+"defName : BIND noun",
+"defName : VAR noun",
+"audits : oName",
+"audits : oName Audit nounExprs",
+"defAudits : defName",
+"defAudits : defName Audit nounExprs",
+"nounExprs : nounExpr",
+"nounExprs : nounExprs ',' br nounExpr",
+"plural : '(' ')'",
+"plural : '(' eExpr ',' args ')'",
+"litString : LiteralString",
+"litString : LiteralTwine",
+"method : begin TO methHead body",
+"method : begin TO verb OpAss assign end",
+"method : begin ON methHead body",
+"method : begin META parenExpr MapsTo parenExpr end",
+"method : begin META parenExpr body",
+"methHead : '(' patternList ')' resultGuard",
+"methHead : verb '(' patternList ')' resultGuard",
+"methHead : verb resultGuard",
+"funcHead : '(' patternList ')' resultGuard",
+"funcHead : verb '(' patternList ')' resultGuard",
+"funcHead : verb resultGuard"