public override void ExitFilterCondition(QueryLanguageParser.FilterConditionContext context) { var preparedCondition = processingQueryNodeStack.Pop(); CurrentProcessingQueryNode.Criterias.Add(preparedCondition); base.ExitFilterCondition(context); }
public override void EnterFilterCondition(QueryLanguageParser.FilterConditionContext context) { var notModifier = context.notModifier != null; var comparator = context.comparator?.Type; var condition = new QueryNode { Type = QueryNodeType.Criteria, Comparator = comparator.HasValue ? ParserHelper.GetCriteriaComparator(comparator.Value) : (CriteriaComparator?)null, NotModifier = notModifier, }; // Not Equals workaround if (condition.Comparator == CriteriaComparator.NotEq) { condition.Comparator = CriteriaComparator.Eq; condition.NotModifier = !condition.NotModifier; } // Processed in EnterFilterConditionSubject // condition.CriteriaSubjectPath.AddRange(subjectPath); processingQueryNodeStack.Push(condition); base.EnterFilterCondition(context); }