checkpoint
[sbp.git] / src / edu / berkeley / sbp / GSS.java
index bd2ecd6..89a16ed 100644 (file)
@@ -234,7 +234,10 @@ class GSS {
             }
 
             if (!good && token!=null)
-                throw new ParseFailed(ParseFailed.error(ANSI.red("unexpected character")+" "+ANSI.purple(token)+" encountered at "+ANSI.green(getLocation())+"\n", token, hash.values()),
+                throw new ParseFailed(ParseFailed.error(ANSI.red("unexpected character ")+" \'"+
+                                                        ANSI.purple(StringUtil.escapify(token+"", "\\\'\r\n"))+
+                                                        "\' encountered at "+
+                                                        ANSI.green(getLocation())+"\n", token, hash.values()),
                                         getLocation());
             if (token==null && finalResult==null)
                 throw new ParseFailed(ParseFailed.error(ANSI.red("unexpected end of file\n"), token, hash.values()),
@@ -290,6 +293,7 @@ class GSS {
                 else            state.invokeReductions(token, this, this, n2);
             }
 
+            public void performEmptyReductions() { state.invokeReductions(token, this, null, null); }
             public final void invoke(Position r, Node n, Node n2) {
                 if (n==null || n2==null || r.pos==0) {
                     if (r.pos==0) {
@@ -348,8 +352,6 @@ class GSS {
                     target.newNode(this, result, state0, r.pos<=0, r);
             }
 
-            public void performEmptyReductions() { state.invokeReductions(token, this, null, null); }
-
             private Node(Node parent, Forest pending, State state) {
                 this.state = state;
                 this.holder().merge(pending);