Комментарии 19
Навеяло :) Правда из немного другой темы

var writeLine = typeof(Console).GetMethod("WriteLine", new[] { typeof(object) });
var proc = Expression.Lambda<Action>(Expression.Call(writeLine, Expression.Constant("Hello, imp"))).Compile();

proc();
С приходом .NET 4 вообще можно даже компильнуть такое дело и получить не лямбду, а MethodBody =)
Expression очень красиво и практично инкапсулирует методы рефлексии для кодогенерации.
насколько помню можно в итоге получить либо Func<>, либо передать MethodBuilder и записать байткод в него.
все очень красиво, но только на уровне отдельных функций.
Мне кажется это немного «неполноценный» компилятор, но для начала очень неплохо… (если развить идею то получился бы весьма симпатичный велосипед)
Ну да, это скорее backend для компилятора, нежели действительно компилятор :) Если интересно, в следующий раз напишу что-нибудь более относящееся к компиляторам.
Тема более чем интересна, не столько в плане реального применения, сколько в образовательных целях.
так Mono.Cecil — это обычная .NET сборка, ее можно не только из Mono использовать.

Я, к примеру, build task с Mono.Cecil наваял, теперь не надо PropertyChanged больше вызывать — само всё происходит
Ссылочку можно? :)
Я не очень сведущь в теме .NET и всем что с неим связано, просто поэкспериментировать хочется))
Ну, это и вовсе не компилятор в классическом понимании сего термина — ни тебе лексического анализатора, ни синтаксического, ни построения дерева. Это просто создание исполняемого файла, что не есть достаточным признаком компилятора.

А вообще после второго-третьего своего на коленке написаного «языка» приходит понимание, что не фиг изобретать велосипед, поскольку те же Pyhon, LUA и прочие прекрасно встраиваются в любое приложение за очень короткое время.
С удовольствием бы почитал статью о том как это делается, интересует в основном python. Не напишите?)
книга дракона — наше все. Причем не только в плане разведения сферических коней в вакууме, но и с чисто практической точки зрения — скриптовый язык встроить в приложение простенький, например.
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.