coins.flow
インタフェース BBlockSubtreeIterator
- 既知の実装クラスの一覧:
- BBlockHirSubtreeIteratorImpl, BBlockStmtIterator, BBlockSubtreeIteratorImpl
- public interface BBlockSubtreeIterator
BBlockSubtreeIterator traverses top-subtrees in the specified BBlock.
IR tree should not be changed after instanciation of
BBlockSubtreeIteratorImpl until all invocations of
hasNext() and next() are finished.
Traversed top-subtrees are
LabeledStmt, AssignStmt, ExpStmt, ReturnStmt,
IfStmt, LoopStmt, SwitchStmt
Conditional expression in IfStmt and LoopStmt
Case-selection expression in SwitchStmt
Call subtree (irrespective of contained in ExpStmt or Exp)
メソッドの概要 |
boolean |
hasNext()
hasNext |
IR |
next()
next
Get the next top subtree in the basic block indicated by this iterator.
|
next
public IR next()
- next
Get the next top subtree in the basic block indicated by this iterator.
If no one is left, return null.
In HIR, statements other than
LabeledStmt, AssignStmt, ExpStmt, ReturnStmt,
IfStmt, LoopStmt, SwitchStmt //##65
are skipped because other statements does not set/refer data
directly. (Other statements may set/refer data indirectly but
such set/referes can be caught by above statements included
in them. LabeledStmt is picked up to see BBlock boundary.)
Expressions treated as top subtree in BBlockSubtreeIterator are
conditional expressin in IfStmt, LoopStmt,
case-selection expression in SwitchStmt, //##65
call-subtree in Exp. //##65
Conditional expression in IfStmt, LoopStmt
The end of top subtree iteration should be checked not by null of next()
but by hasNext() because there might be a case where the last top
subtree is null (in such case as there remains a sequence of nodes but
no top subtree is remaining).
hasNext
public boolean hasNext()
- hasNext
- 戻り値:
- true if there remains thte next top subtree in the basic block.