Planet Python на русском
Подписаться
Нед Батчелдер: Реализация микроязыка: Кальций
Я написал крошечную реализацию языка: Calcium.
Он предназначен для демонстрации того, как реализуются языки вроде Python. Он
содержит токенизатор, парсер, AST, компилятор, байт-коды и исполнительный движок,
все примерно в 300 строках кода.
Я сделал это, потому что часто вижу вопрос: разве Python не интерпретируемый? Почему
говорят, что он компилируемый? (Кстати, я также ответил на это в предыдущем посте в блоге:
Интерпретируемый Python или компилируемый? Оба варианта.) Может быть трудно объяснить,
что ваша программа на Python никогда не превращается в явную последовательность
нативных инструкций процессора, что люди часто подразумевают под "компилируемым".
Поэтому я написал Calcium, чтобы иметь его под рукой в следующий раз, когда этот
вопрос возникнет. Я думаю, будет полезно иметь возможность показать код
исполнительного движка, читающего байт-коды и выполняющего их.
Это также может стать интересной отправной точкой для тех, кто хочет поэкспериментировать с
реализацией языка. В нем почти ничего нет, поэтому есть много простых вещей (комментарии?),
которые можно добавить.