Show page source of RefJa/LexicalConventions #106386

= 字句規則 =

== 文字コード == #charset

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

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

== 空白文字 == #spaces

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

== コメント == #comments

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

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

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

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

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

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

{{{
// 行コメント
}}}

== 識別子 == #identifiers

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

 * 大文字・小文字アルファベット ({{{A}}}-{{{Z}}}, {{{a}}}-{{{z}}})
 * 数字 ({{{0}}}-{{{9}}})
 * アンダースコア ({{{_}}})
 * [http://en.cppreference.com/w/cpp/language/identifiers#Unicode_characters_in_identifiers C++ で識別子に使える Unicode 文字]

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

 * 数字 ({{{0}}}-{{{9}}})
 * [http://en.cppreference.com/w/cpp/language/identifiers#Unicode_characters_in_identifiers C++ で識別子の先頭に使えない Unicode 文字]

識別子の大文字と小文字は区別されます。{{{FOO}}}、{{{Foo}}}、{{{foo}}} はすべて異なる識別子として扱われます

== リテラル == #literals

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

=== 整数リテラル === #integer_literals

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

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

=== 文字列リテラル === #string_literals

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

文字列リテラル内ではエスケープシーケンスが使えます。[http://en.cppreference.com/w/cpp/language/escape C++ で利用可能なもの]のうち `\''nnn''` を除いたすべてのエスケープシーケンスを使用できます

=== 識別子リテラル === #identifier_literals

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