如何生成多种语言的类

bre*_*tik 5 javascript c# java code-generation mps

我正在寻找一种方法来生成多种语言(Java、C#、JavaScript)的一些模型类,以保持这些语言之间的一致性。是否有一些工具可以帮助我在一个地方定义模型并在所有三种语言的每次更改后生成它?我正在查看JetBrains MPS,但它似乎对于仅生成一种语言很有用,甚至在文档中写道,仅推荐一种语言生成器(如果有)。

到目前为止我发现的唯一方法是每种语言的 XML 文件和 XSL 转换,但我正在寻找更方便的方法。

Ank*_*nko 1

从最严格的意义上来说,这是不可能的,因为这些语言的某些特征不能互译。

例如,放入delegate Method();C#(正如您在建模时可能会做的那样),它会立即中断到 Java 的直接转换,因为 Java 没有委托方法的概念。

当然,两种语言都是图灵完备的,所以理论上它们确实可以翻译,但翻译者必须:

  1. 将输入语言编译为足够低级的语言,以便输入和输出语言以某种方式共享该语言作为源(可能是汇编器)。
  2. 将该低级语言反编译为输出语言中的许多等效形式之一。

上面的步骤 2 太复杂了,做起来太复杂了。(这就是为什么您可以将任何 C# 分发为已编译的 EXE,而不用担心有人窃取您的源代码。)