キーワード・マーカー
まずは Pasta DSL の「文字の意味」を覚えていただきますわ。 行頭に置く一文字――マーカー――が、その行の運命を決めるのですの。 この章は早見表として手元に置いておくとよろしくてよ。
Pasta DSL は行指向文法であり、行頭の文字(マーカー)によって行の種類が確定する。ここではマーカー・演算子・区切り文字・基本要素を一覧する。すべてのマーカー・演算子・括弧は全角と半角の両方を許容し、両者は同等に扱われる。
マーカー一覧
| マーカー | 全角 | 半角 | 用途 |
|---|---|---|---|
| グローバルシーン | * | * | シーン定義 |
| ローカルシーン | ・ | - | サブシーン定義 |
| アクター辞書 | % | % | アクター辞書の定義・アクタースコープ指定 |
| 属性 | & | & | メタデータ(処理は将来予定) |
| 単語/関数 | @ | @ | 単語定義・参照・関数呼び出し |
| 選択肢 | @? | @? | 選択肢定義(ジャンプ先+表示テキスト) |
| 変数 | $ | $ | 変数宣言・参照 |
| Call | > | > | シーン呼び出し |
| キューコマンド | ! | ! | 演出キュー(dola 側で処理) |
| コメント | # | # | コメント行 |
| コロン | : | : | キー:値の区切り |
基本要素
改行(NEWLINE)
改行は \r\n / \n / \r のいずれか。行指向文法では改行により行属性が確定し、すべての行要素は改行で終わる。
空白(WHITE_SPACE)
Pasta は Unicode の White_Space カテゴリの文字から改行コード(\r \n)を除いたものを空白として扱う。半角スペース・タブ・全角スペースなどが含まれる。空白は有効なトークン区切り文字であり、自動スキップされるわけではない。改行は意図的に空白から除外され、行の区切り文字として機能する。
コロン(: / :)
コロンはキー:値の関係を表す汎用区切り文字である。比較・フィルター条件には使わない(それらには = > < などの比較演算子を用いる)。
$var_name:value # 変数代入
@word_name:value1、value2 # 単語定義
アクター:こんにちは # アクション行
識別子(Identifier)
識別子は Unicode の XID_START で始まり XID_CONTINUE が続く。ASCII の a-z A-Z _、および平仮名・カタカナ・漢字なども使用できる。
- 予約パターン
__*__(例:__start__)はシステム予約であり使用できない。 - 最長一致で切り出される。空白による区切りがない場合、識別子に含まれない文字が現れるまでを一括して取り込む。
@挨拶、みんな! # 識別子は「挨拶」、以降「、みんな!」は通常テキスト
インデント(Indent)
行頭の 1 つ以上の連続した空白。有無のみが判定基準であり、深さは判定しない。
- インデントなし = グローバルレベル(グローバルシーン、グローバル単語定義など)
- インデントあり = 下層レベル(グローバルシーン直下のすべての行)
*会話 ← インデントなし(グローバルレベル)
&author:Alice ← インデントあり(下層レベル)
Alice:おはよう ← インデントあり(下層レベル)
演算子
算術演算子
| 演算 | 全角 | 半角 |
|---|---|---|
| 加算 | + | + |
| 減算 | - | - |
| 乗算 | * × | * |
| 除算 | / ÷ | / |
| 剰余 | % | % |
* は乗算とシーンマーカーで同じ文字を使う点に注意する(文脈で区別される)。
比較演算子
| 演算 | 全角 | 半角 |
|---|---|---|
| 等値 | == | == |
| 不等 | != | != |
| より小さい | < | < |
| より大きい | > | > |
| 以下 | <= | <= |
| 以上 | >= | >= |
> は比較と Call マーカーで同じ文字を使う点に注意する。
括弧
| 種類 | 全角 | 半角 |
|---|---|---|
| 左括弧 | ( | ( |
| 右括弧 | ) | ) |
単語値の区切り文字
単語定義の値リストは、全角読点(、)・全角コンマ(,)・半角カンマ(,)のいずれかで区切る。前後の空白は無視される。
@fruits:apple、banana、orange
@numbers:1、2、3
マーカー詳細への導線
各マーカーの詳細なセマンティクスは、それぞれ専用の章で扱う。
- 単語・関数
@の用法 → 単語定義 - 変数
$のスコープ修飾 → 変数・スコープ - Call
>のターゲット形式 → Call / Jump - アクター辞書
%→ アクター辞書 - さくらスクリプトのエスケープ
\→ さくらスクリプト
ね、一覧があれば怖くありませんでしょう? フンッ、覚えるのはあなた次第ですけれど。 次は、これらのマーカーが組み合わさる「行とブロック構造」へ参りましょう。
権威的仕様: マーカー・キーワードの厳密な定義は doc/spec/02-markers.md を参照。