我正在考虑编写一个小型 C# 编译器。
我一直在玩弄的一个想法是编写 C# 语法的一个子集,比如 ANTLR 的最高 2.0。然后,使用它来定位 LLVM 并为 C# 编写本机代码编译器?
这个想法甚至有意义还是行不通?有什么办法仍然可以拨打 BCL 吗?
我知道有CCI(通用编译器基础结构)可以帮助我简单地生成 .NET 可执行文件。但是我很好奇我上面所说的是否可能?
我正在考虑编写一个小型 C# 编译器。
我一直在玩弄的一个想法是编写 C# 语法的一个子集,比如 ANTLR 的最高 2.0。然后,使用它来定位 LLVM 并为 C# 编写本机代码编译器?
这个想法甚至有意义还是行不通?有什么办法仍然可以拨打 BCL 吗?
我知道有CCI(通用编译器基础结构)可以帮助我简单地生成 .NET 可执行文件。但是我很好奇我上面所说的是否可能?
不过,请查看限制部分。
更新:从 Mono 2.8 开始,LLVM 后端已经逐渐稳定。请参阅Mono 2.8 发行说明。
除了已经提到的 Mono 之外,微软还在自己的实现中工作,称为LLILC(它不仅仅是一个实验)。所以这很有意义。
除非您也想重写整个标准库,否则最好找一个不同的项目,如果您只是想找点事情做的话。一种可能是编写一个 .NET 字节码编译器或一个 IL 汇编器。