- else if ("*".equals(head)) return Repeat.many0((Element)walk(tree.child(0)));
- else if ("+".equals(head)) return Repeat.many1((Element)walk(tree.child(0)));
- else if ("+/".equals(head)) return Repeat.many1((Element)walk(tree.child(0)), (Element)walk(tree.child(1)));
- else if ("*/".equals(head)) return Repeat.many0((Element)walk(tree.child(0)), (Element)walk(tree.child(1)));
- else if ("++/".equals(head)) return Repeat.maximal1((Element)walk(tree.child(0)), (Element)walk(tree.child(1)));
- else if ("**".equals(head)) return Repeat.maximal0((Element)walk(tree.child(0)));
- else if ("++".equals(head)) return Repeat.maximal1((Element)walk(tree.child(0)));
- else if ("?".equals(head)) return Repeat.maybe((Element)walk(tree.child(0)));
+ else if ("*".equals(head)) return Repeat.many0((Element)walk(tree.child(0)), repeatTag());
+ else if ("+".equals(head)) return Repeat.many1((Element)walk(tree.child(0)), repeatTag());
+ else if ("+/".equals(head)) return Repeat.many1((Element)walk(tree.child(0)), (Element)walk(tree.child(1)), repeatTag());
+ else if ("*/".equals(head)) return Repeat.many0((Element)walk(tree.child(0)), (Element)walk(tree.child(1)), repeatTag());
+ else if ("++/".equals(head)) return Repeat.maximal1((Element)walk(tree.child(0)), (Element)walk(tree.child(1)), repeatTag());
+ else if ("**".equals(head)) return Repeat.maximal0((Element)walk(tree.child(0)), repeatTag());
+ else if ("++".equals(head)) return Repeat.maximal1((Element)walk(tree.child(0)), repeatTag());
+ else if ("?".equals(head)) return Repeat.maybe((Element)walk(tree.child(0)), repeatTag());