В течение некоторого времени я думал о разработке небольшого игрушечного языка с нуля, ничего, что могло бы «править миром», но в основном в качестве упражнения. Я понимаю, что для этого нужно многому научиться.
Этот вопрос касается трех разных концепций (синтаксический анализ, выделение кода и завершение), которые кажутся мне чрезвычайно похожими. Конечно, парсинг и ASTgen - это часть компиляции, в то время как выделение и завершение кода - это скорее функция IDE, но мне интересно, в чем их сходства и различия.
Мне нужны подсказки от кого-то, кто более опытен в этой теме. Какой код может использоваться совместно этими концепциями и какие архитектурные соображения могут помочь в этом смысле?