/// <summary> /// visit LogicalExpression /// </summary> /// <param name="expression"></param> public void Visit(SelectionRule rule) { VisitorEventArgs <T> args = new VisitorEventArgs <T>(currentNode: rule, stack: _stack); // call the event VisitingSelectionRule(this, args); // visit subnodes from left to right Visit(rule.Result); Visit(rule.Selection); // call the event VisitedSelectionRule(this, args); }
/// <summary> /// visit operation Selection /// </summary> /// <param name="expression"></param> public void Visit(FunctionCall call) { VisitorEventArgs <T> args = new VisitorEventArgs <T>(currentNode: call, stack: _stack); // call the event VisitingFunctionCall(this, args); // visit subnodes foreach (INode node in call.Nodes) { Visit(node); } // call the event VisitedFunctionCall(this, args); }
/// <summary> /// visit operation Selection /// </summary> /// <param name="expression"></param> public void Visit(OperationExpression expression) { VisitorEventArgs <T> args = new VisitorEventArgs <T>(currentNode: expression, stack: _stack); // call the event VisitingOperationExpression(this, args); // visit subnodes from left to right if (expression.Operator.Arguments >= 1) { Visit(expression.LeftOperand); } if (expression.Operator.Arguments >= 2) { Visit(expression.RightOperand); } // call the event VisitedOperationExpression(this, args); }
/// <summary> /// visit the variable /// </summary> /// <param name="literal"></param> public void Visit(DataObjectEntrySymbol symbol) { VisitorEventArgs <T> args = new VisitorEventArgs <T>(currentNode: symbol, stack: _stack); VisitingDataObjectSymbol(this, args); }
/// <summary> /// visit the variable /// </summary> /// <param name="literal"></param> public void Visit(Variable variable) { VisitorEventArgs <T> args = new VisitorEventArgs <T>(currentNode: variable, stack: _stack); VisitingVariable(this, args); }
/// <summary> /// visit the literal /// </summary> /// <param name="literal"></param> public void Visit(Literal literal) { VisitorEventArgs <T> args = new VisitorEventArgs <T>(currentNode: literal, stack: _stack); VisitingLiteral(this, args); }