checkpoint
[sbp.git] / src / edu / berkeley / sbp / chr / CharParser.java
index 8630161..c901388 100644 (file)
@@ -12,11 +12,17 @@ public class CharParser extends Parser<Character,String> {
 
     public Forest<String> parse(InputStream is) throws IOException, ParseFailed { return super.parse(new CharInput(is)); }
     public Forest<String> parse(Reader r)       throws IOException, ParseFailed { return super.parse(new CharInput(r)); }
+    public Forest<String> parse(String s)       throws IOException, ParseFailed { return parse(new StringReader(s)); }
 
     public CharParser(Union u) { super(u, new CharTopology()); }
 
-    public Forest<String> shiftToken(Location oldloc, Character ct, Location newloc) {
-        return Forest.create(new Input.Region(oldloc, newloc), ct.toString(), null, false);
+    private Location oldloc;
+
+    public Forest<String> shiftToken(Character ct, Location newloc) {
+        if (oldloc==null) oldloc = newloc;
+        Forest<String> ret = Forest.create(oldloc.createRegion(newloc), ct.toString(), null);
+        oldloc = newloc;
+        return ret;
     }
 
 }