Ограниченность набора символов Unicode для идентификаторов
От: -MyXa- Россия  
Дата: 31.08.16 15:41
Оценка:
Коллеги!

(навеяно темой из КСВ)

В стандарте сказано, какие символы можно использовать внутри идентификаторов (см., напр., черновик, [charname.allowed]).

Меня интересует, а почему, собственно, только только эти? Почему нельзя было разрешить вообще все символы, кроме тех, что уже используются в языке для других целей?

Например, 👀_table — допустимый идентификатор, а ☠_lock — нет. Вот пример.
Если не поможет, будем действовать током... 600 Вольт (C)
Re: Ограниченность набора символов Unicode для идентификаторов
От: Ops Россия  
Дата: 31.08.16 18:01
Оценка: :))
Здравствуйте, -MyXa-, Вы писали:

MX>Например, 👀_table — допустимый идентификатор, а ☠_lock — нет.


А нам не надо дедлоков.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: Ограниченность набора символов Unicode для идентификаторов
От: b0r3d0m  
Дата: 31.08.16 18:14
Оценка:
MX>Например, 👀_table — допустимый идентификатор, а ☠_lock — нет
На чём основывается данное утверждение? Одного лишь примера недостаточно.

Я вот вижу, что набор допустимых символов целиком и полностью определяется реализацией:

The set of physical source file characters accepted is implementation-defined

Re[2]: Ограниченность набора символов Unicode для идентификаторов
От: -MyXa- Россия  
Дата: 31.08.16 18:42
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

MX>>Например, 👀_table — допустимый идентификатор, а ☠_lock — нет

B>На чём основывается данное утверждение? Одного лишь примера недостаточно.

B>Я вот вижу, что набор допустимых символов целиком и полностью определяется реализацией:


B>

B>The set of physical source file characters accepted is implementation-defined


Не знаю я как это понимать. Вот глава 2.10, стих 1:

An identifier is an arbitrarily long sequence of letters and digits. Each universal-character-name in an
identifier shall designate a character whose encoding in ISO 10646 falls into one of the ranges specified in E.1.

В Е.1 перечислены некоторые символы, не все. Вот эта же таблица в clang, по ней не допускаются идентификаторы с не теми символами.
Если не поможет, будем действовать током... 600 Вольт (C)
Re[3]: Ограниченность набора символов Unicode для идентификаторов
От: b0r3d0m  
Дата: 31.08.16 18:57
Оценка:
MX>

MX>An identifier is an arbitrarily long sequence of letters and digits. Each universal-character-name in an
MX>identifier shall designate a character whose encoding in ISO 10646 falls into one of the ranges specified in E.1.

MX>В Е.1 перечислены некоторые символы, не все. Вот эта же таблица в clang, по ней не допускаются идентификаторы с не теми символами.
Ключевое слово здесь "universal-character-name", что есть

hex-quad:
hexadecimal-digit hexadecimal-digit hexadecimal-digit hexadecimal-digit

universal-character-name:
\u hex-quad
\U hex-quad hex-quad


, а вовсе не то, что Вы привели в своём примере.
Re[4]: Ограниченность набора символов Unicode для идентификаторов
От: -MyXa- Россия  
Дата: 31.08.16 20:35
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

MX>>

MX>>An identifier is an arbitrarily long sequence of letters and digits. Each universal-character-name in an
MX>>identifier shall designate a character whose encoding in ISO 10646 falls into one of the ranges specified in E.1.

MX>>В Е.1 перечислены некоторые символы, не все. Вот эта же таблица в clang, по ней не допускаются идентификаторы с не теми символами.
B>Ключевое слово здесь "universal-character-name", что есть

B>

B>hex-quad:
B>hexadecimal-digit hexadecimal-digit hexadecimal-digit hexadecimal-digit

B>universal-character-name:
B>\u hex-quad
B>\U hex-quad hex-quad


B>, а вовсе не то, что Вы привели в своём примере.


Оно было бы вовсе не то, кабы то, чем является universal-character-name, имело бы хоть какое-то отношение к обсуждаемому вопросу.

