我正在进行为期6个月的毕业项目的开端。该项目的目标是实现一种脚本语言的.Net编译器。我在课程中学习了编译器构造,并且知道通常如何实现编译器的基本步骤,但我们使用Bison和GCC作为后端的简单编译器,因此我对在.Net平台上实现编译器不太了解。
在这个主题上进行了一些研究后,我找到了以下代码生成的替代方案(我不是在谈论编译器的其他重要部分,比如解析器——这超出了范围):
那么,在这里最有趣、教育性强、娱乐性高和前景光明的方法是什么?如果我有更多时间,我肯定会尝试所有方法,但我需要在6个月内提交我的工作,以获得积极的成绩...
提前感谢您, 亚历山大。
在这个主题上进行了一些研究后,我找到了以下代码生成的替代方案(我不是在谈论编译器的其他重要部分,比如解析器——这超出了范围):
- 使用Reflection.Emit进行直接代码生成。
- 使用Common Compiler Interface对Reflection.Emit进行抽象,以实现部分代码生成的自动化。
- 使用CodeDOM在运行时编译C#和VB。
- 出现了一种新兴的C#“编译器作为服务”的形式,名为Roslyn,现在可以作为CTP使用。
- DLR支持动态代码生成,并具有通过表达式树等方式进行运行时代码生成的一些接口。
- Mono附带了Mono.Cecil库,似乎也具有一些代码生成功能。
那么,在这里最有趣、教育性强、娱乐性高和前景光明的方法是什么?如果我有更多时间,我肯定会尝试所有方法,但我需要在6个月内提交我的工作,以获得积极的成绩...
提前感谢您, 亚历山大。
1
,2
和3
的一个厚包装器。 - SLaks