org.oklab.compiler.nametable
クラス MethodManager

java.lang.Object
  上位を拡張 org.oklab.compiler.nametable.MethodManager
すべての実装されたインタフェース:
IntermediateLangManager

public class MethodManager
extends java.lang.Object
implements IntermediateLangManager

コンパイル時に、メソッドの中間言語を管理する.メソッドの構文解析はMethod インスタンス生成時に行うが、メソッドの中間言語情報をコンパイラプログラム内で使いたい場合 はこのクラスを利用する.

導入されたバージョン:
1.0
バージョン:
1.0
作成者:
Satoshi Okita satoshiokita@gmail.com

フィールドの概要
private static MethodManager manager
           
private static java.util.Map<java.lang.String,Method> methods
           
 
コンストラクタの概要
private MethodManager()
           
 
メソッドの概要
 void emitCode(java.io.DataOutputStream classfile)
          バイトコードの生成.
static MethodManager getInstance()
          シングルトン・デザインパターンによるインスタンス取得.
 void init()
          初期化.
 void parseAndPut(int returnType, java.lang.String methodName, SourceReader sReader)
          メソッド情報の登録を解析してから行う.
 boolean resolve(Call call)
          マネージャに対象のメソッドが保存されているか確認する.
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

manager

private static MethodManager manager

methods

private static java.util.Map<java.lang.String,Method> methods
コンストラクタの詳細

MethodManager

private MethodManager()
メソッドの詳細

getInstance

public static MethodManager getInstance()
シングルトン・デザインパターンによるインスタンス取得.

戻り値:
MethodManager 唯一のオブジェクト.

init

public void init()
初期化.

定義:
インタフェース IntermediateLangManager 内の init

parseAndPut

public void parseAndPut(int returnType,
                        java.lang.String methodName,
                        SourceReader sReader)
                 throws CompileError
メソッド情報の登録を解析してから行う. 解析処理に問題がなければ、Methodインスタンスが生成されるので、それを このマネージャに登録する.

パラメータ:
returnType - 戻り値の型.
methodName - メソッド名(識別子)
sReader - ソースコードをトークン単位で読むリーダ.
例外:
CompileError

emitCode

public void emitCode(java.io.DataOutputStream classfile)
              throws CompileError
バイトコードの生成.

パラメータ:
classfile - 出力ファイル先.
例外:
CompileError - 出力に失敗した時に発生する.

resolve

public boolean resolve(Call call)
マネージャに対象のメソッドが保存されているか確認する.

パラメータ:
call - 対象のメソッド.
戻り値:
存在する場合はtrue、それ以外はfalse.