POPL:Top
ういかのソースコードについての簡単な説明を予定
ソースコードのダウンロード
ここからういかのソースコードをダウンロードできます。
http://www.limo.fumi2kick.com/chara_lang/uika_src.tgz
ういかのソース仕様
ういかは ruby で書かれています。
実装レイヤーとしては 3層あって、StackLang層、ペルソナ層、インターフェース層となります。
StackLang層
スタック型のインタプリタ言語の実装レイヤー。
基本、ユーザーが眼にすることはない。
*stack_lang.rb
スタック操作のみを行う StackLangLv0 から始まって、そのサブクラスである Lv1, Lv2, Lv3 と徐々に機能が増えていく。
ペルソナ層
キャラクターのペルソナ(人格)を実装するレイヤー。
ユーザーからのリクエストを StackLang層に伝えて、その結果をキャラクターっぽくユーザーへリターンする部位。
無駄なおしゃべりはここで発生する。
プログラム言語のフィルターなのだろうか。
*persona_uika.rb
コマンドリクエスト自体は StackLang の透過に近い。
会話部分が StackLang で書かれている。
インターフェース層
ユーザーインターフェースを提供するレイヤー。
今回は WEB アプリケーションという形態をとっているので CGI。
実際にういかの文章や絵を表示する場所でもある。
*uika.cgi
HTML とペルソナ層を繋ぐ橋渡し。
*prot1.htm
HTML本体のテンプレート。
CGI はこのテンプレート内の特定箇所を書き換えて表示する。
CGI ロジックと HTML テンプレートは分離しているので、(書き換え条件を維持することを条件に)それぞれに編集可能。