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

Lisp как язык сценариев в приложении С++

Эй, я смотрел на возможность добавления языка сценариев в свои рамки, и я слышал о Lisp и думал, что я отдам его. Есть ли виртуальная машина для Lisp как Lua и Python, или я ошибаюсь. Я нашел CLISP здесь, http://clisp.cons.org/, но не уверен, что это то, что я ищу.

Может ли кто-нибудь указать мне в правильном направлении?

4b9b3361

Ответ 1

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

Вам может быть интересно проверить ECL. Эта реализация специально разработана для внедрения (действительно, "E" означает "Embeddable"!) И имеет множество функций, которые могут быть вам полезны, включая возможность компиляции Common Lisp программ на C (а также предоставление байтовой компиляции и интерпретатор).

Ответ 2

Если вам не нужен весь Lisp, вам может понадобиться скорее решить реализацию схемы, например Guile, которая предназначена для быть включенным в другую программу.

Ответ 3

Попробуйте встроенный общий Lisp (ECL).

http://ecls.sourceforge.net/

Он предназначен для внедрения, и вы получаете только те части Common Lisp, которые необходимы для вашего языка сценариев.

Ответ 4

A Lisp - хороший выбор для встроенного языка. Многие считают, что Lisp сложно, но синтаксис относительно лёгкий, особенно для не-программистов. Существует, по существу, префиксная нотация и что он. Правила приоритета всегда однозначны. Названия функций и имена переменных могут быть одинаковыми. Вы в значительной степени можете использовать любые персонажи, которые вам нравятся для веселых имен и имен var.

С Lisp вы можете сгибать синтаксис по своему вкусу; пользователям не нужно изучать общий lisp. Это легко расширить и предоставить более простые средства, такие как выражение бизнес-правил или извлечение данных из файлов.

Я предполагаю, что моя точка зрения заключается в том, что мощность и сложность, называемые Common Lisp, позволяют предоставлять простые, специфичные для домена конструкции конечным пользователям. Многие другие встроенные языки означают, что пользователи изучают тонкости этого языка.

Ответ 5

Chicken Scheme - еще один вариант для внедрения. См. здесь для подробностей встраиваемого api.

Ответ 6

Есть несколько простых вариантов.

GUILE является языком расширения GNU. Это встраиваемая схема (диалект LISP). GPL (естественно).

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

Ответ 7

Немного пойдите в googling: Общий Lisp как язык расширения

Но имейте в виду, что Common Lisp не был разработан с нуля, чтобы быть языком расширения, в отличие от Lua или Guile.

Общий совет: попробуйте использовать язык расширения, который действительно упрощает работу по написанию, и помните, что мастеринг Lisp, чтобы вы могли быть действительно продуктивным с ним, может занять довольно много времени (и людей не так много что может стоять так много парнеров xD).

Ответ 8

Поскольку он не является Lisp, Fuzuli имеет синтаксис, аналогичный Lisp. Его легко интегрировать в приложения на С++. Официальный сайт http://www.fuzuliproject.org

Другим является newLISP в http://www.newlisp.org/, и он также не является Lisp, но очень близок к Lisp.

Ответ 9

Lisp - это семейство языков.

Общий Lisp - это стандарт ANSI, который огромен. Подумайте, С++ огромный. Не используйте его как язык script.

Если вы не нацеливаете довольно хардкорных программистов, Lisp в качестве языка сценариев будет... er... не очень хорошо. Вероятно. Вероятно, Lua лучше будет выглядеть как script.

Тем не менее, Lisp отлично (технически) для реализации языка сценариев.