Опорные числовые константы BCPL

Я врывался в историю BCPL из-за вопроса, о котором меня спрашивали, о причине использования префикса "0x" для шестнадцатеричных чисел представления.

В моем поиске я наткнулся на действительно хорошее объяснение истории, стоящей за этим знаком. (Почему шестнадцатеричные числа с префиксом 0x?)

Из этого сообщения, однако, возникли другие вопросы:

Для восьмеричных констант использовал BCPL 8 <digit> (согласно спецификациям: http://cm.bell-labs.com/cm/cs/who/dmr/bcpl.pdf) или использовал #<digit> ( По http://rabbit.eng.miami.edu/info/bcpl_reference_manual.pdf) или оба эти синтаксиса были действительны в разных реализациях языка?

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

Любые исторические идеи очень ценятся.

Ответ 1

В BCPL было много незначительных изменений в синтаксисе.

Например, в то время как тот, который мы использовали, имел 16-разрядные ячейки (так что x!y дал вам 16-битовое слово из адреса слова в x + y (адрес слова составляет половину байтового адреса), мы также потребовалось извлечь из байтов и байтов значения (поскольку мы в основном создавали ОС и программное обеспечение для управления на 6809 байт-адресуемом ЦП).

Следовательно, в дополнение к:

x!y - get word from byte address (x + y) * 2

мы также имели

x!%y - get byte from byte address (x * 2) + y
x%!y - get word from byte address x + (y * 2)
x%%y - get byte from byte address x + y

Я уверен, что они были специфичными для реализации, поскольку я никогда их не видел. И BCPL был задолго до того, как языковые стандарты были такими же важными, как сегодня.

Спецификация канонического языка была бы раньше, чем у Ричардса, так как он написал этот язык (и ваш второй документ предназначен для реализации BSSL Essex примерно через десять лет). Но имейте в виду, что Project MAC был самой ранней итерацией - после этого было много улучшений.

Например, существует версия Руководства пользователя BCPL за 2013 год (см. домашняя страница Мартина), которая указывает #b, #o и #x в качестве префиксов для различных не десятичных оснований.