Исходный код интерпретатора языка сценариев для изучения

Я хочу читать и учиться у исходного кода интерпретатора/компилятора скриптового языка. Какой интерпретатор/компилятор скриптового языка имеет самый простой, чистый и простой для чтения исходный код? Я бы предпочел, чтобы он был написан на C/C++ (в чем еще написаны компиляторы?) потому что я планирую написать компилятор в C.

6 ответов


посмотри lua, вы можете пройти через первые версии языка программирования и посмотреть, как он развивался. Он написан на C и имеет чистый и приятный код. Вы можете написать компилятор почти на каждом языке программирования, но большинство программистов выбрали C.


на CPython прерыватель существует уже довольно давно, и я бы предположил, что это было бы очень полезно для вас.


AngelScript очень хороший вариант для изучения компиляторов. Это язык со знакомым синтаксисом C / C++, сборка мусора, он объектно-ориентирован с наследованием и полиморфизмом, кросс-платформенный и компилируется в байт-код.

мой второй выбор был бы Луа.


Я бы рекомендовал, в качестве нежного введения, взглянуть на LLVM учебник.

Крис Латтнер создает простой язык игрушек Калейдоскоп чтобы показать различные фазы компиляции:

затем он демонстрирует, как добавить возможности JIT (необходимые для переводчик.)

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

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

(и, конечно же, чтение Книга Дракона).


взгляните на V8 для JavaScript. Каждый интерпретатором имеет компонент, называемый токенизатор. У GNU есть один, которого зовут Зубр. Взгляните на это тоже. Это может быть полезно. Chromium также использует некоторый токенизатор для интерпретации html на Webkit, но V8 является интерпретатором javascript.

Клаудио М. Соуза Жуниор


известный язык, но не простой (исходный код PHP). Вы можете воспользоваться исходным кодом .

исходный код PHP