Использование DLR для (в первую очередь) компиляции статического языка.
-
09-06-2019 - |
Вопрос
Я создаю компилятор, ориентированный на .NET, и ранее я напрямую генерировал CIL, но создание деревьев DLR значительно облегчит мою жизнь.Я поддерживаю несколько динамических функций, а именно создание функций во время выполнения и утиную типизацию, но подавляющее большинство кода полностью статично.
Итак, теперь, когда это объяснено, у меня возникли следующие вопросы:
- Использовалась ли DLR для статической компиляции, за исключением небольших примеров в блогах MSDN?
- Если да, то какие результаты были достигнуты?
- Если нет, то есть ли что-то принципиально препятствующее этому?
- Существуют ли какие-либо лучшие механизмы генерации кода, чем использование DLR или непосредственная передача IL?
Мы будем очень признательны за любую информацию об этом или ссылки на блоги/код/обсуждения.
Решение
Я пока не знаю, чтобы кто-нибудь использовал DLR таким образом, хотя это определенно один из предполагаемых вариантов использования.Стоит учитывать одну интересную вещь: деревья выражений DLR были объединены с деревьями выражений LINQ, поэтому IL, создаваемый для LINQ в какой-то еще необъявленной будущей версии Visual Studio, будет использовать код DLR.
Интересным аспектом выпуска DLR с открытым исходным кодом является то, что мы понятия не имеем, какие интересные вещи могут делать с ним люди за пределами компании :).