.net上用得比较多的代码生成有CodeSmith, T4, CodeDom...
CodeDom需要编程,CodeSmith和T4非常简单好用,CodeSmith提供了工具(UI)来辅助代码生成,T4没有UI,编辑器(所以智能提示就没有、语法检测功能非常弱,一个简单的错误,也难以找到地方,就像十几年前DOS下用C语言一样难以调试),但是T4提供了预处理模板,支持运行时代码生成,所以可以用在自己的程序中进行代码生成,非常好用。
到现在,感觉比较遗憾的是,C#的语法问题了。每个人都有不同的业务专注点,在深入一段时间后,发现要是那些业务抽象出来的逻辑,能在语言层次直接进行支持,那该多好。例如,C#泛型对运算符的处理,就非常恼火。有的人甚至用Expression来实现,有的人用dynamic来铺设捷径。
所以,心里想着,编译器怎么公开一个比较开放功能,用来实现自定义语法?
或者,有哪些模型,能确保一些比较灵活的自定义语法扩展?
这样,一部分就可以专注于平台的性能,一部分专注于业务了。