Пример #1
0
        public override Node VisitQueryQuantifier(QueryQuantifier qq)
        {
            base.VisitQueryQuantifier(qq);
            Composer c = this.GetComposer(qq.Expression);

            return(this.Compose(qq, c));
        }
Пример #2
0
 public SubQueryPredicate(Expr operand
                          , PredicateOperator operater
                          , QueryQuantifier quantifier
                          , IQuery query)
 {
     this.Comments   = new Comments(4);
     this.Operand    = operand;
     this.Operator   = operater;
     this.Quantifier = quantifier;
     this.Query      = query;
 }
Пример #3
0
 internal SubQueryPredicate(Expr operand
                            , PredicateOperator operater
                            , QueryQuantifier quantifier
                            , IQuery query
                            , Comments comments)
 {
     this.Comments   = comments;
     this.Operand    = operand;
     this.Operator   = operater;
     this.Quantifier = quantifier;
     this.Query      = query;
 }
Пример #4
0
 public virtual Node VisitQueryQuantifier(QueryQuantifier qq, QueryQuantifier changes, QueryQuantifier deletions, QueryQuantifier insertions){
   this.UpdateSourceContext(qq, changes);
   if (qq == null) return changes;
   if (changes != null){
     if (deletions == null || insertions == null)
       Debug.Assert(false);
     else{
     }
   }else if (deletions != null)
     return null;
   return qq;
 }
Пример #5
0
    public virtual Differences VisitQueryQuantifier(QueryQuantifier qq1, QueryQuantifier qq2){
      Differences differences = new Differences(qq1, qq2);
      if (qq1 == null || qq2 == null){
        if (qq1 != qq2) differences.NumberOfDifferences++; else differences.NumberOfSimilarities++;
        return differences;
      }
      QueryQuantifier changes = (QueryQuantifier)qq2.Clone();
      QueryQuantifier deletions = (QueryQuantifier)qq2.Clone();
      QueryQuantifier insertions = (QueryQuantifier)qq2.Clone();

      //      qq1.Expression;
      //      qq1.Target;

      if (differences.NumberOfDifferences == 0){
        differences.Changes = null;
        differences.Deletions = null;
        differences.Insertions = null;
      }else{
        differences.Changes = changes;
        differences.Deletions = deletions;
        differences.Insertions = insertions;
      }
      return differences;
    }
Пример #6
0
 public virtual Node VisitQueryQuantifier(QueryQuantifier qq){
   if (qq == null) return null;
   qq.Expression = this.VisitExpression(qq.Expression);
   return qq;
 }
Пример #7
0
 public override Node VisitQueryQuantifier(QueryQuantifier qq) {
   if (qq == null) return null;
   QueryQuantifiedExpression savedQQE = this.currentQuantifiedExpression;
   this.currentQuantifiedExpression = null;
   qq.Expression = this.VisitExpression(qq.Expression);
   this.currentQuantifiedExpression = savedQQE;
   if (qq.Expression == null || qq.Expression.Type == null) return null;
   Cardinality card = this.typeSystem.GetCardinality(qq.Expression, this.TypeViewer);
   if (card != Cardinality.OneOrMore && card != Cardinality.ZeroOrMore) {
     this.HandleError(qq.Expression, Error.QueryNotStream);
     return null;
   }
   if (this.currentQuantifiedExpression == null) {
     this.HandleError(qq, Error.QueryBadQuantifier);
     return null;
   }
   if (this.currentQuantifiedExpression.Left != qq &&
     this.currentQuantifiedExpression.Right != qq) {
     this.HandleError(qq, Error.QueryBadQuantifier);
     return null;
   }
   if (qq.Type == null) return null;
   return qq;
 }
Пример #8
0
 public override Node VisitQueryQuantifier(QueryQuantifier qq){
   if (qq == null) return null;
   qq.Expression = this.VisitExpression(qq.Expression);
   if (qq.Expression != null && qq.Expression.Type != null){
     qq.Type = this.typeSystem.GetStreamElementType(qq.Expression, this.TypeViewer);
   }
   return qq;
 }
