使用MPS从一个DSL生成不同的文本语言

使用MPS从一个DSL生成不同的文本语言,mps,Mps,我正在寻找一种用几种不同语言生成代码的方法,好的开始将是ObjC,Java用于Android,Unity和JavaScript(Cordova)用于重复代码。目前,我正在用每种语言反复手动编写代码。我正在研究MPS,考虑开发一个DSL,并从中为每种语言生成不同的代码 我的问题是MPS允许为不同的语言创建不同的TextGen吗?是的,MPS允许您针对不同的语言。当然,您需要区分MPS中生成过程的两个逻辑“阶段”——生成器(执行模型转换)和textgen(将模型转换为文本)。生成器通常将DSL转换为

我正在寻找一种用几种不同语言生成代码的方法,好的开始将是ObjC,Java用于Android,Unity和JavaScript(Cordova)用于重复代码。目前,我正在用每种语言反复手动编写代码。我正在研究MPS,考虑开发一个DSL,并从中为每种语言生成不同的代码


我的问题是MPS允许为不同的语言创建不同的TextGen吗?

是的,MPS允许您针对不同的语言。当然,您需要区分MPS中生成过程的两个逻辑“阶段”——生成器(执行模型转换)和textgen(将模型转换为文本)。生成器通常将DSL转换为通用语言(仍然表示为AST),而为该通用语言定义的textgen将代码转换为文本。目前存在几种这样的通用“基本”语言——Java、C、XML和一些原型


通过为DSL定义的textgen将DSL直接转换为文本也是可能的,但仅适用于简单的DSL。

谢谢,您能给我介绍一下如何生成非Java代码的示例或指南吗?也许C会很好。