CLR 编译器
Compiler for CLR
我正在努力构建一种使用 .net/clr 的小型语言或 dst。除了大量阅读之外,我取得的最大进步是一个 C# 程序,它接受一些基本输入(没有 ebnf 实际词法分析或花哨的解析)并使用 ILgenerator 创建一个带有操作码的 hellow world 程序。
这显然不是编译器,但我认为在 vm 上调用操作码是编译器会做的事情。
正在研究我注意到的主题ILgenerator is not supported from netcore 3.0 and up (ms 'wants' 以后再支持)。
我调查了 Boo 看起来很有希望,但注意到它卡在 .net 上,存在一些阻塞问题 atm。
我想知道的是,
- 对于实际的编译器,您还可以调用操作码吗?或者我如何在没有 ILgenerator 的情况下与 clr 交互。我需要手动生成 CIL/MSIL 吗?
- 有什么好 tools/languages 为 CLR 定义编译器而无需它为您完成所有工作。
- 现在我需要以 coreCLR 为目标,而不仅仅是 clr 吗?
我尝试围绕 .net/C# 展开这些主题,因为这是我在工作中使用的 atm 并且想了解 CLR /编译器。
这里是 Boo 维护者。
Researching the subject I noticed ILgenerator is not supported from netcore 3.0 and up (ms 'wants' to support it again in the future).
I looked into Boo looked promising but noticed it's stuck on .net with some blocking issues atm.
这实际上是一回事:“阻塞问题”是无法保存程序集,因为Boo最初写的时候,Reflection.Emit
基本上是唯一的镇上的游戏。今天有更好的工具,但重写 IL 生成器以使用它们是一个漫长而费力的过程。
For a actual compiler would you also jsut call opcodes or how do I interact with clr without ILgenerator. Do I need to generate CIL/MSIL by hand?
使用更好的工具。如今,通常建议使用 System.Reflection.Metadata
来生成程序集。 Roslyn(Microsoft 的 C# 编译器)有自己的内部系统,似乎是基于 CCI,尽管 CCI 已被正式弃用并且不建议其他任何人使用。
What are nice tools/languages to define a compiler for CLR without it doing all of the work for you.
Boo 编译器的大部分是用 C# 编写的。一些非常高级的部分是用 Boo 编写的。最终,如果能在 Boo 中实现所有功能就好了,但这是一个长期目标。
Do I need to target coreCLR nowadays instead of just clr ?
是的。根据 .NET Foundation 的说法,.NET Framework 4 正式成为死胡同,前进的方向是 .NET Core,如今他们简称为“.NET”。当前版本名为“.NET 6”,但它仍然是 CoreCLR 架构。
我正在努力构建一种使用 .net/clr 的小型语言或 dst。除了大量阅读之外,我取得的最大进步是一个 C# 程序,它接受一些基本输入(没有 ebnf 实际词法分析或花哨的解析)并使用 ILgenerator 创建一个带有操作码的 hellow world 程序。
这显然不是编译器,但我认为在 vm 上调用操作码是编译器会做的事情。
正在研究我注意到的主题ILgenerator is not supported from netcore 3.0 and up (ms 'wants' 以后再支持)。
我调查了 Boo 看起来很有希望,但注意到它卡在 .net 上,存在一些阻塞问题 atm。
我想知道的是,
- 对于实际的编译器,您还可以调用操作码吗?或者我如何在没有 ILgenerator 的情况下与 clr 交互。我需要手动生成 CIL/MSIL 吗?
- 有什么好 tools/languages 为 CLR 定义编译器而无需它为您完成所有工作。
- 现在我需要以 coreCLR 为目标,而不仅仅是 clr 吗?
我尝试围绕 .net/C# 展开这些主题,因为这是我在工作中使用的 atm 并且想了解 CLR /编译器。
这里是 Boo 维护者。
Researching the subject I noticed ILgenerator is not supported from netcore 3.0 and up (ms 'wants' to support it again in the future).
I looked into Boo looked promising but noticed it's stuck on .net with some blocking issues atm.
这实际上是一回事:“阻塞问题”是无法保存程序集,因为Boo最初写的时候,Reflection.Emit
基本上是唯一的镇上的游戏。今天有更好的工具,但重写 IL 生成器以使用它们是一个漫长而费力的过程。
For a actual compiler would you also jsut call opcodes or how do I interact with clr without ILgenerator. Do I need to generate CIL/MSIL by hand?
使用更好的工具。如今,通常建议使用 System.Reflection.Metadata
来生成程序集。 Roslyn(Microsoft 的 C# 编译器)有自己的内部系统,似乎是基于 CCI,尽管 CCI 已被正式弃用并且不建议其他任何人使用。
What are nice tools/languages to define a compiler for CLR without it doing all of the work for you.
Boo 编译器的大部分是用 C# 编写的。一些非常高级的部分是用 Boo 编写的。最终,如果能在 Boo 中实现所有功能就好了,但这是一个长期目标。
Do I need to target coreCLR nowadays instead of just clr ?
是的。根据 .NET Foundation 的说法,.NET Framework 4 正式成为死胡同,前进的方向是 .NET Core,如今他们简称为“.NET”。当前版本名为“.NET 6”,但它仍然是 CoreCLR 架构。