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 は書かれた値を次の優先順位で型変換する。

型変換ルール

優先度
1true / falsebool
2「...」 または "..."(引用符あり)String(引用符あり)
3小数点を含む数値f64
4小数点なしの数値i64
5その他String

上から順に判定され、最初に一致した型が採用される。

true           → bool
false          → bool
「こんにちは」  → String(空白も保持)
Hello          → String
3.14           → f64
42             → i64

真偽値(bool)

true / false はそのまま真偽値として解釈される。

is_active:true
done:false

文字列(String)

文字列は引用符の有無で扱いが変わる。

  • 引用符あり: 全角の 「...」 または半角の "..." で囲む。空白も文字列の一部として保持される。
  • 引用符なし: 空白は区切り文字として認識され、文字列に含まれない。
# 日本語文字列
greeting:「こんにちは」

# 英語文字列
message:"Hello, World!"

空白を含む文字列は必ず引用符で囲む。引用符の有無で値の分割が変わる点に注意する。

hello world    → String "hello" と String "world"(2 つの値)
「hello world」 → String "hello world"(1 つの値)

文字列エスケープ

半角ダブルクォート文字列内では、バックスラッシュ \ でエスケープできる。

エスケープ意味
\n改行
\\バックスラッシュ
\"ダブルクォート

数値(i64 / f64)

数値は符号(- / )と数字、任意の小数部からなる。小数点を含めば f64、含まなければ i64 となる。数字は ASCII 数字(0-9)と全角数字(0-9)の両方が使える。

count:10        # i64
offset:-5       # i64
pi:3.14         # f64
delta:-2.5      # f64

単語値での引用符エスケープ

単語定義の値にリテラルの引用符を含めたい場合は、二重の括弧を使う(詳細は 単語定義)。

会話:「「セリフ」」   # 実行時に「セリフ」として展開される

型の見分け方が分かれば、値の扱いで悩むことはございませんわ。 さあ、いよいよキャラクターが喋り出す「アクション行」へ参りましょう!

権威的仕様: リテラル型の厳密な定義は doc/spec/05-literals.md を参照。文字列・数値リテラルの字句構造は doc/spec/02-markers.md も参照。