// constructor internal Axis(AxisType axistype, AstNode input) { _axistype = axistype; _input = input; _prefix = String.Empty; _name = String.Empty; _nodetype = XPathNodeType.All; this.abbrAxis = true; }
// constructor internal Axis( AxisType axistype, AstNode input, String prefix, String name, XPathNodeType nodetype) { _axistype = axistype; _input = input; _prefix = prefix; _name = name; _nodetype = nodetype; }
internal Function(FunctionType ftype, AstNode arg) { _functionType = ftype; _argumentList = new ArrayList(); _argumentList.Add(arg); }
internal Operator(Op op, AstNode opnd1, AstNode opnd2) { _operatorType = op; _opnd1 = opnd1; _opnd2 = opnd2; }
private IQuery ProcessNode(AstNode root, IQuery qyInput) { IQuery result = null; if (root == null) return null; switch (root.TypeOfAst) { case AstNode.QueryType.Axis: Axis axis = (Axis)root; result = ProcessAxis(axis, ProcessNode(axis.Input, qyInput)); break; case AstNode.QueryType.Operator: result = ProcessOperator((Operator)root, null); break; case AstNode.QueryType.Filter: result = ProcessFilter((Filter)root); break; case AstNode.QueryType.ConstantOperand: result = ProcessOperand((Operand)root); break; case AstNode.QueryType.Function: result = ProcessFunction((Function)root, qyInput); break; case AstNode.QueryType.Root: result = new AbsoluteQuery(); break; case AstNode.QueryType.Group: result = new GroupQuery(ProcessNode(((Group)root).GroupNode, qyInput)); break; default: Debug.Assert(false, "Unknown QueryType encountered!!"); break; } return result; }