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

Есть ли спецификация языка для clojure?

Есть ли спецификация языка для clojure? Что-то, что точно определяет лексический синтаксис и грамматику в EBNF или что-то подобное?

Самое близкое, что я мог найти, это clojure веб-сайт, но на самом деле это не совсем соответствует требованиям спецификации языка (несмотря на то, что это абсолютно замечательный ресурс). Если спецификация отсутствует, наш BDFL упоминает о каких-либо планах на один?

4b9b3361

Ответ 2

Грамматика связана fogus, которая находилась в плагине Eclipse против часовой стрелки, больше не используется этим проектом и удаляется из него. Если вы хотите получить более современную грамматику ANTLR для Clojure, см. Clojure.g4 (permalink) из grammars-v4, сборник "грамматики, написанные для ANTLR v4". Clojure.g4 мало и легко читается, и он успешно проанализировал Compojure и clojure.core в прошлом, но это не гарантирует правильного анализа всего кода Clojure.

Наиболее авторитетной спецификацией синтаксиса Clojure s является Clojure s исходный код. Clojure не использует абстрактную грамматику, а только пользовательский парсер, но вы можете понять грамматику после тщательного изучения реализации парсеров. Вот параграф Clojure s: LispReader.java (permalink).

Clojure s LispReader.java использует несколько классов из других файлов в тот же каталог, например LineNumberingPushbackReader, но большая часть кода находится в этом файле. В LispReader основная функция read. read использует isWhitespace, чтобы игнорировать пробелы и запятые. Он также обнаруживает числа и руки от разбора readNumber. Для большинства других символов, таких как ( и #, read передает интерпретацию объектам в macros и dispatchMacros массивах. Вы можете следить за кодом.

Существует также Clojure повторная реализация LispReader.java, называемая clojure.tools.reader, Его исходный код может быть легче читать, чем LispReader, поскольку он находится в Clojure, а не в Java. clojure.tools.reader имеет некоторые отличия от LispReader.java, которые в основном могут читать некоторые незначительные дополнительные синтаксисы, предложенные для Clojure и обработки ошибок лучше.

Ответ 3

Нет языковой спецификации. Если в будущем есть какие-то планы, я не слышал о них.