Skip to content
Toru Niina edited this page May 18, 2018 · 10 revisions

English

入力ファイルの文法

チュートリアルを始める前に、Mjolnirが受け取る入力ファイルの文法についてお話しておきます。

Mjolnirの入力ファイルは独自の形式ではありません。TOMLという設定ファイル記述用言語を採用しています。いくつかのプロジェクトに既に採用されており、多くのフィードバックと共に成長してきました。 TOMLは、言語仕様をシンプルに小さくまとめ、人間にとっても読みやすい設定ファイルを書けるようにすることを目標に設計されています。

以下にそのレポジトリがあります。READMEで文法が詳しく記述されているので、詳しく知りたい方は参照して下さい。

おおまかに説明しておくと、例えばTOMLのファイルは以下のようになります。

[fruits] # this is a comment.
number = 3
what   = ["apple", "banana", "peach"]

最初の[fruits]がテーブル名で、その下にあるfoo = barが変数の名前とその値を決めています。

TOMLファイルは全体が名前と値を結びつけるテーブルとして構成されています。そしてその値には以下の型が存在します。

文字列 (Unicode) "foobar"
整数 (符号あり64bit) -100_000
浮動小数点数 (倍精度、IEEE754に従う) 3.142_592_653_589
真偽値 trueまたはfalse
日時 1979-05-27 07:32:00Z
配列 [1, 2, 3, 4, 5]
テーブル {num = 42, name = "foo"}(1行で書く場合)

そう、テーブルも一つの型です。これはどういうことかというと、テーブルの中でテーブルを定義することも、テーブルの配列を作ることもできるということです。

[[sweets]] # [[...]]はテーブルの配列を意味します。
name   = "cookie"
number = 12

[[sweets]] # なので同じ名前のテーブルが複数あって構いません。
name   = "cake"
number = 1

[[foods.fishes]] # foodsというテーブルのfishesという要素がテーブルの配列であることを意味します。
name   = "tuna"
type   = "canned"
number = 3

[[foods.fishes]] # そういうことですね。
name   = "cod"
type   = "dried"
number = 1

短いテーブルは1行で書くこともできて、その場合以下のようになります。上の例だとこちらの方がわかりやすいかもしれません。

[foods]
fishes = [
{name = "tuna", type = "canned", number = 3},
{name = "cod",  type = "dried",  number = 1},
]

上の例を見てお分かりの通り、配列は最後の要素の後にもコンマがあって構いません(誤植じゃないですよ!)。この特徴はスクリプトを使って自動で生成するときに便利です。

TOMLのよりしっかりした解説はTOMLのレポジトリに譲るとして、チュートリアルを始めることにしましょう。

Clone this wiki locally