Что ты этим определением universal-character-name хотел сказать? В виде кода, желательно.
Если не поможет, будем действовать током... 600 Вольт (C)
Re[5]: Ограниченность набора символов Unicode для идентификаторов
От: b0r3d0m  
Дата: 01.09.16 05:59
Оценка:
MX>Что ты этим определением universal-character-name хотел сказать? В виде кода, желательно.

То, что мы можем гарантированно использовать лишь нотацию \uXXXXXXXX, а не их визуальное представление. Например,

int \u2460_foo;
Re[6]: Ограниченность набора символов Unicode для идентификаторов
От: -MyXa- Россия  
Дата: 01.09.16 08:14
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

MX>>Что ты этим определением universal-character-name хотел сказать? В виде кода, желательно.


B>То, что мы можем гарантированно использовать лишь нотацию \uXXXXXXXX, а не их визуальное представление. Например,


B>
B>int \u2460_foo;
B>


Во-первых,

Any source file character not in the basic source character set (2.3) is replaced by the universal-character-name that designates that character.


Т.е. чтобы-таки иметь universal-character-name, вовсе не требуется обязательно писать \u...

Во-вторых, допустим, не гарантированно. Я предлагаю обсудить то, что натурально есть в наличии.

И, в-третьих, если в исходном вопросе поменять некоторые, да хоть все, символы на \u... то от этого суть вопроса никак не изменится.
Если не поможет, будем действовать током... 600 Вольт (C)
Re: Ограниченность набора символов Unicode для идентификаторов
От: anonymouse2 Иностранный Агент
Дата: 02.09.16 18:03
Оценка: +2 :)
Здравствуйте, -MyXa-, Вы писали:

MX>Например, 👀_table — допустимый идентификатор, а ☠_lock — нет. Вот пример.


Они чего серьезно собираются в С++ юникодовские идентификаторы разрешить? Не рухнули ли они с дуба?
Нет такого преступления, на которое не пошло бы суверенное родоплеменное быдло ради продления своего бессмысленного рода и распространения своего бессмысленного генома.
Re[7]: Ограниченность набора символов Unicode для идентификаторов
От: b0r3d0m  
Дата: 03.09.16 07:57
Оценка:
MX>Во-первых,

MX>

MX>Any source file character not in the basic source character set (2.3) is replaced by the universal-character-name that designates that character.


MX>Т.е. чтобы-таки иметь universal-character-name, вовсе не требуется обязательно писать \u...


Да, похоже, что ты прав, не дочитал.

Интересно, конечно, написано:

Any source file character not in the basic
source character set (2.3) is replaced by the universal-character-name that designates that character.
(An implementation may use any internal encoding, so long as an actual extended character encountered
in the source file, and the same extended character expressed in the source file as a universal-character-
name (e.g., using the \uXXXX notation), are handled equivalently except where this replacement is
reverted in a raw string literal.)


Что они имеют ввиду под выделенным? Ведь далее в стандарте говорится следующее:

The character designated by the universal-character-name \UNNNNNNNN is that character whose character
short name in ISO/IEC 10646 is NNNNNNNN ; the character designated by the universal-character-name \uNNNN
is that character whose character short name in ISO/IEC 10646 is 0000NNNN


Вроде как всё чётко оговорено -- символы должны маппиться согласно ISO/IEC 10646.

Или они имеют ввиду, что реализации позволено хранить символы прочитанного файла как в UTF-8, так и в UTF-16 (так и в какой-то более экзотической кодировке, хоть своей собственной), но преобразовывать символы из non-basic source character set'а он должен только согласно ISO/IEC 10646?
Re[2]: Ограниченность набора символов Unicode для идентификаторов
От: b0r3d0m  
Дата: 03.09.16 07:58
Оценка: +1
A>Они чего серьезно собираются в С++ юникодовские идентификаторы разрешить? Не рухнули ли они с дуба?
В смысле, "собираются"? Судя по стандарту, это ещё в C++11 ввели.
Re: Ограниченность набора символов Unicode для идентификаторов
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 03.09.16 08:48
Оценка: :)
Здравствуйте, -MyXa-, Вы писали:


