2010-01-18 2 views

ответ

3

Я думал о том, чтобы сделать его для UnrealScript, но я столкнулся с такими нечетными проблемами, как тот факт, что CodeBinaryOperatorType не включает эксклюзивную или операцию. Новые деревья выражений в .NET 4 выглядят как Лучшее представление о том, какие функции предлагает CodeDom на уровне блоков (как в блоке операторов, составляющих тело функции).

Я думаю, нам нужен новый CodeDom, который берет внешние части System.CodeDom и использует внутренние элементы System.Linq.Expressions. Затем сделайте результат возможным для вывода либо динамической сборки, либо исходного кода. (Теперь, когда я думаю об этом, создание сборной сборки на самом деле будет таким же, как создание нового «языка» для вывода исходного кода.)

Редактировать: Кроме того, вам также необходимо рассмотреть возможность внедрения API CodeModel , так как очень часто CodeDom реализуется, поскольку кто-то интегрирует новый язык в Visual Studio.

+4

Во время последнего симпозиума Lang.NET один из создателей языка жаловался на что-то подобное, и инженер Microsoft ответил (только наполовину шутит): «CodeDom может представлять любой язык, пока он является C#». Он в основном признал, что CodeDom является провалом и что деревья выражений (или, скорее, «Statement» Trees) - это путь вперед. –

+1

@ JörgWMittag: Можно ли использовать деревья выражений для генерации исходного кода для всего класса? –