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