| /* Generated By:JJTree: Do not edit this line. ForClause.java */ |
| |
| package org.apache.xpath.parser; |
| |
| import org.apache.xpath.Expression; |
| import org.apache.xpath.operations.Variable; |
| import org.apache.xpath.seqctor.Binding; |
| import org.apache.xpath.seqctor.FLWRExpr; |
| |
| /** |
| * ForClause ::= <"for" "$"> VarName "in" |
| * Expr ("," "$" VarName "in" Expr)* |
| * |
| * Created Jul 18, 2002 |
| * @author sboag |
| */ |
| public class ForClause extends NonExecutableExpression |
| { |
| |
| public ForClause(XPath parser) { |
| super(parser); |
| } |
| |
| /** |
| * @see org.apache.xpath.parser.Node#jjtSetParent(Node) |
| */ |
| public void jjtSetParent(Node n) |
| { |
| super.jjtSetParent(n); |
| FLWRExpr flwr = (FLWRExpr)n; |
| int vsize = m_exprs.size(); |
| // vsize--; |
| Binding[] bindings = new Binding[vsize/3]; |
| |
| int bindingIndex = 0; |
| for (int i = 0; i < vsize; i+=3) |
| { |
| Variable var = (Variable)m_exprs.elementAt(i); |
| try |
| { |
| Binding binding = new Binding(); |
| binding.setVar(var); |
| bindings[bindingIndex] = binding; |
| bindingIndex++; |
| var.jjtSetParent(flwr); |
| } |
| catch (java.lang.NullPointerException e) |
| { |
| throw e; |
| } |
| } |
| bindingIndex = 0; |
| // Ignore the "in" node. (It should really be void) |
| for (int i = 2; i < vsize; i+=3) |
| { |
| Expression expr = (Expression)m_exprs.elementAt(i); |
| expr = (Expression)fixupPrimarys(expr); |
| bindings[bindingIndex++].setExpr(expr); |
| expr.jjtSetParent(flwr); |
| } |
| flwr.setBindings(bindings); |
| } |
| |
| } |