Konoeコマンド処理系アーキテクチャ

KONOEで用いられるコマンド言語処理系のアーキテクチャについて解説します。

1.概要

1.1.個別のオブジェクトの命令の定義

KONOEではコマンド言語処理をオブジェクトに対応させて実装します。 KONOEのコマンド言語処理で使われているクラスごとにOrderlyが存在します。 Orderlyはある一つのクラスについてメソッドや命令を知っており、コマンド 文字列が解読された後に、実際にその命令を実行します。

実際にはそれぞれのクラスごとにKonoeOrderlyを継承したOrderlyクラスが 用意されます。Orderlyは次の作業を行います。

それぞれのOrderlyは命令をKonoeCommandProcessorを継承した実行ユニットの 形で保持します。実際の処理はexecuteメソッドで記述します。命令の様式に ついてはKonoeCommandDescriptorで 記述されます。一つ一つの命令は任意の数の引数をとることができます。それらは KonoeArgumentDescriptorで 記述され、CommandDescriptorに登録されます。

1.2.コマンドの解読と実行

個別の命令の実行はOrderlyが受け持つことは上に述べましたが、それを 呼び出す機構を用意する必要があります。そのために、OfficerとCommaderを 導入します。

OfficerはKonoeOfficerを継承して実装されます。 クラスカテゴリーごとにOfficerは用意されます。OfficerはおのおののOrderlyを 保持するとともに、新規にOrderlyを生成するためにメタクラスとして登録済み Orderlyをクラスの数だけ所有します。Officerを管理するCommanderはOfficerに 対して、特定の名前のオブジェクトを保有しているかどうか調べ、もしそれが 見つかれば該当するOrderlyを返します。また、特定の名前のクラスを知って いるかどうかしらべ、知っていればそのクラスのOrderlyを生成します。

CommanderはKonoeCommanderを継承して 実装されます。Commanderへは基本的に一行ずつ命令が渡されていきます。 CommanderはまずKonoeCommandParser オブジェクトを使って文字列を解読します。そののちに、自分の知っている Officerにそのコマンドを問い合わせていきます。

これらの機能は単一の命令文字列を解読実行することです。通常の通訳系の ように流れ制御機能を持たせるにはさらに上部の構造が必要です。 KonoeCommandInterpreterが その役割をします。


[ File = konoe/ui/command/architecture.html ] last modified = 14-Nov-2000
KONOEコラボレーション konoe-req@konoe.kek.jp