如何将自定义语言REPL添加到Visual Studio

时间:2017-10-03 10:19:39

标签: c# r visual-studio visual-studio-2015 visual-studio-2017

Visual Studio 2017(和2015)现在为交互式REPL和其他人提供了C#, F#, R, PythonView -> Other Windows ->和安装的任何内容都应该是可见的。

C# Interactive menu item

C# REPL

假设我想将自己的(现有的特定于域的)语言集成到Visual Studio中,以便通过单击其他Windows中的菜单项来启动其REPL。我只对使用Visual Studio的内置REPL服务与现有语言进行对话感兴趣 - 不是设计语言,也不使用任何提供的DSM设施。网络或微软。至少今天。

我将从哪里开始? Interactive R实施是否适合作为起点? (R解释器比C#更接近我的DSM)

这里的吸引力是Visual Studio集成以及重用现有组件的能力。

1 个答案:

答案 0 :(得分:0)

基于有关DSL的有限信息,有必要做出同样可以被视为要求的假设:

  1. 有一个DSL编译器能够生成部分语法树并将它们编译成部分二进制文件,方法体'或者有一个基于编译器的表达式评估器。

  2. 有一个运行时,即使作为部分二进制文件也可以执行DSL(如果编译结果是中间语言,那么您将需要虚拟机,否则系统特定的运行时库)。

  3. 在输入/输出交互窗口,运行时,它们之间的编译器和Visual Studio之间进行管道工作有很多工作。

  4. 有几个例子可以分析现有技术:

    罗斯林编译器

    脚本https://github.com/dotnet/roslyn/tree/master/src/Scripting

    互动服务https://github.com/dotnet/roslyn/tree/master/src/VisualStudio/InteractiveServices

    可以在REPL项目中直接使用的是:

    ReplHTML项目https://github.com/TiarkRompf/replhtml

    有许多工具包可用于快速开发DSL或原则上用于开发任何编程语言。查看Tiark Rompf的一些论文,他们正在开发基于Graal VM的跨语言虚拟机和高效的DSL /编程语言开发。他目前在普渡大学工作,但在此之前,他正在与Swalazeralnd的EPFL的Martin Odersky合作,编程语言开发框架及其与虚拟机的集成。

    我不鼓励你使用任何R,因为这是一个不应该学习如何使用或开发编程语言的例子。

    最终警告:这是一个大项目,可能需要多于一个工程师年才能成功完成。