Closed Mazdaywik closed 5 years ago
При инициализации таблицы функций (SymTable.ref
) в неё помещаются все имена функций, которые возвращает ListOfBuiltin
, как внешние имена (неявный $EXTERN
). За избыточные extern’ы компилятор Си не карает, поэтому лишние записи — не проблема.
При компиляции и запуске refc/refgo имена ListOfBuiltin
нужно фильтровать — есть одна пустая строчка и есть две функции со знаками $
. Функция ListOfBuiltin
Рефала-05 не будет возвращать эти имена. Остальные имена присутствовать будут, но они по большей части будут описаны как $EENUM
.
Рефал-5 запрещает определять функции с теми же именами, что и встроенные. Рефал-05 будет разрешать (ведь иначе их не опишешь в Library.ref
).
Эта задача — подзадача для #2.
В рамках данной задачи необходимо реализовать встроенные функции Рефала-5 в том объёме, которого достаточно для самоприменения. Дублирующие старые функции Простого Рефала следует безжалостно удалять. И скорее всего, под
ножбритву Оккама пойдёт вся библиотека Простого Рефала кроме функций арифметики.Задачи точного повторения семантики не ставится, достаточно реализации в минимальном объёме. В частности, арифметические функции должны уметь работать только с парой
макроцифрчисел, результат выхода за границы не определён (будет реализовано заворачивание, как в раннем Простом Рефале).Должны быть доступны все встроенные функции, поддерживаемые версией
PZ Oct 29 2004
, большинство из них допустимо реализовать как$EENUM
.Полный список и тонкости семантики встроенных функций описаны в bmstu-iu9/refal-5-lambda#102.