public override BaseNode VisitBoolExpression(QueryFilteringParser.BoolExpressionContext context) { var left = context.left.Accept(this); var right = context.right.Accept(this); switch (context.operation.Type) { case QueryFilteringLexer.EQUALS: return(new EqualsNode(left, right)); case QueryFilteringLexer.NOTEQUALS: return(new NotEqualsNode(left, right)); case QueryFilteringLexer.GREATERTHAN: return(new GreaterThanNode(left, right)); case QueryFilteringLexer.GREATERTHANOREQUAL: return(new GreaterThanOrEqualNode(left, right)); case QueryFilteringLexer.LESSTHAN: return(new LessThanNode(left, right)); case QueryFilteringLexer.LESSTHANOREQUAL: return(new LessThanOrEqualNode(left, right)); default: throw new ParseRuleException( nameof(FilterExpressionVisitor), $"неизвестный тип операции '{context.operation.Type}'"); } }
/// <summary> /// Visit a parse tree produced by <see cref="QueryFilteringParser.boolExpression"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitBoolExpression([NotNull] QueryFilteringParser.BoolExpressionContext context) { return(VisitChildren(context)); }