Visual Studio 2017(和2015)现在为交互式REPL
和其他人提供了C#, F#, R, Python
。 View -> Other Windows ->
和安装的任何内容都应该是可见的。
假设我想将自己的(现有的特定于域的)语言集成到Visual Studio中,以便通过单击其他Windows中的菜单项来启动其REPL
。我只对使用Visual Studio的内置REPL
服务与现有语言进行对话感兴趣 - 不是设计语言,也不使用任何提供的DSM
设施。网络或微软。至少今天。
我将从哪里开始? Interactive R实施是否适合作为起点? (R解释器比C#更接近我的DSM)
这里的吸引力是Visual Studio集成以及重用现有组件的能力。
答案 0 :(得分:0)
基于有关DSL的有限信息,有必要做出同样可以被视为要求的假设:
有一个DSL编译器能够生成部分语法树并将它们编译成部分二进制文件,方法体'或者有一个基于编译器的表达式评估器。
有一个运行时,即使作为部分二进制文件也可以执行DSL(如果编译结果是中间语言,那么您将需要虚拟机,否则系统特定的运行时库)。
在输入/输出交互窗口,运行时,它们之间的编译器和Visual Studio之间进行管道工作有很多工作。
有几个例子可以分析现有技术:
罗斯林编译器
脚本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,因为这是一个不应该学习如何使用或开发编程语言的例子。
最终警告:这是一个大项目,可能需要多于一个工程师年才能成功完成。