Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

さくらスクリプト

表情を変え、間(ま)を作り、演出を添える――それがさくらスクリプトですわ。 Pasta はこの記法を「解釈せず、そのまま通す」のが流儀。だからこそ自由が利きますの。 おほほ、賢いやり方でしょう?


さくらスクリプトは、アクション行内にインラインで埋め込む「\」から始まるコマンドトークンである。Pasta はコマンドの意味を解釈しない。必要なのは字句構造(記述ルール)のみで、検出したコマンドはそのまま透過し、解釈は areka 層が担う。

エスケープ文字

エスケープ文字は厳密に半角バックスラッシュ \ のみ。全角は使えない。

コマンドの字句構造

sakura_command   ::= "\" ~ sakura_token ~ bracket_content?
sakura_token     ::= [!\-+*?&_a-zA-Z0-9]+
bracket_content  ::= "[" ~ bracket_chars ~ "]"
bracket_chars    ::= ( "\]" | [^\]] )*
  • sakura_token は ASCII 英数字 + _ ! - + * ? & の連続。先頭が数字でもよい。
  • 角括弧内容は非ネスト前提で、最初の「非エスケープな ]」で閉じる。\] は内容文字としての ] を表す。
  • 角括弧は半角[ ] のみが対象(全角括弧はコマンド括弧として扱わない)。
  • 未知のトークンも受理される(Pasta は中身を構文解析しない)。

使用例

表情変更
    ぱすた\s[0]こんにちは!
    ぱすた\s[4]元気だよ
    ぱすた\s[1]\w8それで\w8ね...

改行とウェイト
    ぱすた:最初の行\n次の行\n\w9最後の行

ブラケットエスケープ
    ぱすた:配列参照\s[a\]b]

コマンドのみ
    Bob\![happy]了解しました。

角括弧内のエスケープと引用

角括弧内で値に特殊文字を含めたいときは、ukadoc の引用規則がそのまま透過する。

  • \]] を文字として含める。
  • カンマを含む値はダブルクォートで囲む: \![raise,OnTest,"100,2"]
  • ダブルクォートを含める場合は二重にする: \![call,ghost,"the ""Name"""]

複雑なケースの方針

Pasta はさくらスクリプトの複雑な構文(入れ子、特殊な引数構成、高度なエスケープの相互作用)を検出・解釈しない。複雑さが必要な場合は、Lua 関数でトークン列(さくらスクリプトを含む文字列)を生成し、アクション行へ挿入する運用が推奨される。

複雑な演出
    ぱすた@emit_complex_sakura() どうぞ

@emit_complex_sakura()"\![embed,OnTalk]" のような文字列を返し、それがアクションに連結される。


解釈を areka 層に任せる潔さ、お分かりいただけまして? 表情も間も思いのまま。次は会話を動かす「変数・スコープ」へ参りますわよ!

権威的仕様: さくらスクリプトの字句構造の厳密な定義は doc/spec/07-sakura-script.md を参照。アクション行内での位置づけは doc/spec/06-action-line.md も参照。