coins.ir.hir
クラス BlockStmtImpl

java.lang.Object
  |
  +--coins.ir.hir.HIR_Impl
        |
        +--coins.ir.hir.StmtImpl
              |
              +--coins.ir.hir.BlockStmtImpl
すべての実装インタフェース:
BlockStmt, java.lang.Cloneable, HasStringObject, HIR, HIR0, IR, IR0, Stmt

public class BlockStmtImpl
extends StmtImpl
implements BlockStmt

Block representing a sequence of statements.


フィールドの概要
(パッケージプライベート)  Stmt fLastStmt
           
(パッケージプライベート)  SymTable fLocalSymTable
           
(パッケージプライベート)  boolean fSubpBodyFlag
           
 
クラス coins.ir.hir.StmtImpl から継承したフィールド
fMultiBlock, fNextStmt, fPrevStmt
 
クラス coins.ir.hir.HIR_Impl から継承したフィールド
fAdditionalChild, fChildCount, fChildNode1, fChildNode2, fDbgLevel, fHirAnnex, fOperator, fParentNode, fType, hirRoot, inversionTable, machineParam, sourceLanguage
 
インタフェース coins.ir.hir.HIR から継承したフィールド
OP_CODE_NAME, OP_CODE_NAME_DENSE
 
インタフェース coins.ir.IR から継承したフィールド
OP_INF, OP_LIST, OP_PROG, OP_SUBP_DEF
 
インタフェース coins.ir.hir.HIR0 から継承したフィールド
FLAG_C_PTR, FLAG_CONST_EXP, FLAG_INIT_BLOCK, FLAG_LOOP_WITH_CONDITIONAL_INIT, FLAG_NOCHANGE, FLAG_NONTERMINAL, OP_ADD, OP_ADD_ASSIGN, OP_ADDR, OP_AND, OP_AND_ASSIGN, OP_ARROW, OP_ASM, OP_ASSIGN, OP_BLOCK, OP_CALL, OP_CMP_EQ, OP_CMP_GE, OP_CMP_GT, OP_CMP_LE, OP_CMP_LT, OP_CMP_NE, OP_COMMA, OP_CONST, OP_CONTENTS, OP_CONV, OP_DECAY, OP_DIV, OP_DIV_ASSIGN, OP_ELEM, OP_ENCLOSE, OP_EQ_ZERO, OP_EXP_STMT, OP_EXPLIST, OP_EXPREPEAT, OP_FOR, OP_IF, OP_INDEX, OP_INDEXED_LOOP, OP_JUMP, OP_LABEL, OP_LABEL_DEF, OP_LABELED_STMT, OP_LG_AND, OP_LG_OR, OP_MOD, OP_MOD_ASSIGN, OP_MULT, OP_MULT_ASSIGN, OP_NEG, OP_NOT, OP_NULL, OP_OFFSET, OP_OR, OP_OR_ASSIGN, OP_PARAM, OP_PHI, OP_POST_DECR, OP_POST_INCR, OP_PRE_DECR, OP_PRE_INCR, OP_QUAL, OP_REPEAT, OP_RETURN, OP_SELECT, OP_SEQ, OP_SETDATA, OP_SHIFT_L_ASSIGN, OP_SHIFT_LL, OP_SHIFT_R, OP_SHIFT_R_ASSIGN, OP_SHIFT_RL, OP_SIZEOF, OP_STMT, OP_STMT_UPPER, OP_SUB, OP_SUB_ASSIGN, OP_SUBP, OP_SUBS, OP_SWITCH, OP_SYM, OP_TYPE, OP_UNDECAY, OP_UNTIL, OP_VAR, OP_WHILE, OP_XOR, OP_XOR_ASSIGN
 
コンストラクタの概要
BlockStmtImpl(HirRoot pHirRoot)
          BlockStmt Build block statement that make a sequence of statement to be treated as one statement.
