예제 #1
0
 private Maybe<Result> VisitRegExp(QueryParser.Bool_exprContext context)
 {
     var left = new BasicExprVisitor(_zmi, _env).Visit(context.basic_expr()[0]);
     return left.Bind(l =>
         l.RegExpr(new ResultSingle(new ValueString(context.string_const().GetText().Trim('\"'))))
             .Just());
 }
예제 #2
0
 private Maybe<Result> VisitOp(QueryParser.Bool_exprContext context)
 {
     var left = new BasicExprVisitor(_zmi, _env).Visit(context.basic_expr()[0]);
     var right = new BasicExprVisitor(_zmi, _env).Visit(context.basic_expr()[1]);
     return left.Zip(right)
         .Bind(tuple => new RelOpVisitor((tuple.Item1, tuple.Item2)).Visit(context.rel_op()));
 }
예제 #3
0
 public override Maybe<Result> VisitBool_expr(QueryParser.Bool_exprContext context)
 {
     if (context.rel_op() != null)
         return VisitOp(context);
     if (context.REGEXP() != null)
         return VisitRegExp(context);
     return VisitBasic(context);
 }
예제 #4
0
 private Maybe<Result> VisitBasic(QueryParser.Bool_exprContext context) =>
     new BasicExprVisitor(_zmi, _env).Visit(context.basic_expr()[0]);
예제 #5
0
 public override Maybe<Result> VisitBool_expr(QueryParser.Bool_exprContext context)
 {
     var boolExprInt = new BoolExprVisitor(_zmi, _env);
     return boolExprInt.Visit(context);
 }
예제 #6
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="QueryParser.bool_expr"/>.
 /// <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 VisitBool_expr([NotNull] QueryParser.Bool_exprContext context)
 {
     return(VisitChildren(context));
 }