TSakuraScriptFountain

概要

TSsParserと協調して動く、TEditor用文字列解析パーサです。

TEditorは本田勝彦氏作成のエディタコンポーネントで、たとえばDelphiのソースコードエディタ部分のようなものが簡単に実装できます。詳細は http://member.nifty.ne.jp/~katsuhiko/ を参照してください。

TSakuraScriptFountain を使うと、自動で構文が強調表示されるさくらスクリプトエディタが、簡単に実装できます。

各種の栞の実装においてユーザが利用する、様々なさくらスクリプト仕様外のマークアップには対応していません。(適当にこのコンポーネントを継承して使う必要があります)

基本的な使い方

TSsParserをフォームに貼り付けます。最低限、MetaPattern, TagPatternの両方を定義する必要があります。EscapeInvalidMeta, LeaveEscapeの各プロパティの設定は、どのようにしていても問題ありません。

TSakuraScriptFountainをフォームに貼り付けます。オブジェクトインスペクタで、SsParserプロパティに、先ほど貼り付けたSsParserを選択します。また、色やフォントに関する各種プロパティを編集します。

TEditorをフォームに貼り付けます。オブジェクトインスペクタで、Fountainプロパティに、先ほど貼り付けたSakuraScriptFountainを選択します。

アプリケーションを実行します。

注意

TSsParserを内部で利用しますが、InputStringなどの中身は変更されません。他の目的でフォームに TSsParser を貼り付けて利用している場合には、TEditor.Fountain としてそれを参照しても、既存のコードへの影響はありません。

SakuraScriptFountainのタグの解釈はTSsParserに依存します。TagPatternをろくに設定せず、\hや\uが含まれていない、といった状況のままでは一切の色分けがされません。

\_sタグ周りについて

TSakuraScriptFountainでは、\_sタグは「囲むタグ」であると解釈しており、\_sによるシンクロナイズセッションは、\0\1によるスコープより優先順位が高く 、かつ独立した一種の状態である、と解釈します。つまり、シンクロナイズセッション状態は、\0\1では解除されず、また\_s内において\0\1タグが存在した場合、それらは単純に「シンクロナイズセッションを出た後のスコープを決定する」だけです。

この解釈は2003年6月現在のmateria、SSP、CROW(と、他の多くのSakuraScript処理系)の各最新版に準拠となっていますが、一部の古い処理系では、\0\1によってシンクロナイズセッションの状態に影響を与える挙動をしているものがあります。

また、2003年6月現在最新版であるmateria583では、シンクロナイズセッション中に\0\1が現れた場合に誤動作する、シンクロナイズセッションの明示的な解除後にスコープが不定となる、といったバグが存在します。(これらは明らかにバグと思われる挙動であるためTSakuraScriptFountainでこれらの動作を再現する予定はありません)

リファレンス - プロパティ

property Scope0Color: TFountainColor read FScope0Color write SetScope0Color;
property Scope1Color: TFountainColor read FScope1Color write SetScope1Color;
それぞれ、スコープ0(本体側;\h側;\0側)、スコープ1(うにゅう側;\u側;\1側)での会話文字列の色を指定します。
property TagColor: TFountainColor read FTagColor write SetTagColor;
タグの色を指定します
property TagErrorColor: TFountainColor read FTagErrorColor write SetTagErrorColor;
タグエラーと判断された場合の色を指定します
property MetaWordColor: TFountainColor read FMetaWordColor write SetMetaWordColor;
メタ文字列の色を指定します
property SynchronizedColor: TFountainColor read FSynchronizedColor write SetSynchronizedColor;
シンクロナイズドセッション(\_s)中の色を指定します
property SakuraScriptParser: TSsParser read FSakuraScriptParser write SetSakuraScriptParser;
SsParserのインスタンスを指定します。この指定は、正しくスクリプトを解釈させるために必須です。
property ChangeScopeBy01: boolean read FChangeScopeBy01 write SetChangeScopeBy01 default true;
\0, \1タグをスコープの変更命令と解釈し、色分けを行うかどうかを指定します。デフォルトではtrueです。(「何か(仮)」時代 の古いスクリプト仕様では、これらのタグが全く別の意味を持つ命令であったことを念のため考慮してください)
property ChangeScopeByHU: boolean read FChangeScopeByHU write SetChangeScopeByHU default true;
\h, \uタグをスコープの変更命令と解釈し、色分けを行うかどうかを指定します。デフォルトではtrueです。(現在は原則として\0, \1を代わりに使用することになっているので、遠い将来にこれらのマークアップを現在の意味で理解しないプログラムが出現するかもしれないことを念のため考慮してください)
property ProcessSync: boolean read FProcessSync write SetProcessSync default true;
\_sタグをシンクロナイズセッションに入る/出るための文字列と解釈し、色分けを行うかどうかを指定します。
falseの場合はシンクロナイズセッションを考慮しません。