プログラミング言語 NASC

第0章 はじめに


 梨野スクリプトは、「何か」の互換偽AIモジュール・梨野のイベント処理をプログラミングするためのスクリプト言語である。
 梨野の辞書検索機能は、SHIORI/2.2によって規定されたイベントフォーマットで呼び出されるのが基本である。梨野スクリプトの役割は、イベントを「何か」本体の仕様からユーザが独自に拡張することである。

 図1に梨野の内部構造を示す。
 梨野の特徴は、スクリプトエンジンと辞書検索エンジンが完全に分離されている点にある。これにより制御構造とデータを完全に分離することが可能となり、辞書の作成者は制御構造の存在を全く意識する必要は無くなる。
 スクリプトエンジンから辞書検索エンジンに渡されるデータは、SHIORI/2.2仕様と全く同一のため、辞書検索エンジンからはスクリプトエンジンも「何か」本体もまったく区別する必要は無い。


図1

 次に梨野の内部動作を解説する。
 DLLインターフェイスは、「何か」からEventを渡されるとその内容をスクリプトエンジンに渡す。
 スクリプトエンジンは、渡されたEventとそれに付随するReferenceを入力としてスクリプト処理を行う。
 処理の結果、ユーザーイベントが選択された場合はユーザーイベントを、そうでない場合は入力されたイベントをそのまま辞書検索エンジンに渡す。
 この時、明示的に辞書検索が不要の場合は辞書検索を行わずに処理を終了することができる。この場合、スクリプトエンジンはSHIORI/2.2に規定されたステータスコードである 204 No Content をDLLインターフェイスに返す。
 辞書検索エンジンはイベント、またはユーザーイベントを渡されるとイベント内容に従って辞書検索を行い、返答をDLLインターフェイスに返す。
 DLLインターフェイスは受け取った回答を規定のフォーマットに変換し、「何か」に渡す。
 辞書検索エンジンは、インラインイベント機能によってスクリプトエンジンにイベントを通知することができる。スクリプトエンジンは、このインラインイベントをDLLインターフェイスから渡されるイベントと全く等価に扱う。インラインイベントの処理結果は呼び出したインラインイベントの返り値として扱われる。この機能によって、イベントを梨野内部で再帰的に発生させることが可能となる。
 スクリプトエンジンは補助機能として、変数の内容を外部ファイルに保存・読みこみを行う機能や、SAORI/1.0仕様のDLLを呼び出す機能を持つ。これらの機能はインラインイベントと梨野スクリプトを連動させることにより、辞書の作成者が任意に使用することが可能である。

 梨野スクリプトの構文はC言語に良く似た構文となっている。
 しかし、一部実装のコストを下げるためと、使用者の利便性に合わせて独自の仕様を持っている。
 代表的なものは char型変数の扱いである。梨野スクリプトにおいてchar型はC言語におけるchar*型と等価である。ポインタの示すメモリは、スクリプトエンジンによって動的に割り当てられるので、使用者は意識する必要は無い。
 梨野スクリプトではchar型の配列も使用可能であるが、これもC言語におけるchar**型と等価であり、配列要素、配列要素の示すメモリはスクリプトエンジンが動的に確保する。

 梨野スクリプトの詳細な説明は第1章以降で行う。
 最後に付録として、梨野スクリプトの組込み関数のリファレンスと、イベントについて述べる。
 しかし、これではっきりしない部分は梨野のソースリスト及び最新のnasino.dllの動作を最終的なよりどころとしていただきたい。


[index|第1章]
Copyright(c)2002 早坂千尋
Last Updated: Thursday, 23-Sep-2004 15:22:38 JST