Esempio n. 1
0
        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));
 }