Я создал несколько рукописных компиляторов для очень простых языков, но теперь я хочу попробовать свои силы в разработке динамического языка, похожего на упрощенный Python или Ruby. Однако мне было легко обдумать, как работают компиляторы. Примитивные компиляторы просто переводят. Но я не могу этого сделать, если язык динамичен. Мне нужно написать интерпретатор или виртуальную машину, которая отслеживает информацию во время выполнения и требует от меня гораздо больше работы.
Короче говоря, есть ли какие-то ресурсы, которые я должен проверить, учитывая, что знаю, как работают компиляторы, но хочу перейти на создание интерпретатора? Существует несколько виртуальных машин для динамических языков, но у меня нет проблем с прокруткой собственной. Это все только для моего личного опыта.
Я ищу информацию о том, как перейти от компилятора к интерпретатору. Если я уже сделал компилятор для языка X, но что теперь писать для интерпретатора, что нужно сделать, и есть ли какие-либо ресурсы, которые влияют на процесс?
Мне не нужны широкие или абстрактные ресурсы, рассказывающие о работе компиляторов или виртуальных машин. У меня много учебников на эту тему. Все ресурсы, которые я нашел в Интернете, предполагают, что у вас 0 опыта, и поэтому начинают с лексического или синтаксического анализа, или они чрезвычайно абстрактны. У меня есть работающий компилятор, но теперь я хочу превратить его в интерпретатор и добавить в язык динамические функции.
Я не мог найти ресурсы для этого процесса, он может быть слишком ограничен по объему, или ресурсы на «бэкэнде» переводчика, не будучи слишком теоретическими, поэтому я разместил здесь.