\u000dВтеча закінчується коментар , тому що \uпагони поступово перетворюються на відповідні символи Unicode , перш ніж програма лексеми. Ви можете однаково використовувати \u0057\u0057замість того, //щоб розпочати коментар.
Це помилка у вашій IDE, яка повинна виділити синтаксис рядком, щоб зрозуміти, що \u000dкоментар закінчується.
Це також помилка дизайну в мові. Зараз це неможливо виправити, оскільки це порушить програми, які залежать від цього. \uEscape слід або перетворити на відповідний символ Unicode компілятором лише в контекстах, де це "має сенс" (рядкові літерали та ідентифікатори, і, мабуть, ніде більше), або їм було б заборонено генерувати символи в діапазоні U + 0000–007F або те й інше. Будь-яка з цих семантик не завадила б коментарю припинитися \u000dвтечею, не втручаючись у випадки, коли \uвтечі є корисними - зауважте, що це включає використання \uескадрів у коментарях як спосіб кодування коментарів у не латинській письмі, оскільки текстовий редактор міг би розширити уявлення про те, куди\uвтечі важливіші, ніж робить компілятор. (Я не знаю жодного редактора або IDE, який відображатиме \uвхідні файли як відповідні символи в будь-якому контексті.)
Існує аналогічна помилка проектування в сімействі C 1, де обробляється зворотний косий рядок перед визначенням меж коментарів, наприклад,
// this is a comment \
this is still in the comment!
Я підводжу це для того, щоб проілюструвати, що зробити цю конкретну дизайнерську помилку нескладно, а не усвідомлювати, що це помилка, поки не пізно її виправити, якщо ви звикли думати про токенізацію та розбір способів думки програмістів-компіляторів. про токенізацію та розбір. В основному, якщо ви вже визначили свою формальну граматику, а потім хтось придумав особливий синтаксичний випадок - триграфи, зворотній косий рядок, кодування довільних символів Unicode у вихідних файлах, обмежених ASCII, незалежно від того, на що потрібно вступити, простіше додати пропуск трансформації перед токенізатором, ніж це для повторного визначення токенізатора, щоб звернути увагу на те, де є сенс використовувати цей особливий випадок.
1 Для педантів: Я усвідомлюю, що цей аспект С був на 100% навмисним, з обґрунтуванням - я цього не вигадую - що це дозволить вам механічно примусово застосовувати код з довільно довгими рядками на перфокарти. Це все ж було неправильним дизайнерським рішенням.