Exemplo n.º 1
0
        public override BaseNode VisitConstant(QueryFilteringParser.ConstantContext context)
        {
            switch (context.value.Type)
            {
            case QueryFilteringLexer.INT:
                return(new IntNode(context.value.Text));

            case QueryFilteringLexer.LONG:
                return(new LongNode(context.value.Text));

            case QueryFilteringLexer.DOUBLE:
                return(new DoubleNode(context.value.Text));

            case QueryFilteringLexer.FLOAT:
                return(new FloatNode(context.value.Text));

            case QueryFilteringLexer.DECIMAL:
                return(new DecimalNode(context.value.Text));

            case QueryFilteringLexer.BOOL:
                return(new BoolNode(context.value.Text));

            case QueryFilteringLexer.GUID:
                return(new GuidNode(context.value.Text));

            case QueryFilteringLexer.NULL:
                return(new NullNode());

            case QueryFilteringLexer.STRING:
                return(new StringNode(context.value.Text));

            case QueryFilteringLexer.DATETIME:
                return(new DateTimeNode(context.value.Text));

            default:
                throw new ParseRuleException(
                          nameof(FilterExpressionVisitor),
                          $"неизвестный тип данных '{context.value.Type}'");
            }
        }
 /// <summary>
 /// Visit a parse tree produced by <see cref="QueryFilteringParser.constant"/>.
 /// <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 VisitConstant([NotNull] QueryFilteringParser.ConstantContext context)
 {
     return(VisitChildren(context));
 }