public override List <GeneralError> VisitBooleanExpr([NotNull] WordLangParser.BooleanExprContext context) { var errs = new List <GeneralError>(); context.expression().Select(ctx => Visit(ctx)) .ToList() .ForEach(set => errs.AddRange(set)); return(errs); }
public override string VisitBooleanExpr([NotNull] WordLangParser.BooleanExprContext context) { var left = Visit(context.expression(0)); var right = Visit(context.expression(1)); //var left = Visit(context.text(0)); //var right = Visit(context.text(1)); var op = Visit(context.booleanOp()); return($"(cond op=[{op}] left=[{left}] right=[{right}])"); }
public override string VisitBooleanExpr([NotNull] WordLangParser.BooleanExprContext context) { var op = Visit(context.booleanOp()); var left = Quotize(TreeVisitor.Visit(context.expression(0))); var right = Quotize(TreeVisitor.Visit(context.expression(1))); //var left = Quotize(Visit(context.text(0))); //var right = Quotize(Visit(context.text(1))); return($"{{\"op\":{op},\"left\":{left},\"right\":{right}}}"); }
public override AST.RuleTree VisitBooleanExpr([NotNull] WordLangParser.BooleanExprContext context) { var condition = new AST.Condition(); //var leftCtx = context.text(0); //var rightCtx = context.text(1); //var rightName = rightCtx.NAME().CombineTokens(); //condition.LeftKey = new AST.FieldString() //{ // Value = leftCtx.NAME().CombineTokens(), // StartIndex = leftCtx.NAME().First().Symbol.StartIndex, // StopIndex = leftCtx.NAME().Last().Symbol.StopIndex //}; //condition.RightKey = new AST.FieldString() //{ // Value = rightCtx.NAME().CombineTokens(), // StartIndex = rightCtx.NAME().First().Symbol.StartIndex, // StopIndex = rightCtx.NAME().Last().Symbol.StopIndex //}; var opMainCtx = context.booleanOp().booleanOpMain(); condition.Negated = context.booleanOp().NEGATION() != null; condition.Operator = new AST.FieldComparisonOperator() { Value = (opMainCtx.EQUALTO() != null ? AST.ComparisonOperator.EQUALS : (opMainCtx.LESSTHAN() != null ? AST.ComparisonOperator.LESS : AST.ComparisonOperator.GREATER)), StartIndex = context.booleanOp().Start.StartIndex, StopIndex = context.booleanOp().Stop.StopIndex }; return(condition); }