Если Вы просматриваете исходный код clojure-contrib , Вы видите, как библиотеки реализованы в clojure.
Вы можете также контроль" ClojureScript" под тем же исходным деревом.
Позволяет коду, записанному в очень маленьком подмножестве Clojure быть автоматически переведенным в JavaScript.
переводчик ClojureScript является полным приложением Clojure.
я также рекомендовал бы проверить Stewart Halloway Порт Практических образцов языка Common LISP к Clojure, если Вы уже не имеете.
Сначала компилятор "лексирует" исходный код. Это означает, что он преобразует источник в последовательность «токенов». Токены - это последовательности букв, цифр и символов, которые имеют значение для компилятора.
Затем компилятор «анализирует» последовательность токенов с первого шага. Это означает, что компилятор проверяет соответствие источника правилам ( грамматике ) языка программирования.
Затем компилятор выполняет синтаксический анализ , чтобы создать представление источник для определения семантического значения источника. Это шаг, на котором компилятор построит синтаксическое дерево .
Наконец, компилятор сгенерирует вывод, который фиксирует семантическое значение источника в целевом представлении (будь то машинный код, промежуточный язык, такой как Microsoft CIL , или другой язык программирования).
Краткие сведения см. В Википедии . Для получения более подробных сведений см. книгу о драконах (эту книгу должен изучить каждый студент, изучающий информатику).
См. this
По сути, волшебные эльфы и феи превращают читаемый человеком код в машинный код.
Очень краткий обзор: компилятор анализирует ваш код на наличие ошибок, а затем преобразует его в байтовый или машинный код.
Для лучшего обзора я бы прочитал статью в Википедии о компиляторах:
Или это .
Книга Дракона, первоисточник для компиляторов сборки.
Компиляция - это перевод исходного кода в машинный код. Обычно компилятор (или интерпретатор) генерирует промежуточный код, иногда называемый байтовым кодом, который запускается на виртуальной машине (так компилируется java). Байт-код переводится виртуальной машиной в машинно-специфический код, работающий в конкретной целевой архитектуре. Весь этот процесс можно рассматривать как «компиляцию»