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が含まれていない、といった状況のままでは一切の色分けがされません。
TSakuraScriptFountain
では、\_s
タグは「囲むタグ」であると解釈しており、\_s
によるシンクロナイズセッションは、\0
や\1
によるスコープより優先順位が高く
、かつ独立した一種の状態である、と解釈します。つまり、シンクロナイズセッション状態は、\0
や\1
では解除されず、また\_s内において\0
や\1
タグが存在した場合、それらは単純に「シンクロナイズセッションを出た後のスコープを決定する」だけです。
この解釈は2003年6月現在のmateria、SSP、CROW(と、他の多くのSakuraScript処理系)の各最新版に準拠となっていますが、一部の古い処理系では、\0
や\1
によってシンクロナイズセッションの状態に影響を与える挙動をしているものがあります。
また、2003年6月現在最新版であるmateria583では、シンクロナイズセッション中に\0
や\1
が現れた場合に誤動作する、シンクロナイズセッションの明示的な解除後にスコープが不定となる、といったバグが存在します。(これらは明らかにバグと思われる挙動であるためTSakuraScriptFountain
でこれらの動作を再現する予定はありません)