MPS:抽象(无生成器?)语言及其实现

MPS: abstract (generatorless?) language and it's implementations

我以前在一个小项目(比如实验室项目)中使用过 MPS,所以我对如何使用 MPS 有基本的了解(虽然它是 2.4 版或类似的版本)。现在我正在尝试介绍一些构建在 MPS 功能之上的实用软件(理想情况下是 IntelliJ 的插件)。由于MPS应用不是很广泛,在这里请教有经验的人。

我想做的是将一些关系知识数据库访问(SQL 查询)包装到基于 MPS 的插件中。我希望能够快速开始并为现有的 jdbc-wrapping 库生成代码,并且在未来我希望能够切换到我的实现,添加特定于 db 的功能。同时,我想保留现有的用户模型,以便他们可以轻松地切换到一种新语言,并在这种新语言出现问题时回退。如何实现这种轻松切换功能?我的第一个想法是使用没有生成器的抽象语言,并在 Idea 的基于 mps 的模块中添加实现语言作为依赖项(一个或另一个),但我不确定这是否容易实现。

是的,如果我没理解错的话,这应该很容易实现。你不需要创造一种没有生成器的语言,但可以用生成器和所有的东西来设计你的语言。然后,如果你想简单地添加新的结构,用户将能够在已经定义的结构之外使用,你可以用一种更具体的语言来扩展这种语言,以获得特定于 db 的特性(如果你想要有多个专门的语)。 或者,如果您想继续使用相同的语言并对其进行更新,MPS 会提供迁移脚本,您可以在其中指定如何将使用旧版本语言构建的现有模型升级到新版本。 有关使用 MPS 制作 Idea 插件的起点,请参阅 https://confluence.jetbrains.com/display/MPSD30/Using+MPS+inside+IntelliJ+IDEA