Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharp Language Specification.doc
Скачиваний:
13
Добавлен:
26.09.2019
Размер:
4.75 Mб
Скачать

2.3.2Комментарии

Поддерживается две формы комментариев: однострочные комментарии и комментарии с разделителями. Однострочные комментарии начинаются с символов // и продолжаются до конца исходной строки. Комментарии с разделителями начинаются с символов /* и заканчиваются символами */. Комментарии с разделителями могут занимать несколько строк.

комментарий: однострочный_комментарий комментарий_с_разделами

однострочный_комментарий: // символы_вводанеоб

входные_символы: входной_символ входные_символы входной_символ

входной_символ: Любой знак Юникода за исключением символа_следующей_строки

символ_следующей_строки: Символ возврата каретки (U+000D) Символ перевода строки (U+000A) Символ следующей строки (U+0085) Символ разделителя строк (U+2028) Символ разделителя абзацев (U+2029)

комментарий_с_разделами: /* текст_комментария_с_разделаминеобязательно звездочка /

текст_комментария_с_разделами: раздел_комментария_с_разделами текст_комментария_с_разделами раздел_комментария_с_разделами

раздел_комментария_с_разделами: / звездочканеобязательно не_косая_черта_и_не_звездочка

звездочка: * звездочка *

не_косая_черта_и_не_звездочка: Любой знак Юникода за исключением косой черты (/) или звездочки (*)

Комментарии не могут быть вложенными. Последовательности символов /* и */ не имеют специального значения внутри комментария //, а последовательности символов // и /* не имеют специального значения внутри комментария с разделителями.

Комментарии не обрабатываются внутри символьных и строковых литералов.

Например:

/* Hello, world program This program writes “hello, world” to the console */ class Hello { static void Main() { System.Console.WriteLine("hello, world"); } }

содержит комментарий с разделителями.

Например:

// Hello, world program // This program writes “hello, world” to the console // class Hello // any name will do for this class { static void Main() { // this method must be named "Main" System.Console.WriteLine("hello, world"); } }

показано несколько однострочных комментариев.

2.3.3Пробел

Пробел определяется как любой символ Юникода класса Zs (который включает символ пробела), а также как символ горизонтальной табуляции, символ вертикальной табуляции и символ перевода страницы.

пробел: любой символ Юникода класса Zs символ горизонтальной табуляции (U+0009) символ вертикальной табуляции (U+000B) символ перевода страницы (U+000C)

2.4Маркеры

Существует несколько видов лексем: идентификаторы, ключевые слова, литералы, операторы и знаки пунктуации. Пробел и комментарии не являются лексемами, хотя действуют как разделители для лексем.

лексема: идентификатор ключевое_слово целочисленный_литерал действительный_литерал символьный_литерал строковый_литерал оператор_или_знак_пунктуации

2.4.1Управляющие последовательности символов Юникода

Управляющая последовательность символов Юникода представляет собой символ Юникода. Управляющие последовательности символов Юникода обрабатываются в идентификаторах (§2.4.2), символьных литералах (§2.4.4.4) и правильных строковых литералах (§2.4.4.5). Управляющая последовательность символов Юникода не обрабатывается в других местах (например, для образования оператора, знака пунктуации или ключевого слова).

управляющая_последовательность_Юникода: \u 16_р_циф 16_р_циф 16_р_циф 16_р_циф \U   16_р_циф  16_р_циф  16_р_циф  16_р_циф  16_р_циф  16_р_циф  16_р_циф  16_р_циф

Управляющая последовательность Юникода (escape-последовательность Юникода) представляет собой один символ Юникода, образованный шестнадцатеричным числом, следующим за символами «\u» или «\U». Поскольку в C# используется 16-разрядная кодировка элементов кода Юникода в символьных и строковых значениях, символ Юникода в диапазоне от U+10000 до U+10FFFF запрещен в строковом литерале и представляется с помощью суррогатной пары Юникода в строковом литерале. Символы Юникода с элементами кода выше 0x10FFFF не поддерживаются.

Многократные трансляции не выполняются. Например, строковый литерал «\u005Cu005C» эквивалентен «\u005C», а не «\». Значение Юникода \u005C является символом «\».

Например:

class Class1 { static void Test(bool \u0066) { char c = '\u0066'; if (\u0066) System.Console.WriteLine(c.ToString()); } }

показано несколько использований \u0066, escape-последовательности для буквы «f». Эта программа эквивалентна следующей:

class Class1 { static void Test(bool f) { char c = 'f'; if (f) System.Console.WriteLine(c.ToString()); } }

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]