spamsink: (Default)
[personal profile] spamsink posting in [community profile] besm6
Так как запускать программы из Паскаля-Автокода неудобно, я решил попробовать перенести программу печати в две колонки в Паскаль-Монитор. Одна известная разница - отсутствие в П-М конструкции "var _IN type" (например, "ch _IN letters", где тип letters определён как 'A'..'Z'), но это легко решается введением функций.

А дальше случилось забавное: я впервые увидел ошибку компилятора. Тестовый пример выглядит так:
 PASCAL COMPILER 15.0 (15.02.82)
 00001    1  0 PROGRAM MAIN(OUTPUT);
 00001    2  1 VAR S: SET OF 0..47;
 00007    3  2 BEGIN
 ******200 SYSTEM=200
 00010    4  2 S := [ORD(’ ’)..ORD(’/’)];
        *****                           0
 00023    5  0 END.


В перенесенном на С++ компиляторе падает с тем же успехом.

Pascal-Monitor in C++ (17.05.2019)
 00001    1  0 program main(output);
 00001    2  1 var s: set of 0..47;
 00007    3  2 begin
Error 200: Internal error 200
 00010    4  2 s := [ord(' ')..ord('/')];
       ^^^^^                            0
 00023    5  0 end.


Если вместо диапазона просто перечисление [ord(' '), ord('/')] - работает. Надо разбираться :)

Date: 2023-02-03 07:41 pm (UTC)
vak: (Default)
From: [personal profile] vak
Качественный компилятор на Си++ получился: достоверно воспроизводит все ошибки. 😀

Date: 2023-02-03 08:01 pm (UTC)
vak: (Default)
From: [personal profile] vak
Можно ли малой кровью обработать ord() в оптимизаторе константных выражений?

Profile

Сообщество любителей БЭСМ-6

December 2025

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
282930 31   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 13th, 2026 11:16 pm
Powered by Dreamwidth Studios