public Object walk(Tree t) {
String head = (String)t.head();
- if (head.indexOf('.') != 0)
- while(head.indexOf('.') != -1)
- head = head.substring(head.indexOf('.')+1);
+ while(head.indexOf('.') > 0)
+ head = head.substring(head.indexOf('.')+1);
if (head==null) throw new RuntimeException("head is null: " + t);
if (head.equals("|")) return walkChildren(t);
if (head.equals("RHS")) return walkChildren(t);
if (head.equals("\\{")) return new DropNode(new AtomNode(new AtomNodeRange(CharAtom.left, CharAtom.left)));
if (head.equals("\\}")) return new DropNode(new AtomNode(new AtomNodeRange(CharAtom.right, CharAtom.right)));
if (head.equals("~")) return new TildeNode((ElementNode)walk(t.child(0)));
+ if (head.equals("~~")) {
+ Seq seq = new Seq(star(new TildeNode(new AtomNode())));
+ return seq.andnot((Seq)walk(t.child(0)));
+ }
if (head.equals("Range") && t.size()==1) return new AtomNodeRange(unescape(t).charAt(0));
if (head.equals("Range")) return new AtomNodeRange(unescape(t).charAt(0), unescape(t).charAt(1));
if (head.equals("\"\"")) return "";