Подтвердить что ты не робот

Каковы некоторые практические небольшие реализации Lisp, которые внедряются в C?

Я рассматриваю способы встраивания языка Lisp в программу C, но я хочу сделать это без значительного увеличения размера программы. Он не должен быть быстрым или поддерживать множество функций. (Хотя макросы были бы хороши.) Это не приложение с интенсивным математическим учетом.

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

4b9b3361

Ответ 1

Hedgehog

Hedgehog - очень краткая реализация Lisp -подобного языка для младших и встроенных устройств. Он состоит из компилятора и интерпретатора байтового кода. Интерпретатор байтового кода написан в стандартном соответствии C, является эффективным и легко переносимым и может быть скомпилирован до очень небольшого исполняемого файла всего в 20 килобайт в наименьшей конфигурации для архитектуры Intel x86.

Диалог Hedgehog Lisp имеет надлежащую поддержку локальных и лямбда-функций, лексического охвата, переменных функций аргументов, сбор мусора, исключений, макросов и более ста предопределенных функций или специальных форм. Встроенными типами являются списки, символы, строки, 32-битные целые числа, AVL-деревья и кортежи размером до 16 элементов. Правильные 32-битные целые числа необходимы для различных операций на уровне бит во встроенных системах.

Hedgehog - бесплатное программное обеспечение. Компилятор и интерпретатор находятся под лицензией GNU Lesser General Public License (LGPL), а стандартная библиотека Hedgehog находится под лицензией, аналогичной BSD. Бесплатная версия работает на Linux и должна быть тривиально переносимой для любой системы POSIX.

Ежик на Гитубе

Ответ 2

Вы можете попробовать ECL (Embeddable Common Lisp). ECL - это полный Common Lisp, который легко встраивается в C-программы и генерирует небольшие двоичные файлы. Это не так быстро, как SBCL.

Ответ 3

PicoLisp. Активно развивается и "используется с 1988 года в процессе разработки, исследований и производства приложений".

http://www.software-lab.de/down.html

Ответ 4

GNU Guile - это реализация Схемы специально для встраивания в другие программы.

Ответ 5

Существует также вариант Lisp, называемый NewLisp. Он имеет размер около 200 тыс. (Небольшие изменения в зависимости от платформы) и может быть встроен. Он поддерживает макросы и работает на всех основных платформах. Лицензия - GPL.

Ответ 6

TinyScheme довольно мало. Нильс Холм также сделал несколько небольших переводчиков Lisp, доступных из его веб-страницы.

Ответ 7

Попробуйте SIOD.

Ответ 8

LYSP очень маленький, хотя и довольно крутой. Переводчик с gc примерно предположительно 21k. Прошло некоторое время с тех пор, как я посмотрел на него, но я стал традиционным интерпретатором с читателем и принтером и eval.   Hedgehog (что мне нравится) имеет примерно такое же время исполнения, но он просто запускает скомпилированный байт-код (без чтения или принтера во время выполнения, без eval, компилятор - это отдельная и большая программа). Я думаю, что Lisp становится довольно неясным в наши дни, а встроенным интерпретатором по умолчанию в наши дни является Lua.

Мое предположение о том, что при загрузке NewLisp получается, что 200k довольно велико по сравнению с другими упомянутыми программами.

Ответ 9

Не забывайте, что мой любимый, XLisp, Дэвид Бетц. Стабильный с 80-х и когда-то в центре Autocad и музыкальной программы (Finale, я думаю).

Ответ 10

"MakerLisp" на одноплатном компьютере eZ80 или любом Linux: http://makerlisp.com - модель оценки схемы, макросы в стиле Common Lisp, цифры C и стандартная библиотека.