BlockStmtImpl(HirRoot pHirRoot, Stmt pStmtSequence)
           
 
メソッドの概要
 void accept(HirVisitor pVisitor)
          accept Acceptor used in HIR visitor.
 void addBeforeBranchStmt(Stmt pStatement)
          addBeforeBranchStmt (##6) If the last statement of this block is a branch statement (jump, if, switch, call, return), then insert pStatement in front of it.
 Stmt addFirstStmt(Stmt pStatement)
          addFirstStmt Add pStatement as the first statement of this block.
 Stmt addLastStmt(Stmt pStatement)
          addLastStmt Add pStatement as the last statement of this block.
 java.lang.Object clone()
          clone Override Object.clone in HIR.
 Stmt getFirstStmt()
          getFirstStrmt Get the first statement of this block.
 Stmt getLastStmt()
          getLastStmt Get the last statement of this block.
 boolean getSubpBodyFlag()
           
 SymTable getSymTable()
          getSymTable
 void replaceFirstStmt(Stmt pStmt)
           
 void setFirstStmt(Stmt pStmt)
           
 void setLastStmt(Stmt pStmt)
           
 void setSubpBodyFlag(boolean pFlag)
           
 void setSymTable(SymTable pSymTable)
          setSymTable Set pSymTable as the local symbol tabel of this BlockStmt.
 java.lang.String toString()
          toString Get text representation of this node without traversing children.
 
クラス coins.ir.hir.StmtImpl から継承したメソッド
addNextStmt, addNextStmt, adjustMultiBlockFlag, adjustMultiBlockFlag, ancestorControlStmtOfConditionalExp, attachLabel, attachLabelAsFirstOne, backTraceLabeledStmt, combineStmt, combineWithConditionalExp, copyPosition, cutLabelLinkOfStmt, deleteNextStmt, deletePreviousStmt, deleteThisStmt, getBlockStmt, getFileName, getLabel, getLabelDefList, getLabeledStmt, getLineNumber, getNextStmt, getPreviousStmt, getStmtWithLabel, getUpperStmt, insertPreviousStmt, insertPreviousStmt, isBranchStmt, isLoopStmt, isMultiBlock, isolateThisStmt, printLinkage, replaceThisStmtWith, setFileName, setLineNumber, toStringDetail, traceFirstStmt, traceLastStmt
 
クラス coins.ir.hir.HIR_Impl から継承したメソッド
addInf, addrExp, asmStmt, assignStmt, blockStmt, callStmt, checkLinkage, conditionalExp, conditionalExp1, constNode, contains, contentsExp, convExp, copyInfListFrom, copyWithOperands, copyWithOperandsChangingLabels, cutParentLink, cutParentLink, decayExp, elemNode, exp, exp, exp, expList, expRepeat, expStmt, falseNode, fatalError, finishHir, flagsAreAllFalse, forStmt, forStmt, functionExp, getChild, getChild1, getChild2, getChildCount, getChildNumber, getClone, getExpId, getFlag, getFlagBox, getFlowAnalSym, getIndentSpace, getIndex, getInf, getInfList, getInfString, getIrName, getNextNode, getNextNodeSeeingAncestor, getOperator, getParent, getResultOperand, getResultVar, getSourceNode, getSourceNode1, getSourceNode2, getStmtContainingThisNode, getSym, getSymOrExpId, getType, getWork, hirClone, hirIterator, hirList, hirNodeClone, hirSeq, hirSeq, hirSeq, ifStmt, indexedLoopStmt, indexedLoopStmt, infStmt, infStmt, intConstNode, intConstNode, irList, irList, isEmpty, isHIR, isLIR, isSameAs, isStmt, isSym, isTerminal, isTree, isTree, jumpStmt, labelDef, labeledStmt, labelNode, nullNode, nullStmt, offsetConstNode, phiExp, pointedExp, print, print, program, qualifiedExp, removeInf, repeatStmt, repeatStmt, replaceOperator, replaceResultOperand, replaceResultVar, replaceSource, replaceSource1, replaceSource2, replaceThisNode, returnStmt, returnStmt, setChild, setChild1, setChild2, setChildren, setChildren, setChildren, setChildren, setDataStmt, setFlag, setIndex, setIndexNumberToAllNodes, setIndexNumberToAllNodes, setIndexNumberToAllNodes2, setParameters, setParent, setType, setWork, severeError, sizeofExp, sizeofExp, slightError, subpDefinition, subpDefinition, subpDefinition, subpIterator, subpNode, subscriptedExp, subscriptedExp, switchStmt, symNode, toStringShort, toStringWithChildren, trueNode, typeNode, undecayExp, undecayExp, undecayExp, undecayExp, varNode, warinig, whileStmt, whileStmt, withInf
 
クラス java.lang.Object から継承したメソッド
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
インタフェース coins.ir.hir.Stmt から継承したメソッド
addNextStmt, ancestorControlStmtOfConditionalExp, attachLabel, attachLabelAsFirstOne, combineStmt, combineWithConditionalExp, copyPosition, cutLabelLinkOfStmt, deleteThisStmt, getBlockStmt, getFileName, getLabel, getLabelDefList, getLabeledStmt, getLineNumber, getPreviousStmt, getUpperStmt, insertPreviousStmt, insertPreviousStmt, isBranchStmt, isMultiBlock, isolateThisStmt, replaceThisStmtWith, setFileName, setLineNumber
 
インタフェース coins.ir.hir.HIR から継承したメソッド
addrExp, asmStmt, checkLinkage, conditionalExp, contains, copyInfListFrom, cutParentLink, exp, expList, expRepeat, forStmt, getExpId, getFlowAnalSym, getIndentSpace, getInfString, getIrName, getSourceNode, getSourceNode1, getSourceNode2, getSymOrExpId, getWork, hirNodeClone, hirSeq, hirSeq, indexedLoopStmt, indexedLoopStmt, infStmt, infStmt, intConstNode, irList, isEmpty, isStmt, isTree, nullNode, nullStmt, offsetConstNode, phiExp, repeatStmt, replaceSource, replaceSource1, replaceSource2, returnStmt, setChild1, setChild2, setChildren, setChildren, setDataStmt, setIndex, setIndexNumberToAllNodes, setParent, setType, setWork, subpDefinition, subpIterator, subscriptedExp, toStringDetail, toStringShort, toStringWithChildren, undecayExp, undecayExp, undecayExp, whileStmt
 
インタフェース coins.ir.IR から継承したメソッド
addInf, getChild1, getChild2, getInf, getInfList, getParent, getSym, print, print, removeInf
 
インタフェース coins.ir.IR0 から継承したメソッド
getChild, getChildCount, getIndex, getOperator, setChild
 
インタフェース coins.ir.hir.HIR0 から継承したメソッド
assignStmt, blockStmt, callStmt, constNode, contentsExp, convExp, copyWithOperands, copyWithOperandsChangingLabels, decayExp, elemNode, exp, exp, expStmt, falseNode, finishHir, forStmt, functionExp, getChildNumber, getFlag, getFlagBox, getNextStmt, getStmtContainingThisNode, getType, hirClone, hirIterator, hirList, hirSeq, ifStmt, intConstNode, irList, isSameAs, jumpStmt, labelDef, labeledStmt, labelNode, pointedExp, print, program, qualifiedExp, repeatStmt, replaceThisNode, returnStmt, setFlag, setIndexNumberToAllNodes, sizeofExp, sizeofExp, subpDefinition, subpNode, subscriptedExp, switchStmt, symNode, trueNode, undecayExp, varNode, whileStmt
 

フィールドの詳細

fLocalSymTable

SymTable fLocalSymTable

fLastStmt

Stmt fLastStmt

fSubpBodyFlag

boolean fSubpBodyFlag
コンストラクタの詳細

BlockStmtImpl

public BlockStmtImpl(HirRoot pHirRoot)
BlockStmt Build block statement that make a sequence of statement to be treated as one statement. pStmtSequence sequence of statements to be included in the block. It may be null at the creation of block statement if statements are to be added by AddFirstStmt, AddNextStmt of HIR_interface. Return the subtree of the built statement with statement body operator opBlock.

パラメータ:
pHirRoot - instance of HirRoot common to all HIR nodes.

BlockStmtImpl

public BlockStmtImpl(HirRoot pHirRoot,
                     Stmt pStmtSequence)
メソッドの詳細

getSymTable

public SymTable getSymTable()
インタフェース BlockStmt の記述:
getSymTable

定義:
インタフェース BlockStmt 内の getSymTable
戻り値:
the symbol table containing symbols locally declared in this BlockStmt. If there is no local symbols declared in this block, then the symbol table may be null.

setSymTable

public void setSymTable(SymTable pSymTable)
インタフェース BlockStmt の記述:
setSymTable Set pSymTable as the local symbol tabel of this BlockStmt.

定義:
インタフェース BlockStmt 内の setSymTable
パラメータ:
pSymTable - local symbol tabel to be attached to this block.

addFirstStmt

public Stmt addFirstStmt(Stmt pStatement)
インタフェース BlockStmt の記述:
addFirstStmt
  Add pStatement as the first statement of this block.
  If this block has already has several statements, this method inserts
  pStatement in front of the existing statements.
  If pStatement is null, no statement is added and the current
  first statement is returned.
  This method  changes statement linkages (linkages
  get by getNextStmt(), getPreviousStmt(), getParent()). If these
  linkages are used later, then make a copy (by copyWithOperands())
  and use the copy as the parameter.

定義:
インタフェース BlockStmt 内の addFirstStmt
パラメータ:
pStatement - Statement that was added.
戻り値:
the new first statement of the block.

addLastStmt

public Stmt addLastStmt(Stmt pStatement)
インタフェース BlockStmt の記述:
addLastStmt
  Add pStatement as the last statement of this block.
  If this block has no statement, this method does the same
  operation as that of addFirstStmt.
  Successive call of addlastStmt add a sequence of statements
  to this block in the order of addition.
  If this block has already labeled statement as the last statement
  where the label of the last statement is either RETURN_POINT_LABEL
  or LOOP_STEP_LABEL, then pStatement is inserted in front of the
  last labeled statement.
  If pStatement is null, no statement is added and the current
  last statement is returned.
  This method  changes statement linkages (linkages
  get by getNextStmt(), getPreviousStmt(), getParent()). If these
  linkages are used later, then make a copy (by copyWithOperands())
  and use the copy as the parameter.

定義:
インタフェース BlockStmt 内の addLastStmt
パラメータ:
pStatement - Statement that was added.
戻り値:
the new last statement of the block.

addBeforeBranchStmt

public void addBeforeBranchStmt(Stmt pStatement)
インタフェース BlockStmt の記述:
addBeforeBranchStmt (##6) If the last statement of this block is a branch statement (jump, if, switch, call, return), then insert pStatement in front of it. If the last statement is not a branch, then add pStatement as the last statement of this block. This method changes statement linkages (linkages get by getNextStmt(), getPreviousStmt(), getParent()). If these linkages are used later, then make a copy (by copyWithOperands()) and use the copy as the parameter.

定義:
インタフェース BlockStmt 内の addBeforeBranchStmt
パラメータ:
pStatement - Statement that was added.

getFirstStmt

public Stmt getFirstStmt()
インタフェース BlockStmt の記述:
getFirstStrmt
  Get the first statement of this block.
  If this block has no statement, then null is returned.
  After getting the first statement, successive call of
  getNextStmt() will traverse all statements in this block.
    for (Stmt lStmt = lBBlock.getFirstStmt(); lStmt != null;
         lStmt = lStmt.getNextStmt()) { ...... }

定義:
インタフェース BlockStmt 内の getFirstStmt
戻り値:
the first statement of this block.

getLastStmt

public Stmt getLastStmt()
インタフェース BlockStmt の記述:
getLastStmt Get the last statement of this block. If this block has no statement, then null is returned.

定義:
インタフェース BlockStmt 内の getLastStmt
戻り値:
the last statement of this block.

setFirstStmt

public void setFirstStmt(Stmt pStmt)

setLastStmt

public void setLastStmt(Stmt pStmt)

replaceFirstStmt

public void replaceFirstStmt(Stmt pStmt)

getSubpBodyFlag

public boolean getSubpBodyFlag()
定義:
インタフェース BlockStmt 内の getSubpBodyFlag

setSubpBodyFlag

public void setSubpBodyFlag(boolean pFlag)
定義:
インタフェース BlockStmt 内の setSubpBodyFlag

clone

public java.lang.Object clone()
                       throws java.lang.CloneNotSupportedException
クラス HIR_Impl の記述:
clone Override Object.clone in HIR.

オーバーライド:
クラス StmtImpl 内の clone
戻り値:
cloned HIR object.
例外:
java.lang.CloneNotSupportedException

accept

public void accept(HirVisitor pVisitor)
インタフェース HIR0 の記述:
accept Acceptor used in HIR visitor. See HirVisitor, HirVisitorModel1, HirVisitormodel2.

定義:
インタフェース HIR0 内の accept
オーバーライド:
クラス HIR_Impl 内の accept
パラメータ:
pVisitor - HirVisitor

toString

public java.lang.String toString()
インタフェース HIR の記述:
toString Get text representation of this node without traversing children.

定義:
インタフェース HIR 内の toString
オーバーライド:
クラス HIR_Impl 内の toString
戻り値:
the text string representing the node including operation name, type, node index, and symbol name if this represents a symbol or constant.