Compiler for CLR



我正在努力构建一种使用.net/clr的小型语言或dst。除了大量阅读之外,我取得的最大进展是一个C#程序,它接受了一些基本输入(没有ebnf实际的词法分析或花哨的解析(,并使用ILgenerator创建了一个带有操作码的hellow-world程序。

这显然不是一个编译器,但我认为调用vm上的操作码就是编译器应该做的

在研究这个主题时,我注意到网芯3.0及更高版本不支持ILgenerator(ms"希望"将来再次支持它(。

我看了看Boo看起来很有希望,但注意到它卡在了.net上,有一些阻塞问题。

我想知道的是,

  1. 对于实际的编译器,您是否也会调用操作码,或者在没有ILgenerator的情况下如何与clr交互。我需要手动生成CIL/MSIL吗
  2. 有什么好的工具/语言可以定义CLR编译器,而不需要它为您做所有的工作
  3. 现在我需要针对coreCLR而不仅仅是clr吗

我试着把这些主题集中在.net/C#上,因为它是我在atm工作中使用的,我想了解CLR/编译器。

Boo维护人员在这里。

在研究该主题时,我注意到netcore 3.0及更高版本不支持ILgenerator(ms"希望"将来再次支持它(。

我看了看Boo看起来很有希望,但注意到它卡在了.net上,有一些阻塞问题。

这实际上是同一件事:;阻塞问题">无法保存程序集,因为Boo在最初编写时,Reflection.Emit基本上是城里唯一的游戏。现在有更好的工具,但重写IL生成器以使用它们是一个漫长而费力的过程。

对于实际的编译器,您是否也会调用jsut操作码,或者在没有ILgenerator的情况下如何与clr交互。我需要手动生成CIL/MSIL吗?

使用更好的工具。目前,通常建议使用System.Reflection.Metadata生成程序集。Roslyn(微软的C#编译器(有自己的内部系统,似乎是基于CCI的,尽管CCI已被官方弃用,不建议其他人使用。

有什么好的工具/语言可以为CLR定义编译器,而不用为您做所有的工作。

Boo编译器的大部分是用C#编写的。一些非常高级的作品是用Boo写的。最终,在Boo完成这一切会很好,但这是一个长期目标。

我现在需要针对coreCLR而不仅仅是clr吗?

是。根据.NET基金会的说法,.NET Framework 4在官方上是一条死胡同,而前进的道路是.NET Core,他们只是简单地称之为"。NET";这些天。当前版本被命名为";。NET 6;但它仍然是CoreCLR体系结构。

相关内容

  • 没有找到相关文章

最新更新