public SearchArgument.TruthValue evaluate(SearchArgument.TruthValue[] leaves ) { SearchArgument.TruthValue result = null; switch (operator) { case OR: for(ExpressionTree child: children) { result = child.evaluate(leaves).or(result); } return result; case AND: for(ExpressionTree child: children) { result = child.evaluate(leaves).and(result); } return result; case NOT: return children.get(0).evaluate(leaves).not(); case LEAF: return leaves[leaf]; case CONSTANT: return constant; default: throw new IllegalStateException("Unknown operator: " + operator); } }
return pushDownNot(child.getChildren().get(0)); case CONSTANT: return new ExpressionTree(child.getConstant().not()); case AND: root = new ExpressionTree(ExpressionTree.Operator.OR);
return pushDownNot(child.children.get(0)); case CONSTANT: return new ExpressionTree(child.constant.not()); case AND: root = new ExpressionTree(ExpressionTree.Operator.OR);
return pushDownNot(child.getChildren().get(0)); case CONSTANT: return new ExpressionTree(child.getConstant().not()); case AND: root = new ExpressionTree(ExpressionTree.Operator.OR);
public SearchArgument.TruthValue evaluate(SearchArgument.TruthValue[] leaves ) { SearchArgument.TruthValue result = null; switch (operator) { case OR: for(ExpressionTree child: children) { result = child.evaluate(leaves).or(result); } return result; case AND: for(ExpressionTree child: children) { result = child.evaluate(leaves).and(result); } return result; case NOT: return children.get(0).evaluate(leaves).not(); case LEAF: return leaves[leaf]; case CONSTANT: return constant; default: throw new IllegalStateException("Unknown operator: " + operator); } }
TruthValue evaluate(TruthValue[] leaves) { TruthValue result = null; switch (operator) { case OR: for(ExpressionTree child: children) { result = child.evaluate(leaves).or(result); } return result; case AND: for(ExpressionTree child: children) { result = child.evaluate(leaves).and(result); } return result; case NOT: return children.get(0).evaluate(leaves).not(); case LEAF: return leaves[leaf]; case CONSTANT: return constant; default: throw new IllegalStateException("Unknown operator: " + operator); } }