我对MPS没有任何个人经验,但最近一集Herding Code与MarkusVölter有关.这是我的理解.MPS是一个投影编辑器,这意味着您不是在解析和编辑文本,而是直接编辑下划线语言数据结构.正如Markus所提到的,MPS允许您定义自己的语言,但您也可以在现有语言中引入新的语言概念.例如,您可以在几分钟内向Java添加新关键字.MPS模糊了内部和外部DSL之间的界限,通过这种方式,您可以获得静态类型和工具支持,这在使用像Ruby这样的动态语言开发DSL时是无法获得的.
我在JetBrains工作.我领导MPS项目已有好几年了,现在我正在研究另一个完全用MPS编写的项目.根据我的经验,MPS值得使用:-)
你的问题的答案取决于很多事情.如果您有基于Ruby的系统,或者想要快速创建语言,那么基于Ruby的内部DSL可能是最佳选择.如果你想生成Java,并有时间学习MPS,MPS可能是最好的情况.您可能还会考虑像XText等系统,它们是基于Ruby的DSL和MPS之间的中间环节.