Example #1
0
 /**
  * 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);
 }