else if ("/".equals(head)) return ((PreSequence)walk(tree, 0)).sparse((Element)walk(tree, 1));
else if ("~".equals(head)) return new Hack(new Atom.Invert(new Atom.Infer((Element)walk(tree, 0))));
else if ("ps".equals(head)) return new PreSequence((Element[])walk(tree,0));
- else if ("qprod".equals(head)) {
- String s = string(tree.child(0));
- return new PreSequence(new Element[] { string(s) }, s, new boolean[] { true }).buildSequence();
- } else if ("[".equals(head)) {
+ else if (":".equals(head)) return walk(tree,1);
+ else if ("[".equals(head)) {
Range[] rr = (Range[])walk(tree, 0);
Range.Set ret = new Range.Set();
if (rr!=null) for(Range r : rr) ret.add(r);