The Go Programming Language Specificationの翻訳、2回目です。
前回の訳はGo言語仕様[日本語訳]にまとめてあります。


ソースの文字コード

ソースの文字コードは、UTF-8でエンコードされたユニコード文字です。テキストは正規化されないため、あるアクセント付きコードポイントは、それと同 じ文字ではあるがアクセント記号とアルファベットを結合して造られた文字とは別のものとして扱われます。これらは2つのコードポイントとみなされます。
このドキュメントでは「ユニコードのコードポイント」と記述する代わりに、文字(キャラクタ)という言葉を使用します。

各コードポイントはそれぞれ異なる文字です。たとえば同じアルファベットの文字でも大文字・小文字が違えば別の文字として扱われます。

文字

次の書き方は、特定のユニコード文字クラスを示すときに用いられます。

unicode_char   = /* an arbitrary Unicode code point */ .
unicode_letter = /* a Unicode code point classified as "Letter" */ .
unicode_digit  = /* a Unicode code point classified as "Digit" */ .

The Unicode Standard 5.1のセクション4.5 「General Category—Normative」において、文字カテゴリセットが定義されています。
Go言語ではこれらカテゴリのうちLu, Ll, Lt, Lm, Loをユニコード字(レター)、Ndをユニコード数字として扱います。

字と数字

アンダースコア_ (U+005F)は、字(レター)とみなされます。

letter        = unicode_letter | "_" .
decimal_digit = "0" ... "9" .
octal_digit   = "0" ... "7" .
hex_digit     = "0" ... "9" | "A" ... "F" | "a" ... "f" .