Beispiel #1
0
 @Override
 public <T> List<T> acceptCFG(CFGBuilder<?> v, List<T> succs) {
   // not sure
   v.visitCFG(consequent, this, EXIT);
   if (alternative != null) v.visitCFG(alternative, this, EXIT);
   return succs;
 }
Beispiel #2
0
 public <S> List<S> acceptCFG(CFGBuilder v, List<S> succs) {
   if (result == null) {
     v.visitCFGList(statements, this, EXIT);
   } else {
     v.visitCFGList(statements, result, ENTRY);
     v.visitCFG(result, this, EXIT);
   }
   return succs;
 }
Beispiel #3
0
  @Override
  protected void acceptCFGOpAssign(CFGBuilder<?> v) {
    /*
    Local l = (Local)left();

    // l OP= e: visit l -> e -> (l OP= e)
    v.visitThrow(l);
    v.edge(l, right().entry());
    v.visitCFG(right(), this);
    */

    v.visitCFG(left(), right(), ENTRY);
    v.visitCFG(right(), this, EXIT);
  }
Beispiel #4
0
  public List acceptCFG(CFGBuilder v, List succs) {
    v.visitCFGList(inits, (cond != null ? cond.entry() : body.entry()));

    if (cond != null) {
      if (condIsConstantTrue()) {
        v.visitCFG(cond, body.entry());
      } else {
        v.visitCFG(cond, FlowGraph.EDGE_KEY_TRUE, body.entry(), FlowGraph.EDGE_KEY_FALSE, this);
      }
    }

    v.push(this).visitCFG(body, continueTarget());
    v.visitCFGList(iters, (cond != null ? cond.entry() : body.entry()));

    return succs;
  }
Beispiel #5
0
 @Override
 protected void acceptCFGAssign(CFGBuilder<?> v) {
   // do not visit left()
   // l = e: visit e -> (l = e)
   v.visitCFG(right(), this, EXIT);
 }
 public List<Term> acceptCFG(CFGBuilder v, List<Term> succs) {
   v.visitCFG(call, this, EXIT);
   return succs;
 }
Beispiel #7
0
 public List acceptCFG(CFGBuilder v, List succs) {
   v.visitCFG(expr, this);
   return succs;
 }