Хрупкая красота
Jun. 4th, 2021 04:44 pmРешил я посмотреть, как выглядит Паскаль-компилятор в отформатированном с помощью pretty-принтера виде.
Нашлась такая и для Паскаля-автокода в системе "Пульт". Она почему-то называется "ЛЕС".
Вроде, всё прекрасно (при выдаче на АЦПУ по команде "ПА" перед "ЛЕС" все символы будут выдаваться правильно и без "ИДТИ?"), но вдруг
Никаких ошибок в исходной строке 21
letter = 'a'..'z';
нет, настоящим компилятором всё компилируется. В чём же дело? Пришлось на скорую руку декомпилировать и её, чтобы разобраться.
В конце концов мне удалось понять, в чём дело - она не любит пробелы вокруг знака равенства в объявлении типов; и облагороженная сама собой, она выглядит так:( несколько отрывков )
Всё очень красиво, даже с небольшими отступами для вложенных подпрограмм, но в то же время довольно компактно: последовательности операторов присваивания подверстываются в строку, пробелы в выражениях ликвидируются, и т.п.
Никаких опций не предусмотрено, сокращённая запись _( и _) для _begin и _end разворачивается в представление в виде слов безусловно. Впрочем, это и неважно, раз
begin и end всегда оказываются на отдельной строке.
Почему-то все комментарии, бывшие в исходном тексте, пропали, хотя, судя по беглому просмотру текста, раз комментарии сохраняются
в буфер, то должны и выдаваться. Строчных комментариев, вводимых знаком %, программа не понимает.
По-видимому, если она когда и использовалась, то только для получения удобных для чтения (и подшивания к диссертациям) распечаток, поскольку редактировать файл с таким отступами было бы очень неэффективно.
Небольшое замечание: Диалоговый интерфейс у программы очень молчаливый, хотя свободного места в последней зоне ещё хватало - примерно ползоны (3 Кб). Какие-либо приветствия отсутствуют; вместо того, чтобы на непонятную строку рассказывать, какой ожидается формат указания расположения входного и выходного файлов, программа говорит НЕ БУДУ; а после 5 неудачных попыток ДЛЯ ВЫХОДА СДЕЛАЙТЕ "ЕТХ". Вот когда надо было придумать мем "капитан Очевидность".
Нашлась такая и для Паскаля-автокода в системе "Пульт". Она почему-то называется "ЛЕС".
СИСТЕМА ПУЛЬТ 04.06.81 ЛЕС ==> 500101 30 0001 (*=М-,С-*) 0002 ._РRОGRАМ СОМРIL ., 0003 ._LАВЕL 27721., 0004 ._СОNSТ 0005 SРАСЕS = ’ ’., 0006 SР = ’ ’., 0007 АSG = ’.==200’., 0008 С4096 = 4096., 0009 Т = ТRUЕ., 0010 F = FАLSЕ., 0011 О = ’0’., 0012 ВRАNСН = ’ВRАNСН’., 0013 ВАСК = ’ВАСК’., ИДТИ?
Вроде, всё прекрасно (при выдаче на АЦПУ по команде "ПА" перед "ЛЕС" все символы будут выдаваться правильно и без "ИДТИ?"), но вдруг
0097 ._ТУРЕ
0098 ВIТSЕТ = ._SЕТ ._ОF 0 .. 47.,
ОШИБКА=203 СИМ= СТР= 21
КОНТЕКСТ=
ТТЕR = ’А’..’Z’.,
INТ=INТЕGЕR.,ВООL=ВО
Никаких ошибок в исходной строке 21
letter = 'a'..'z';
нет, настоящим компилятором всё компилируется. В чём же дело? Пришлось на скорую руку декомпилировать и её, чтобы разобраться.
В конце концов мне удалось понять, в чём дело - она не любит пробелы вокруг знака равенства в объявлении типов; и облагороженная сама собой, она выглядит так:( несколько отрывков )
Всё очень красиво, даже с небольшими отступами для вложенных подпрограмм, но в то же время довольно компактно: последовательности операторов присваивания подверстываются в строку, пробелы в выражениях ликвидируются, и т.п.
Никаких опций не предусмотрено, сокращённая запись _( и _) для _begin и _end разворачивается в представление в виде слов безусловно. Впрочем, это и неважно, раз
begin и end всегда оказываются на отдельной строке.
Почему-то все комментарии, бывшие в исходном тексте, пропали, хотя, судя по беглому просмотру текста, раз комментарии сохраняются
в буфер, то должны и выдаваться. Строчных комментариев, вводимых знаком %, программа не понимает.
По-видимому, если она когда и использовалась, то только для получения удобных для чтения (и подшивания к диссертациям) распечаток, поскольку редактировать файл с таким отступами было бы очень неэффективно.
Небольшое замечание: Диалоговый интерфейс у программы очень молчаливый, хотя свободного места в последней зоне ещё хватало - примерно ползоны (3 Кб). Какие-либо приветствия отсутствуют; вместо того, чтобы на непонятную строку рассказывать, какой ожидается формат указания расположения входного и выходного файлов, программа говорит НЕ БУДУ; а после 5 неудачных попыток ДЛЯ ВЫХОДА СДЕЛАЙТЕ "ЕТХ". Вот когда надо было придумать мем "капитан Очевидность".