blob: c81d6dcf2beff4c685916986c2b26a44c45f751c [file] [log] [blame]
/* 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);
}
}