Александр Гольдебаев «Roslyn as a Service: как я написал свой компилятор в .NET-инфраструктуре»
.NET разработчики пользуются Roslyn каждый день, но пайплайн работы компилятора скрывается за привычными API, оставаясь в головах обывателей набором разрозненных терминов. В этом докладе мы соберём компактную модель представления: разберём на реальном примере, где в Roslyn живут AST, IR и CFG и зачем столько представлений, казалось бы, одного и того же текста исходной программы. В результате у слушателя останется более ясное понимание не только работы компилятора в целом, но и модели СaaS со всеми её бенефитами. Соберём ментальную модель того, как устроен компилятор c точки зрения обычного разработчика, без ухода в глубокую теорию; Посмотрим, как Roslyn реализует модель Compiler as a Service на практике, какие API предоставляет для парсинга, анализа и генерации IL; Разберем что toolchain уже решает, а что для собственного языка все равно придется проектировать самому; Постараемся понять а зачем оно вообще нужно, даже если в планах нет написания своего компилятора.
.NET разработчики пользуются Roslyn каждый день, но пайплайн работы компилятора скрывается за привычными API, оставаясь в головах обывателей набором разрозненных терминов. В этом докладе мы соберём компактную модель представления: разберём на реальном примере, где в Roslyn живут AST, IR и CFG и зачем столько представлений, казалось бы, одного и того же текста исходной программы. В результате у слушателя останется более ясное понимание не только работы компилятора в целом, но и модели СaaS со всеми её бенефитами. Соберём ментальную модель того, как устроен компилятор c точки зрения обычного разработчика, без ухода в глубокую теорию; Посмотрим, как Roslyn реализует модель Compiler as a Service на практике, какие API предоставляет для парсинга, анализа и генерации IL; Разберем что toolchain уже решает, а что для собственного языка все равно придется проектировать самому; Постараемся понять а зачем оно вообще нужно, даже если в планах нет написания своего компилятора.



