«Компилятор как сервис» означает разбиение компилятора на отдельные части.
Вместо того, чтобы иметь один большой монолитный черный ящик, где исходный код входит в один конец, а скомпилированные сборки выходят в другой, вы получаете многоменьших (черных) ящиков с напечатанным выводом.
Таким образом, вы можете, например, передать исходный код в одно поле и получить абстрактное синтаксическое дерево (AST) из другого.Затем этим деревом можно манипулировать, прежде чем оно будет передано в оптимизатор, из которого поступает какое-то другое представление кода, которое может быть передано в компилятор, который затем выводит исполняемый код.
Так как я неЯ не знаю много о точных планах будущей .NET части «компилятор как сервис». Вышесказанное - просто дикая догадка, но вот как я вижу возможности.
Рефакторинг может затем работатьAST, и я бы предположил, что есть способ вернуться из AST обратно к исходному исходному коду, как с помощью отображения, так и преобразования (отображение означает, что вы можете взять узел в AST и спросить «какая часть исходного кода делает это»узел соответствует ", и преобразование будет означать" не могли бы вы дать мне исходный код, который теперь представляет этот AST, после того, как я его изменил ".)
Например, я бы увидел и JetBrains, и DevExpress, обасоздание инструментов рефакторинга для Microsoft, чтобы оценить свои усилия по написанию кода, который читает иОтличает код для рефакторинга от кода, предоставленного CAAS.