public void visit(P_FixedLength pFixedLength) { if ( pFixedLength.getCount() == 0 ) { output.add(node) ; return ; } // P_Mod(path, count, count) // One step. Iterator<Node> iter = eval(graph, node, pFixedLength.getSubPath(), forwardMode) ; long count2 = dec(pFixedLength.getCount()) ; P_FixedLength nextPath = new P_FixedLength(pFixedLength.getSubPath(), count2) ; for ( ; iter.hasNext() ; ) { Node n2 = iter.next() ; Iterator<Node> iter2 = eval(graph, n2, nextPath, forwardMode) ; fill(iter2) ; } }
public void visit(P_NegPropSet pathNotOneOf) { // X !(:a|:b|^:c|^:d) Y = { X !(:a|:b) Y } UNION { Y !(:c|:d) X } if ( pathNotOneOf.getFwdNodes().size() > 0 ) { Iterator<Node> nodes1 = doOneExcludeForwards(pathNotOneOf.getFwdNodes()) ; fill(nodes1) ; } if ( pathNotOneOf.getBwdNodes().size() > 0 ) { Iterator<Node> nodes2 = doOneExcludeBackwards(pathNotOneOf.getBwdNodes()) ; fill(nodes2) ; } }
iter2 = x.iterator() ; fill(iter2) ;
private void doOne(Path path) { Iterator<Node> iter = eval(graph, node, path, forwardMode) ; fill(iter) ; }
public void visit(P_Link pathNode) { Iterator<Node> nodes = doOne(pathNode.getNode()) ; fill(nodes) ; }
public void visit(P_Seq pathSeq) { Path part1 = forwardMode ? pathSeq.getLeft() : pathSeq.getRight() ; Path part2 = forwardMode ? pathSeq.getRight() : pathSeq.getLeft() ; // Feed one side into the other Iterator<Node> iter = eval(graph, node, part1, forwardMode) ; iter = eval(graph, iter, part2, forwardMode) ; fill(iter) ; }
public void visit(P_ReverseLink pathNode) { forwardMode = ! forwardMode ; Iterator<Node> nodes = doOne(pathNode.getNode()) ; forwardMode = ! forwardMode ; fill(nodes) ; }