Пример #9
0
 public virtual void VisitQueryQuantifier(QueryQuantifier qq){
   if (qq == null) return;
   this.VisitExpression(qq.Expression);
 }
        public override void ExitSubQueryPredicate(MiniSqlParserParser.SubQueryPredicateContext context)
        {
            var comments = this.GetComments(context);

            var query = (IQuery)_stack.Pop();

            var             opType2    = context.op2.Type;
            QueryQuantifier quantifier = QueryQuantifier.Any;

            if (opType2 == MiniSqlParserLexer.K_ANY)
            {
                quantifier = QueryQuantifier.Any;
            }
            else if (opType2 == MiniSqlParserLexer.K_SOME)
            {
                quantifier = QueryQuantifier.Some;
            }
            else if (opType2 == MiniSqlParserLexer.K_ALL)
            {
                quantifier = QueryQuantifier.All;
            }
            else
            {
                throw new CannotBuildASTException("Undifined QueryQuantifier is used");
            }

            var opType1 = context.op1.Type;
            PredicateOperator operater = PredicateOperator.Equal;

            if (opType1 == MiniSqlParserLexer.ASSIGN)
            {
                operater = PredicateOperator.Equal;
            }
            else if (opType1 == MiniSqlParserLexer.NOT_EQ2)
            {
                operater = PredicateOperator.NotEqual;
            }
            else if (opType1 == MiniSqlParserLexer.LT)
            {
                operater = PredicateOperator.Less;
            }
            else if (opType1 == MiniSqlParserLexer.LT_EQ)
            {
                operater = PredicateOperator.LessOrEqual;
            }
            else if (opType1 == MiniSqlParserLexer.GT)
            {
                operater = PredicateOperator.Greater;
            }
            else if (opType1 == MiniSqlParserLexer.GT_EQ)
            {
                operater = PredicateOperator.GreaterOrEqual;
            }
            else if (opType1 == MiniSqlParserLexer.EQ)
            {
                operater = PredicateOperator.Equal2;
            }
            else if (opType1 == MiniSqlParserLexer.NOT_EQ1)
            {
                operater = PredicateOperator.NotEqual2;
            }
            else
            {
                throw new CannotBuildASTException("Undifined PredicateOperator is used");
            }

            var operand = (Expr)_stack.Pop();

            var node = new SubQueryPredicate(operand, operater, quantifier, query, comments);

            _stack.Push(node);
        }
Пример #11
0
 public override Node VisitQueryQuantifier(QueryQuantifier qq){
   if (qq == null) return null;
   return base.VisitQueryQuantifier((QueryQuantifier)qq.Clone());
 }
Пример #12
0
 public virtual Node VisitQueryQuantifier(QueryQuantifier qq1, QueryQuantifier qq2){
   if (qq1 == null) return null;
   if (qq2 == null)
     qq1.Expression = this.VisitExpression(qq1.Expression, null);
   else
     qq1.Expression = this.VisitExpression(qq1.Expression, qq2.Expression);
   return qq1;
 }
Пример #13
0
 public override Node VisitQueryQuantifier(QueryQuantifier qq) {
   return qq.Target;
 }
Пример #14
0
 public override Node VisitQueryQuantifier(QueryQuantifier qq) {
   base.VisitQueryQuantifier(qq);
   Composer c = this.GetComposer(qq.Expression);
   return this.Compose(qq, c);
 }
Пример #15
0
 public EventingVisitor(Action<QueryQuantifier> visitQueryQuantifier) { VisitedQueryQuantifier += visitQueryQuantifier; } public event Action<QueryQuantifier> VisitedQueryQuantifier; public override Node VisitQueryQuantifier(QueryQuantifier qq) { if (VisitedQueryQuantifier != null) VisitedQueryQuantifier(qq); return base.VisitQueryQuantifier(qq); }