checkpoint
[sbp.git] / src / edu / berkeley / sbp / misc / MetaGrammar.java
index 031dccd..1cf8d8c 100644 (file)
@@ -119,11 +119,18 @@ public class MetaGrammar extends ReflectiveWalker {
     public Object _plus__plus_(final Element r)             { return Repeat.maximal(Repeat.many1(r)); }
     public Element _question_(final Element r)              { return Repeat.maybe(r); }
 
+    public Object walk(Tree<String> tree) {
+        String head = tree.head();
+        if (tree.numChildren()==0) return super.walk(tree);
+        if      ("\\n".equals(head)) return new Character('\n');
+        else if ("\\r".equals(head)) return new Character('\r');
+        else if ("grammar".equals(head)) { for(Tree<String> t : tree.children()) walk(t); return this; }
+        else return super.walk(tree);
+    }
+
     public MetaGrammar grammar(Object o, Union[] u, Object x) { return this; }
     public Object gram(Object o, Object g, Object o2) { return g; }
     public MetaGrammar  grammar(Object[] o) { return this; }
-    public char    _backslash_n() { return '\n'; }
-    public char    _backslash_r() { return '\r'; }
     public Element    literal(String s) { Element ret = string(s); dropAll.add(ret); return ret; }
     public Range     _minus_(char a, char b) { return new Range(a, b); }
     public Range     range(char a)         { return new Range(a, a); }