99 строк C — и у вас работающий интерпретатор Lisp со сборщиком мусора.



Роберт ван Энгелен создал TinyLisp, в котором уместились:

- 21 встроенный примитив;
- лексическая область видимости;
- числа с плавающей точкой двойной точности;
- простой сборщик мусора;
- REPL — вводите выражение и сразу получаете результат.

Компактность достигается за счёт NaN boxing: числа и другие значения упаковываются в одно представление с использованием особенностей формата floating point.

Есть и версия для карманного компьютера Sharp PC-G850VS. Она компилируется прямо на устройстве его встроенным компилятором C и использует BCD boxing.

Самое полезное — вместе с исходниками автор опубликовал подробную статью с разбором реализации и примерами расширения языка. В репозитории также есть более читаемая версия с комментариями и варианты с оптимизацией хвостовых вызовов.

Хороший проект, чтобы разобраться, как устроен интерпретатор: от чтения выражений до вычисления и управления памятью.

https://github.com/Robert-van-Engelen/tinylisp
Просмотры: 8 985
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти