字句規則

文字コード

ソースファイルの文字コードは UTF-8 でなければなりません

改行コードは CRLF および LF に対応しています。CR には対応していません

空白文字

半角スペース、改行 (\n\r)、タブ (\t)、\v\f、およびコメントは空白文字として扱われます

コメント

コメントはコンパイラーによって無視され、単一の空白文字として扱われます。YAMML では C++、C#、JavaScript などと同じく 2 種類のコメントが使えます

ブロックコメントは /* から */ までの部分です。複数行にわたってコメントとすることができますが、入れ子にすることはできません

コメントではない  /* コメント */  コメントではない

/*
複数行の
コメント
*/

/*  /*  コメント */  ここはコメントではない */

行コメントは // から行末までの部分です。行末に \ を書いても次行をコメントとすることはできません

// 行コメント

識別子

識別子は、以下の文字を 1 個以上並べたものです。識別子の長さは、メモリが許すかぎりいくらであってもかまいません

ただし、識別子の先頭の文字には、以下の文字は使えません

識別子の大文字と小文字は区別されます。FOOFoofoo はすべて異なる識別子として扱われます

リテラル

リテラルは値を直接あらわすための構文です。YAMML では以下の 3 種類のリテラルが使えます

整数リテラル

整数リテラルは、符号つき整数をあらわします。正の数は 0 以外の数字、負の数は - につづく 0 以外の数字ではじめ、10 進法で表記します (123-54 など)

0 はそのまま 0 と表記します

文字列リテラル

文字列リテラルは、文字列をあらわします。あらわしたい文字列をダブルクォート (") またはシングルクォート (') でくくって表記します ("Foo"'The quick brown fox jumps over the lazy dog.' など)

文字列リテラル内ではエスケープシーケンスが使えます。C++ で利用可能なもののうち \nnn を除いたすべてのエスケープシーケンスを使用できます

識別子リテラル

識別子リテラルは、識別子の要件をみたす文字列を、引用符を用いずにあらわすことができます