Что лучше Lisp при разборе?
Я хотел бы использовать интерпретатор Lisp на диалекте Lisp в основном как учебное упражнение. Единственное, что меня выбрасывает, - это то, как много вариантов в этой области. Прежде всего, я немного заинтересован в изучении некоторых из Lisps, которые были вокруг (например, Scheme или Common Lisp). Я не хочу использовать Clojure для этого, потому что я уже использовал его.: -)
Итак, один из вариантов лучше, чем другие при разборе? И вы думаете, что это хорошая идея, чтобы сказать схему реализации в Common Lisp (или наоборот)? Или будет ли разница между этими двумя, чтобы выбросить меня?
И если это имеет значение, я бы хотел что-то кросс-платформенное. У меня есть ПК с ОС Windows, Mac и Linux, и я мог бы написать это на любом из них.
Ответы
Ответ 1
Есть несколько книг об этом:
Все вышеперечисленные книги настоятельно рекомендуется, хотя анатомия Lisp является старой, труднодоступной и трудночитаемой.
Как схема, так и общий Lisp отлично подходят для вашей задачи.
Реализация Common Lisp - большая задача, так как язык больше. Обычно один реализует Common Lisp лучше в Common Lisp, так как существуют Common Lisp библиотеки, которые могут быть использованы для новых Common Lisp реализаций.; -)
Ответ 2
PLT Scheme - отличная платформа для экспериментов с языками программирования, особенно с языками Lisp. PLT имеет расширяемый синтаксический анализатор (обычно называемый читателем на Схеме), который предоставляет макросы считывателя для управления встроенным синтаксисом; или вы можете полностью заменить читателя своим. Если вы предпочитаете использовать традиционные синтаксические анализаторы и лексеры lex/yacc, PLT поставляется с модулем анализатора, который также предоставляет их. В качестве бонуса он имеет полную документацию и репозиторий для сторонних пакетов (две вещи, которые отсутствуют во многих схемах).
Эталонная реализация Arc (arclanguage.org) является довольно простой и удобочитаемой
пример построения языка, который компилируется на Схему. Он использует PLT-ридер в основном, с несколькими макросами считывателя, чтобы изменить биты синтаксиса Схемы, которые отличаются от Arc. Также существует реализация JavaScript, доступная из репозитория пакетов PLT (planet.plt-scheme.org), если вы хотите увидеть, как реализовать язык не Lisp.