Ремесло программиста

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Ремесло программиста » Общие вопросы по РЯП » Различия между числами и идентификаторами


Различия между числами и идентификаторами

Сообщений 1 страница 5 из 5

1

пишут, что

Идентификатор может начинаться только с буквы! Это позволяет отличать его от числа

это же вызывающе неверная (точнее неполная, "не вся правда") информация!
Можно подумать, что в этом случае число может начинаться не только с цифры.

Если бы в кодировке символов и на клавиатуре шестнадцатеричные символы располагались бы отдельно,
то да, всё было бы хорошо. Но это же не так.

Нам предлагают добавлять к числам префиксы (потому что в текстах программ чисел меньше, чем идентификаторов)
или постфиксы AAш- последнее вообще не очень похоже на полное решение, отличающееся от идентификатора,
но может быть сделано таковым (хотя и затруднит разбор по сравнению с разбором префикса).

В качестве префиксов предлагают:
*) либо служебные символы ( есть даже символ числа на клавиатуре - "№", только он не используется по такому назначению)
№ГДЕ0(16)
*) либо ноль и что-нибудь (0шГДЕ0).

Если писать основание системы счисления в конце в скобках, то добавления нуля достаточно.
0ГДЕ0(16)
тут первая цифра отличает число от идентификатора, а операция () для чисел указывает основание.

это на два символа длиннее, чем вариант из статьи в теме шестнадцатеричные цифры по-русски
0ГДЕ0(16)
16"ГДЕ0
0шГДЕ0
и на три символа длиннее варианта с 0ш, но мой вариант ранее не был предложен и мне он кажется возможной альтернативой.

Вариант с 0ш и 0б в принципе возможен, потому что не может в двоичном числе встретиться шестнадцатеричная цифра "Б" - 0бБ, только 0б1... или 0б0...
но выглядит мудрёным.

У моего же варианта есть скрытый плюс - независимость языка от аппаратной платформы. Начнут кодировать программы в троичной логике для ДНК,
а я рраз и напишу 01221012(3), другим же прийдётся обновлять транслятор (или в частном случае - компилятор/интерпретатор) для обработки префикса 0т

Ловлю тапки.

2

Предлагаю остановиться на таком вот варианте:
2»0101
3»1210
4»3210
8»4567
16»АБВГДЕ

Тем более набирать не сложно, когда у вас знак на клавиатуре имеется.
Нажимаете AltGr+">".

3

Павиа написал(а):

набирать не сложно, когда у вас знак на клавиатуре имеется. Нажимаете AltGr+">".

Попробовал, не работает.
Чем » лучше чем _ ?

2_0101
3_1210
4_3210
8_4567
16_АБВГДЕ

4

Потому что знак "_" (тряпка плинтус земля) означает что далее слежующие символы являются подстрочными.
Во-вторых знак "»" просто красивее.

5

Павиа написал(а):

знак "_" (тряпка плинтус земля) означает что далее слежующие символы являются подстрочными.

отлично,
1) пишем
АБВГДЕ_16
2) говорим, что токены, заканчивающиеся на "_[0-9]+" - это числа, а не идентификаторы.

Павиа написал(а):

знак "»" просто красивее

неубедительный аргумент


Вы здесь » Ремесло программиста » Общие вопросы по РЯП » Различия между числами и идентификаторами