如何创建.Net编程语言?

如何创建.Net编程语言?,.net,visual-studio,parsing,compiler-construction,.net,Visual Studio,Parsing,Compiler Construction,我使用一些可用的各种解析工具创建了几种不同的完整编程语言。但是,如何创建一种运行.Net framework的编程语言?我需要输出.NETIL并编译它吗?还是有更高级别的抽象 另外,有没有一种简单的方法可以让语言在Visual Studio中工作?编译器负责将它得到的代码转换为ILCode。ILCode是所有.net语言编译的通用语言。此代码在运行时由JIT编译器进行解释。当然,它可以依靠框架中的CodeDom类来实现这一点,例如,如果您使用C语言编写编译器。您的编译器可以输出CIL汇编语言或汇

我使用一些可用的各种解析工具创建了几种不同的完整编程语言。但是,如何创建一种运行.Net framework的编程语言?我需要输出.NETIL并编译它吗?还是有更高级别的抽象


另外,有没有一种简单的方法可以让语言在Visual Studio中工作?

编译器负责将它得到的代码转换为ILCode。ILCode是所有.net语言编译的通用语言。此代码在运行时由JIT编译器进行解释。当然,它可以依靠框架中的CodeDom类来实现这一点,例如,如果您使用C语言编写编译器。

您的编译器可以输出CIL汇编语言或汇编(
.dll
/
.exe
)文件

请看,它描述了CLI(目标平台)、CIL(汇编语言)和程序集的二进制文件格式


顺便说一句,这个标准也是。

有一个C语言内置的LOLCode编译器,这可能是一个很好的起点

至于在VisualStudio中实现,有一个名为Spark()的开源视图引擎,它在让intellisense工作方面做了一些工作。环境是不同的,但教训是一样的,很难,这不是一个很好的记录过程

还是有更高层次的抽象

为了完整起见,您可以输出C#或VB.NET。这两个编译器都是运行时的一部分


但是,如果这是一个“真正的”编译器,这是有争议的

你会想看看这个项目。它提供为程序集生成元数据和MSIL所需的一切。以及调试.pdb文件,这对于启动您的语言非常重要


有一个姐妹项目,CCI代码模型和AST,这可能也很有用,这取决于您的进度。

将您自己的语言集成到Visual Studio中的一个很好的例子是该项目。

不确定这是否是您要找的,但在我创建了一个作为练习的项目之后(包含实际的编译器源代码,也是)

实际上,实际的编译器可以用任何.net语言编写,并使用名称空间创建程序集、类、方法等,并向其中发出IL

创建一种新语言的实际工作显然涉及到编写一个解析器/词法分析器/分析器/任何可以将程序分解成类并“馈送”编译器的东西-对不起,我没有这方面的经验,但请检查如何编写编译器


您确实希望阅读以了解CLI的工作原理:它支持什么数据类型以及它实际执行什么命令。

您将输出.NET IL。该.NET运行时将处理编译和运行该代码。不确定其他部分。类似的,请参阅MSDN杂志上的这篇文章,介绍如何为给定语言在C#中实现编译器:链接已失效。这是一个archive.org快照:您如何获取IL代码并编译/运行它?您是否需要生成一个.NET Core、Framework和/或Mono可以运行的项目?编译器是从一种形式转换为另一种形式的任何东西。这是否已被Roslyn弃用或仍然相关?CCI有助于创建任何语言,Roslyn ta仅限RGTS C#和VB.NETThis已停止使用:“向前看,CCI中的服务性投资将仅用于支持现有用途。”嗯,不,“停止”和“完成”之间有区别。当您无法再下载它时,它就停止了。很多Microsoft项目已经完成,它们仍然为它提供服务,以提供关键的错误修复,但不再添加到它。例如,Winforms已经完成了14年,很多人仍然在使用它。实际上,它得到的服务更新比WPF还多。