Package exc.block


履歴:
このパッケージは、tree構造を持つXcodeの文などを解析・コード変換するためのデー タ構造を表現するクラスを含む。

クラス階層:


Block (exc.block.Block)

制御構造を表現するブロックのsuper class。 サブクラスに対するabstract classとして用いる(実際にabstract classには なっていない)。それぞれのブロックの生成には、Bconsクラスを利用してもよ い。PropObjectのsubclassで、Proplistが使える。

SimpleBlock (exc.block.SimpleBlock)

Bodyを持たない単純なBlockを表現するクラス。

IfBlock (exc.block.IfBlock)

If文を表現するクラス。Opcode()は、Xconde.IF_STATEMENTになっている。 then部とelse部の2つのbodyを持つ。

CondBlock (exc.block.CondBlock)

条件部とbodyを持つBlockを表現するクラス。 Opcode()は、Xcode.WHILE_STATEMENT, Xcode.DO_STATEMENT, Xcode.SWITCH_STATEMENT である。

ForBlock (exc.block.ForBlock)

For文を表現するブロック。初期化文、条件部、繰り返し部の3つのBasic Blockをもつ。Opcode()はXcode.FOR_STATEMENTである。 CondBlockのサブクラス。正規化されたfor文とは、 一つの整数型のループ変数varに関して、以下のような形に変形できるループで ある。
for(var = lb; v relop up; v += step) body
だだし、relopは<, <=, >, >= のいずれか。Cannonialize()で正規化する。 正規化できたループの場合は、isCannonnicalize()でtrueを返す。

LabelBlock (exc.block.LabelBlock)

ラベルとなるXobjectをもつブロックを表現する。 Opcodeが、GOTO_STATEMENT,STATEMENT_LABELの場合は、そのXobjectは(IDENT label)で、CASE_LABELの場合は、整数値のXobjectとなる。

CompoundBlock (exc.block.CompoundBlock)

Compound 文に対するブロック。BasicBlockはない(null)。

PragmaBlock (exc.block.PragmaBlock)

OpenMPなどのPragmaに対するブロック。CompoundBlockのサブクラス。

FunctionBlock (exc.block.FunctionBlock)

関数のブロックを表現するBlock。CompoundBlockのサブクラス。

BlockList (exc.block.BlockList)

ブロックの並びを表現するクラス。ブロックの本体(body)に使う。

Bcons (exc.block.Bcons)

Blockを作るためのコンストラクタを提供するクラス。 全て、staticのメンバー関数となっている。

BlockIterator (exc.block.BlockIterator)

ブロックの構造をトラバースするためのイタレータのためのabstract class。 サブクラスとして、topdownBlockIteratorとbottomBlockIteratorがある。

topdownBlockIterator (exc.block.topdownBlockIterator)

ブロックをトップダウンにトラバースするイタレータ。BlockIteratorのサブ クラス。

bottomBlockIterator (exc.block.bottomupBlockIterator)

ブロックをボトムアップにトラバースするイタレータ。BlockIteratorのサブ クラス。

BlockOutputStream (exc.block.BlockOutputStream)

デバックのためにブロックをインデントしてプリントアウトするためのクラス。 XobjectOutputStreamのサブクラス。

BasicBlock (exc.block.BasicBlock)

制御文を含まない文の列(基本ブロック)を表現するクラス。 PropObjectのsubclassで、Proplistが使える。

Statement (exc.block.Statement)

Basic Block内の文を表現するクラス。文に関するイタレータとして用いる。

BasicBlockIterator (exc.block.BasicBlockIterator)

Block内のBasic Blockをトラバースするためのイタレータ。