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 を参照。