/** Returns true if there is a matched path between node1 and node2. */ public boolean checkReaches(DyckNode node1, DyckNode node2) { return cflEngine.checkReaches(node1.nodeID, node2.nodeID); }
/** Make an edge (_{index} between two nodes. */ public void makeOpenEdge(DyckNode node1, DyckNode node2, int index) { cflEngine.makeOpenEdge(node1.nodeID, node2.nodeID, index); }
public void makeContraCloseEdge(DyckNode node1, DyckNode node2, int index) { cflEngine.makeContraCloseEdge(node1.nodeID, node2.nodeID, index); }
/** Make a subtype edge between two nodes. */ public void makeSubtypeEdge(DyckNode node1, DyckNode node2) { cflEngine.makeSubtypeEdge(node1.nodeID, node2.nodeID); }
/** Marks a node global. */ public void markNodeGlobal(DyckNode node) { cflEngine.markNodeGlobal(node.nodeID); }
/** * Creates an untagged node with the given name. * * <p>Untagged nodes aren't tracked; therefore one cannot ask what nodes an untagged node reaches. * Untagged nodes are more efficient as a result. */ public DyckNode makeUntaggedNode(String name) { long id = cflEngine.makeUntaggedNode(name); return new DyckNode(name, id); }
/** Toggles constraint printing. */ public void printDyckConstraints(boolean value) { cflEngine.printDyckConstraints(value); }
private DyckCFL() { cflEngine = UnsafeDyckCFL.v(); }