/** * Construct a flow graph for the <code>Expr</code> provided, and call <code>dataflow(FlowGraph) * </code>. Is also responsible for calling <code>post(FlowGraph, Term)</code> after <code> * dataflow(FlowGraph)</code> has been called. There is no need to push a CFG onto the stack, as * dataflow is not performed on entry in this analysis. */ protected void dataflow(Expr root) throws SemanticException { // Build the control flow graph. FlowGraph g = new FlowGraph(root, forward); CFGBuilder v = createCFGBuilder(ts, g); v.visitGraph(); dataflow(g); post(g, root); }