您将使用什么来构建新的 .NET 编译器?
我正在开发一种新的玩具语言,它将静态编译为 .NET 的 IL 代码。
我可以立即想到以下方法来实际生成 IL,但我对替代方案持开放态度:
- Cecil
- ILASM
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我正在开发一种新的玩具语言,它将静态编译为 .NET 的 IL 代码。
我可以立即想到以下方法来实际生成 IL,但我对替代方案持开放态度:
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
还有通用编译器基础设施(AST/Code、元数据),当然还有古老的 Reflection.Emit。我自己没有任何 CCI 经验,但此页面似乎是IL 翻译方面的良好起点。
There is also the Common Compiler Infrastructure (AST/Code, Metadata), and of course the venerable Reflection.Emit. I don't have any experience of CCI myself, but this page seems a good starting point for the IL translation side of things.
您可以使用此编译器生成器编写自己的语言。我用过。它真的很容易使用和理解。
CoCo/R
http://en.wikipedia.org/wiki/Coco/R
You can write your own language using this compiler generator. I used it. Its really easy to use and to understand.
CoCo/R
http://en.wikipedia.org/wiki/Coco/R
如果 MSIL 生成本身并不重要,您可以将您的语言“编译”(翻译)为 C#,然后使用常规的 dotnet 编译器。我认为这更容易做到,尽管您没有足够的空间来实现深奥的性能优化等。在任何我不关心优化编译速度的新语言情况下,翻译成通用高级语言肯定是我的首选。
if MSIL generation per se is not of the essence, you could "compile" (translate) your language to C# and then use the regular dotnet compiler for that. I would imagine that's quite a bit easier to do, although you don't get as much scope for implementing esoteric performance optimizations and so on. Translation into a common high level language would have definitely been my first choice in any such new language situation where I was not concerned with optimizing the speed of compilation.