Улучшить отладочную печать

Только технические вопросы по ЯОС и MINOS. Терминология и прочее - в других форумах.
Ответить
БудДен
Сообщения: 2976
Зарегистрирован: 07.10.18 14:01

Улучшить отладочную печать

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

Однако отладочная печать всё ещё не такая, как надо. Возникло противоречие: трассировка не терпит рекурсивного вызова и исключений, а код, выводящий комментарии к сущностям (например, для открытого файла это может быть имя, а для поля ввода - место в иерархии компонент), не может быть слишком надёжным. Видимо, надо более активно перехватывать исключения в процедуре подробной печати пПиши и убрать блокировку.

Сделанная для Питона конструкция КРТ(123,"привет",укльНаЧтоТо) позволяет компактно вводить в код на Яре-2* массивы со встроенным полиморфизмом - вполне годится для того, чтобы передавать опции командам. Плотность текста резко возрастает, когда в языке есть именованные параметры.

Эту возможность можно применить для передачи параметров в процедуру пПиши, однако пока страшновато - код КРТ слишком новый, если в нём что-то не так, то и всё система не будет работать. пПиши является встроенной процедурой, а там параметры разбираются вручную в коде компилятора - лучше сделать как-то так:
пПиши(моёСтранноеЗначение,{1,2,3})
где литерал множества позволяет закодировать несколько булевых параметров, например:
* выводить ли место в исходнике, откуда вызвана пПиши (в трассировке это всегда выводится)
* печатать ли команду для инспекции
* блокировать ли вывод
И т.п. Если нужно передать какой-то ещё параметр, например, глубину печати дерева, то их уже можно сделать отдельными именованными параметрами, которые разобрать прямо в компиляторе
Тогда будет как-то так:

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

пПиши(моёСтранноеЗначение,{1(*неВыводитьМестоВИсходнике*), 2(*неПечататьКомандуДляИнспекции*)}, "пределГлубины", 8);

Ответить