tgl.compiler
クラス SymbolTable

java.lang.Object
  上位を拡張 tgl.compiler.SymbolTable

 class SymbolTable
extends java.lang.Object

記号表のクラス。グローバル変数と手続きを保存するための大域的な記号表 globalTable と、局所変数と仮引数を保存するための局所的な記号表 localTable の2つを内部にもつ。


コンストラクタの概要
SymbolTable(CompileErrorHandler handler)
          記号表のインスタンスを作成する。
 
メソッドの概要
(package private)  ProcEntry addCommand(java.lang.String name, int paramNum)
          コマンドを記号表に globalTable に登録する。
(package private)  ProcEntry addFunction(java.lang.String name, int paramNum)
          関数を記号表 globalTable に登録する。
(package private)  VarEntry addGlobalVariable(java.lang.String name, int loc)
          グローバル変数を記号表 globalTable に登録する。
(package private)  VarEntry addLocalVariable(java.lang.String name)
          局所変数を記号表 localTable に登録する。
(package private)  VarEntry addParameter(java.lang.String name)
          仮引数を記号表 localTable に登録する。
(package private)  void checkProgram()
          プログラムのコンパイル終了後に、宣言済のユーザ手続きが すべて定義されたかどうかを調べる。
(package private)  ProcEntry defineCommand(java.lang.String name)
          コマンドの定義から得られる情報を記号表に登録する。
(package private)  ProcEntry defineFunction(java.lang.String name)
          関数の定義から得られる情報を記号表に登録する。
(package private)  ProcEntry findCommand(java.lang.String name)
          呼び出しているコマンドのエントリを記号表から見つける。
(package private)  ProcEntry findFunction(java.lang.String name)
          呼び出している関数のエントリを記号表から見つける。
(package private)  VarEntry findVariable(java.lang.String name)
          使用している変数のエントリを記号表から見つける。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

SymbolTable

SymbolTable(CompileErrorHandler handler)
      throws java.lang.Exception
記号表のインスタンスを作成する。

パラメータ:
handler - コンパイラのためのエラーハンドラ
例外:
java.lang.Exception
メソッドの詳細

checkProgram

void checkProgram()
            throws java.lang.Exception
プログラムのコンパイル終了後に、宣言済のユーザ手続きが すべて定義されたかどうかを調べる。 宣言されたのに定義されていない関数があったらエラーを報告する。

例外:
java.lang.Exception

addGlobalVariable

VarEntry addGlobalVariable(java.lang.String name,
                           int loc)
                     throws java.lang.Exception
グローバル変数を記号表 globalTable に登録する。

パラメータ:
name - グローバル変数名
loc - 変数を割り当てる領域の静的データ領域中の番地
戻り値:
登録したグローバル変数のための変数エントリ
例外:
java.lang.Exception

addLocalVariable

VarEntry addLocalVariable(java.lang.String name)
                    throws java.lang.Exception
局所変数を記号表 localTable に登録する。

パラメータ:
name - 局所変数名
戻り値:
登録した局所変数のための変数エントリ
例外:
java.lang.Exception

addParameter

VarEntry addParameter(java.lang.String name)
                throws java.lang.Exception
仮引数を記号表 localTable に登録する。

パラメータ:
name - 仮引数名
戻り値:
登録した仮引数のための変数エントリ
例外:
java.lang.Exception

addCommand

ProcEntry addCommand(java.lang.String name,
                     int paramNum)
               throws java.lang.Exception
コマンドを記号表に globalTable に登録する。実際の処理はプライベートな メソッド addProcedure で行われる。

パラメータ:
name - コマンド名
paramNum - 引数の個数
戻り値:
登録したコマンドの手続きエントリ
例外:
java.lang.Exception

addFunction

ProcEntry addFunction(java.lang.String name,
                      int paramNum)
                throws java.lang.Exception
関数を記号表 globalTable に登録する。実際の処理はプライベートな メソッド addProcedure で行われる。

パラメータ:
name - 関数名
paramNum - 引数の個数
戻り値:
登録した関数の手続きエントリ
例外:
java.lang.Exception

defineCommand

ProcEntry defineCommand(java.lang.String name)
                  throws java.lang.Exception
コマンドの定義から得られる情報を記号表に登録する。実際の処理は プライベートなメソッド defineProcedure で行われる。

パラメータ:
name - コマンド名
戻り値:
コマンドの情報をもつ手続きエントリ
例外:
java.lang.Exception

defineFunction

ProcEntry defineFunction(java.lang.String name)
                   throws java.lang.Exception
関数の定義から得られる情報を記号表に登録する。実際の処理は プライベートなメソッド defineProcedure で行われる。

パラメータ:
name - 関数名
戻り値:
関数の情報をもつ手続きエントリ
例外:
java.lang.Exception

findVariable

VarEntry findVariable(java.lang.String name)
                throws java.lang.Exception
使用している変数のエントリを記号表から見つける。エントリがないか、 同じ名前の手続きエントリがあるならエラーを報告する。

パラメータ:
name - 変数名
戻り値:
変数エントリ
例外:
java.lang.Exception

findFunction

ProcEntry findFunction(java.lang.String name)
                 throws java.lang.Exception
呼び出している関数のエントリを記号表から見つける。エントリがないか、 同じ名前の変数エントリがあるか、手続きがコマンドとして宣言されている ならエラーを報告する。実際の処理は、プライベートなメソッド findProcedure に より実行される。

パラメータ:
name - 関数名
戻り値:
関数のエントリ
例外:
java.lang.Exception

findCommand

ProcEntry findCommand(java.lang.String name)
                throws java.lang.Exception
呼び出しているコマンドのエントリを記号表から見つける。エントリがないか、 同じ名前の変数エントリがあるか、手続きが関数として宣言されている ならエラーを報告する。実際の処理は、プライベートなメソッド findProcedure に より実行される。

パラメータ:
name - コマンド名
戻り値:
コマンドのエントリ
例外:
java.lang.Exception