/** * Returns a MinimizedCondition that represents the condition node after * minimization. */ static MinimizedCondition fromConditionNode(Node n) { checkState(n.getParent() != null); switch (n.getToken()) { case NOT: case AND: case OR: case HOOK: case COMMA: return computeMinimizedCondition(n); default: return unoptimized(n); } }
/** * Remove the passed condition node from the AST, and then return a * MinimizedCondition that represents the condition node after * minimization. */ static MinimizedCondition fromConditionNode(Node n) { switch (n.getType()) { case Token.NOT: case Token.AND: case Token.OR: case Token.HOOK: case Token.COMMA: Node placeholder = swapWithPlaceholderNode(n); return computeMinimizedCondition(n).setPlaceholder(placeholder); default: return unoptimized(n); } }
switch (n.getToken()) { case NOT: { MinimizedCondition subtree = computeMinimizedCondition(n.getFirstChild()); MeasuredNode positive = pickBest( MeasuredNode.addNode(n, subtree.positive), case OR: { Node complementNode = new Node(n.getToken() == Token.AND ? Token.OR : Token.AND).srcref(n); MinimizedCondition leftSubtree = computeMinimizedCondition(n.getFirstChild()); MinimizedCondition rightSubtree = computeMinimizedCondition(n.getLastChild()); MeasuredNode positive = pickBest( MeasuredNode.addNode(n, Node thenNode = cond.getNext(); Node elseNode = thenNode.getNext(); MinimizedCondition thenSubtree = computeMinimizedCondition(thenNode); MinimizedCondition elseSubtree = computeMinimizedCondition(elseNode); MeasuredNode positive = MeasuredNode.addNode( n, MinimizedCondition rhsSubtree = computeMinimizedCondition(lhs.getNext()); MeasuredNode positive = MeasuredNode.addNode( n,
case Token.NOT: { MinimizedCondition subtree = computeMinimizedCondition(n.getFirstChild().detachFromParent()); ImmutableList<MeasuredNode> positiveAsts = ImmutableList.of( subtree.positive.cloneTree().addNot(), int complementType = opType == Token.AND ? Token.OR : Token.AND; MinimizedCondition leftSubtree = computeMinimizedCondition(n.getFirstChild().detachFromParent()); MinimizedCondition rightSubtree = computeMinimizedCondition(n.getLastChild().detachFromParent()); ImmutableList<MeasuredNode> positiveAsts = ImmutableList.of( MeasuredNode.addNode(new Node(opType).srcref(n), Node elseNode = thenNode.getNext(); MinimizedCondition thenSubtree = computeMinimizedCondition(thenNode.detachFromParent()); MinimizedCondition elseSubtree = computeMinimizedCondition(elseNode.detachFromParent()); MeasuredNode posTree = MeasuredNode.addNode( new Node(Token.HOOK, cond.cloneTree()).srcref(n), Node lhs = n.getFirstChild(); MinimizedCondition rhsSubtree = computeMinimizedCondition(lhs.getNext().detachFromParent()); MeasuredNode posTree = MeasuredNode.addNode( new Node(Token.COMMA, lhs.cloneTree()).srcref(n),