Nikhil Kothari 的Script#很可能是很长一段时间以来我在 JavaScript 领域看到的最令人惊叹的概念之一。这个问题不是关于 JavaScript,而是关于 .NET 运行时中的语言编译。
我一直对如何使用 .NET 平台为已经具有编译器(如 C#)的语言编写编译器非常感兴趣,该编译器将从原始编译器生成单独的输出,同时允许原始编译器生成输出在相同的构建操作期间使用相同的源,同时也引用/使用其他编译器的输出。
我不完全确定我是否足够了解这个过程,可以用正确的细节提出问题,但这是我目前看到这个过程的方式,根据 Script# docs 中的图表。我考虑过许多涉及复杂语言设计和编译的事情,这些事情可能能够利用这样的概念,我对其他人对这些概念的看法很感兴趣。
--
编辑:到目前为止,感谢您的评论;您的信息本身就很有趣,我想对其进行更多研究,但我的问题实际上是关于如何编写可以同时在同一源上运行的自己的编译器使用 CLR 产生多种不同类型的(可能)相互依赖的输出。Script# 用作示例,因为它使用相同的 C# 源代码生成 JavaScript 和程序集,同时使编译的程序集与 JavaScript 协作。我很好奇在设计这种性质的东西时各种方法和理论概念是什么。