如有错误请纠正
- 开发DSL并构建自定义编译器就像javac一样
- 用户创建DSL
文本文件
(而不是基于xml的model)- 用户调用
dslcompiler file.txt
就可以编译- profit
可以用MPS实现这些功能吗, 或者说我必须在MPS中自己编写并编译dsl文件
Julia Beliaeva(jetbrain)
你好, Alexander!
用户应该在MPS中编写DSL文件. 这是我们的目的-- MPS允许你很容易创建IDE支持的DSL, 因此在MPS IDE中这样做非常好. DSL文件在这里是model
文件并且他们保存为特殊的xml格式, 如果要得到基于文本的dsl, 你就要编写generator
(如果已经有其他语言的generator
就不用了). 这样你就可以编译文本文件了, 流程基本如下:
- 开发DSL
- 在MPS中创建DSL models
- 通过models生成文本. 可以通过MPS IDE (不想用MPS的话可以用 an ant script)
- 用户编译/运行生成的文本(这可以通过MPS来实现run configurations language)
Mihail Muhin(jetbrain)
现在不能通过MPS来编写文本语言, 但是我们想以后引入这个功能.这将可以转换文本到models(作者我想说的是, 我记得mps 3.x之后是可以将java导入成models的) 因此你可以使用文本语言但是你不能扩展并且编写解释器时会有限制
...
Julia Beliaeva(jetbrain)
MPS
models
并不是uml models, 他们更像是AST程序, 但是在MPS中使用就像是在写文本代码(尽管他们有很多不同, 总之不是文本代码). 每个在MPS的程序都是model
. 这些models可以有你想要的IDE支持(代码提示, 语义高亮, 查找引用, 等等)
好了, 我想说的是基本上每个人上来补了一刀. MPS是用于设计DSL的有力工具, 但不是代码编译器. 不过我觉得应该支持更多的文本代码转换到model, 这样就碉堡了. 现在只支持java转models