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でこれらの動作を再現する予定はありません)