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 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

マーカー詳細への導線

各マーカーの詳細なセマンティクスは、それぞれ専用の章で扱う。


ね、一覧があれば怖くありませんでしょう? フンッ、覚えるのはあなた次第ですけれど。 次は、これらのマーカーが組み合わさる「行とブロック構造」へ参りましょう。

権威的仕様: マーカー・キーワードの厳密な定義は doc/spec/02-markers.md を参照。