Beispiel #1
0
            // The real work happens here in the literal's FixRange
            internal override DomainBoolExpr VisitTerm(DomainTermExpr expression)
            {
                BoolLiteral    literal = BoolExpression.GetBoolLiteral(expression);
                DomainBoolExpr result  = literal.FixRange(expression.Identifier.Range, m_memberDomainMap);

                return(result);
            }
Beispiel #2
0
            internal override StringBuilder VisitTerm(DomainTermExpr expression)
            {
                BoolLiteral literal = BoolExpression.GetBoolLiteral(expression);

                literal.ToCompactString(m_builder);
                return(m_builder);
            }
Beispiel #3
0
            // The real work happends here - the slots are obtained from the literal
            internal override DomainBoolExpr VisitTerm(DomainTermExpr expression)
            {
                BoolLiteral literal = BoolExpression.GetBoolLiteral(expression);

                literal.GetRequiredSlots(m_projectedSlotMap, m_requiredSlots);
                return(expression);
            }
Beispiel #4
0
            // The real work happens here in the literal's RemapBool
            internal override DomainBoolExpr VisitTerm(DomainTermExpr expression)
            {
                BoolLiteral literal    = BoolExpression.GetBoolLiteral(expression);
                BoolLiteral newLiteral = literal.RemapBool(m_remap);

                return(newLiteral.GetDomainBoolExpression(m_memberDomainMap));
            }
Beispiel #5
0
            // Check if the oneOfConst is complete or not
            internal override bool VisitTerm(DomainTermExpr expression)
            {
                BoolLiteral       literal     = BoolExpression.GetBoolLiteral(expression);
                MemberRestriction restriction = literal as MemberRestriction;
                bool result = restriction == null || restriction.IsComplete == true;

                return(result);
            }
Beispiel #6
0
            internal override T_Return VisitTerm(DomainTermExpr expression)
            {
                // If m_skipIsNotNull is true at this point, it means that no ancestor of this
                // node is OR or NOT
                BoolLiteral literal = BoolExpression.GetBoolLiteral(expression);

                return(BooleanLiteralAsCql(literal, m_skipIsNotNull));
            }
Beispiel #7
0
        internal BoolExpression RemapLiterals(Dictionary <BoolLiteral, BoolLiteral> remap)
        {
            var rewriter = new BooleanExpressionTermRewriter <BoolDomainConstraint, BoolDomainConstraint>(
                //                term => remap[BoolExpression.GetBoolLiteral(term)].GetDomainBoolExpression(m_memberDomainMap));
                delegate(DomainTermExpr term)
            {
                BoolLiteral newLiteral;
                return(remap.TryGetValue(BoolExpression.GetBoolLiteral(term), out newLiteral) ?
                       newLiteral.GetDomainBoolExpression(m_memberDomainMap) : term);
            });

            return(new BoolExpression(m_tree.Accept(rewriter), m_memberDomainMap));
        }
Beispiel #8
0
            internal override StringBuilder VisitTerm(DomainTermExpr expression)
            {
                // If m_skipIsNotNull is true at this point, it means that no ancestor of this
                // node is OR or NOT

                BoolLiteral literal = BoolExpression.GetBoolLiteral(expression);

                if (literal is ScalarRestriction || literal is TypeRestriction)
                {
                    return(literal.AsUserString(m_builder, Strings.ViewGen_EntityInstanceToken, m_skipIsNotNull));
                }

                return(literal.AsUserString(m_builder, m_blockAlias, m_skipIsNotNull));
            }
Beispiel #9
0
            internal override StringBuilder VisitNot(DomainNotExpr expression)
            {
                m_skipIsNotNull = false; // Cannot skip in NOTs

                DomainTermExpr termExpr = expression.Child as DomainTermExpr;

                if (termExpr != null)
                {
                    BoolLiteral literal = BoolExpression.GetBoolLiteral(termExpr);
                    return(literal.AsNegatedUserString(m_builder, m_blockAlias, m_skipIsNotNull));
                }
                else
                {
                    m_builder.Append("NOT(");
                    // We do not need the returned StringBuilder -- it is the same as m_builder
                    expression.Child.Accept(this);
                    m_builder.Append(")");
                }
                return(m_builder);
            }