Имена с пробелами и знаками препинания и name mangling

Переводим термины и придумываем новые, в т.ч. для ЯОС
Ответить
БудДен
Сообщения: 2865
Зарегистрирован: 07.10.18 14:01

Имена с пробелами и знаками препинания и name mangling

Сообщение БудДен » 18.04.21 14:55

Хочется попробовать внедрить с минимальными трудозатратами имена с пробелами и знаками препинания. Вижу только такой вариант:
  • имена задаются в кавычках-ёлочках - „Посещается Маша“
  • внутри имени допустимы подчёркивание, пробел и запятая
  • на этапе лекс. разбора имена, содержащие пробел и запятую, преобразуются в соответствующие АО по следующим правилам:
    • подчёркивание превращается в _ч
    • пробел превращается в _п
    • запятая превращается в _з
Здесь я немного зашёл в тупик, т.к. нужно, чтобы имена просто с подчёркиваниями не сломались. Возможно, нужно отдельно обрабатывать имена с кириллицей и без.

БудДен
Сообщения: 2865
Зарегистрирован: 07.10.18 14:01

Re: Имена с пробелами и знаками препинания и name mangling

Сообщение БудДен » 18.04.21 14:58

В реальности нам больше всего не хватает одного значка - а именно, запятой. Пробел удовлетворительно имитируется подчёркиванием. Простейший вариант добавить запятую - это взять в юникоде знак, похожий на неё, с кодом менее 04FFH.

БудДен
Сообщения: 2865
Зарегистрирован: 07.10.18 14:01

Re: Имена с пробелами и знаками препинания и name mangling

Сообщение БудДен » 18.04.21 16:43

Итак, общая идея: к допустимым для идентификатора значкам добавляются следующие:

Код: Выделить всё

ˉ˛¿«»¡
И применяются они так:

Код: Выделить всё

МеханикˉВодитель (* предпочтительный вариант вместо тире и дефиса *)
Привет˛Маша (* предпочтительный вариант замены запятой *)
КтоЗдесь¿ (* препочтительный вариант замены вопросительного знака *)
Стой¡ (* замена восклицательного знака *)
Предписание«Если» (* кавычки *)
А вот отвергнутые альтернативы и варианты, с которыми можно перепутать нашу новую запятую:

Код: Выделить всё

Привет¨Маша
Привет¤Маша
ПриветjМаша
ПриветʻМаша
Привет,Маша
Привет˳Маша


Значки не идеальны, но они позволяют не расширять диапазон допустимых значков. Иногда приходится составлять массивы размером, равным максимальному значению имеющего смысл в грамматике значка юникода. Раньше он был размером в 100, после добавления кириллицы стал порядка 1000. Большинство красивых значков расположены не ниже 8000. Массивы размером в 8000 элементов могут вызвать проблемы, некогда в этом разбираться. Поэтому пришлось подобрать похожие значки с небольшими числовыми кодами.

Думается, что такое добавление довольно тривиально.

Предлагаю обсуждать.

Ответить