Теория интерпретаторов, частичных оценщиков и компиляторов
Итак, я изучал стековые машины, интерпретаторы, компиляторы и некоторые другие вещи, связанные с языками программирования и их общей теорией. Большинство материалов, которые я нахожу в книгах и в Интернете, очень специализированы и посвящены одной конкретной теме, например, переводчикам, без упоминания того, как они связаны с другими темами, например, частичными оценщиками. Есть ли хорошие начальные ресурсы для изучения взаимосвязей между интерпретаторами, компиляторами и частичными оценщиками? Под хорошими ресурсами я имею в виду то, что объясняет теорию вместе с конкретными реализациями. Чем больше я узнаю об этом материале, тем больше мест я вижу в своей повседневной работе о том, как все это можно применить, но нехватка дружественных для новичков ресурсов немного обломает.
1 ответ
Один проект, который использует как интерпретаторы, компилятор, так и частичные оценщики, это Truffle with Graal. вы реализуете интерпретатор AST в инфраструктуре Java Truffle, а компилятор JIT Graal компилирует его. Особенность в том, что реализация языка трюфелей должна специализироваться на подмножестве фактической семантики, соответствующей текущему исполнению. Graal производит машинный код только для этого специализированного подмножества и деоптимизирует, если предыдущие предположения о выполнении были признаны недействительными. структура также включает все методы выполнения AST, что является формой частичной оценки. Вы можете найти несколько статей в Интернете или непосредственно взглянуть на код.