MX>В стандарте сказано, какие символы можно использовать внутри идентификаторов (см., напр., черновик, [charname.allowed]).


MX>Меня интересует, а почему, собственно, только только эти? Почему нельзя было разрешить вообще все символы, кроме тех, что уже используются в языке для других целей?


Набор действительно очень странный. Надо было разрешить Lu, Ll, Lm, Nd, Mn (уместно применённый), и, наверно, всё.
Допуск всяких U+202B вообще преступление.
The God is real, unless declared integer.
Re: Ограниченность набора символов Unicode для идентификаторов
От: vladimirmir2013  
Дата: 03.09.16 13:23
Оценка: :))
Здравствуйте, -MyXa-, Вы писали:
MX>В стандарте сказано, какие символы можно использовать внутри идентификаторов (см., напр., черновик, [charname.allowed]).

Предлагаю добавить в C++ синтаксис, обеспечивающий многоязычную возможность задания имени идентификатора.
Что то типа.
int VpTime{ ru:VpВремя, es:VpTiempo};

Ну а далее в программе используем один из трех вариантов написания имени переменной.
Например:
VpВремя += 5;
VpTiempo -= 1;
Re[2]: Ограниченность набора символов Unicode для идентификаторов
От: Erop Россия  
Дата: 04.09.16 08:17
Оценка:
Здравствуйте, vladimirmir2013, Вы писали:

V>Предлагаю добавить в C++ синтаксис, обеспечивающий многоязычную возможность задания имени идентификатора.


Дык препроцессор жеж?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Ограниченность набора символов Unicode для идентификаторов
От: Ops Россия  
Дата: 05.09.16 18:11
Оценка: :)
Здравствуйте, Erop, Вы писали:

V>>Предлагаю добавить в C++ синтаксис, обеспечивающий многоязычную возможность задания имени идентификатора.


E>Дык препроцессор жеж?


И прикрутить его к гуглотранслейту
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[2]: Ограниченность набора символов Unicode для идентификаторов
От: alpha21264 СССР  
Дата: 07.09.16 12:58
Оценка:
Здравствуйте, vladimirmir2013, Вы писали:

V>Предлагаю добавить в C++ синтаксис, обеспечивающий многоязычную возможность задания имени идентификатора.

V>Что то типа.
V>int VpTime{ ru:VpВремя, es:VpTiempo};

V>Ну а далее в программе используем один из трех вариантов написания имени переменной.

V>Например:
V>VpВремя += 5;
V>VpTiempo -= 1;

По идее IDE должен всё это понимать и выдавать на том языке, который указал пользователь.

Но я бы захотел другое. В тексте написано краткое название переменной или функции,
а при наведении курсора показывается развёрнутый комментарий, что это такое.
Разумеется, с переводом.

В тексте
VpВремя
И по требованию.
"Время последней модификации данных".

Течёт вода Кубань-реки куда велят большевики.
Re: Ограниченность набора символов Unicode для идентификаторов
От: MasterZiv СССР  
Дата: 08.09.16 10:13
Оценка:
Здравствуйте, -MyXa-, Вы писали:

MX>В стандарте сказано, какие символы можно использовать внутри идентификаторов (см., напр., черновик, [charname.allowed]).

MX>Меня интересует, а почему, собственно, только только эти? Почему нельзя было разрешить вообще все символы, кроме тех, что уже используются в языке для других целей?

Чтобы не превратить C++ в PL/1.
Следующий вопрос, который ты задашь: "Почему нельзя превратить С++ в PL/1?"
Re[3]: Ограниченность набора символов Unicode для идентификаторов
От: alpha21264 СССР  
Дата: 08.09.16 12:13
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, vladimirmir2013, Вы писали:


V>>Предлагаю добавить в C++ синтаксис, обеспечивающий многоязычную возможность задания имени идентификатора.


E>Дык препроцессор жеж?


Я пробовал. В отладчике видишь не то, что в исходнике. Даже если это просто транслит — неудобно.

Течёт вода Кубань-реки куда велят большевики.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.