Beispiel #1
0
    Expression ESolver::CreateOrExpression(const vector<Expression>& Disjuncts)
    {
        if(Disjuncts.size() == 0) {
            return Expression::NullObject;
        }
        if(Disjuncts.size() == 1) {
            return Disjuncts[0];
        }

        Expression Current = CreateOrExpression(Disjuncts[0], Disjuncts[1]);
        uint32 NumDisjuncts = Disjuncts.size();
        for(uint32 i = 2; i < NumDisjuncts; ++i) {
            Current = CreateOrExpression(Current, Disjuncts[i]);
        }
        return CreateExpression("or", Current->GetChildren());
    }
Beispiel #2
0
    Expression ESolver::CreateAndExpression(const vector<Expression>& Conjuncts)
    {
        if(Conjuncts.size() == 0) {
            return Expression::NullObject;
        }
        if(Conjuncts.size() == 1) {
            return Conjuncts[0];
        }

        Expression Current = CreateAndExpression(Conjuncts[0], Conjuncts[1]);
        uint32 NumConjuncts = Conjuncts.size();
        for(uint32 i = 2; i < NumConjuncts; ++i) {
            Current = CreateAndExpression(Current, Conjuncts[i]);
        }
        return CreateExpression("and", Current->GetChildren());
    }