Ищете готовый интерпретатор языка Monkey — учебной мовы из книги «Writing an Interpreter in Go» и её продолжения «Writing a Compiler in Go»? Я реализую всю цепочку обработки с чистого листа и дополняю базовую реализацию теми функциями, что в книгах оставлены читателю в качестве заданий.
Что входит в работу:
— Собственноручно написанный лексер, разбивающий исходник на токены и хранящий позиции для внятной диагностики ошибок.
— Парсер Пратта с нисходящим разбором по приоритету операторов и построением строго типизированного AST.
— Обчислювач по дереву со целыми, логическими значениями, строками, массивами, хэш-картами, функциями первого класса и замыканиями.
— Компилятор в байткод и стековую виртуальную машину для настоящей производительности: таблица символов, пул констант и управление кадрами вызовов.
— Встроенные функции, конструкции `let`/`if`/`return`, функции высшего порядка и наглядный REPL.
Дополнительно по договорённости: дробные числа, циклы `while`/`for`, постфиксные и составные операторы, макросы quote/unquote, подключение модулей, опыты со сборкой мусора, объекты-ошибки и расширенная стандартная библиотека.
Всякая поставка сопровождается полным табличным набором тестов, опрятной историей коммитов и файлом README, разбирающим каждую стадию, чтобы вы учились прямо по исходному коду. Делаю на Go либо переношу архитектуру на другой язык-носитель. Хороший выбор для учащихся, преподавателей и всех, кому нужен компактный, но завершённый язык для практики.
Что входит в работу:
— Собственноручно написанный лексер, разбивающий исходник на токены и хранящий позиции для внятной диагностики ошибок.
— Парсер Пратта с нисходящим разбором по приоритету операторов и построением строго типизированного AST.
— Обчислювач по дереву со целыми, логическими значениями, строками, массивами, хэш-картами, функциями первого класса и замыканиями.
— Компилятор в байткод и стековую виртуальную машину для настоящей производительности: таблица символов, пул констант и управление кадрами вызовов.
— Встроенные функции, конструкции `let`/`if`/`return`, функции высшего порядка и наглядный REPL.
Дополнительно по договорённости: дробные числа, циклы `while`/`for`, постфиксные и составные операторы, макросы quote/unquote, подключение модулей, опыты со сборкой мусора, объекты-ошибки и расширенная стандартная библиотека.
Всякая поставка сопровождается полным табличным набором тестов, опрятной историей коммитов и файлом README, разбирающим каждую стадию, чтобы вы учились прямо по исходному коду. Делаю на Go либо переношу архитектуру на другой язык-носитель. Хороший выбор для учащихся, преподавателей и всех, кому нужен компактный, но завершённый язык для практики.