0

我计划将我前段时间构建的工具迁移到 Jetbrains Mps,我正在评估它,但有一些疑问。

主要是如果 Mps 中的模型转换只是 1 模型到 1 模型。或者我可以结合几个模型来生成其他一些模型。

认为我有一种称为“页面语言”的语言,它代表页面结构。它允许您定义一种页面的一般布局。例如,我定义了两个模型“List page”(给定实体的列表记录)和“Instance Page”(用于“crud”操作的页面)。

还有另一种语言称为“实体语言”,它可以让您定义实体。在一个解决方案中,我创建了这种语言的 3 个模型:Person、City 和 Country 来表示 3 个实体。

我需要构建的生成过程必须结合 3 个实体的模型和 2 个页面的模型来生成 6 个其他语言的模型,这将代表每个完整的页面,具有来自页面模型的结构和来自实体模型的实体字段。

Mps可以做到这一点吗?

例如,我是否可以遍历 Entities 模型并为每个模型执行 Pages 模型的嵌套迭代,然后触发一个将当前实体与当前 Pages 模型相结合的模型转换?

非常感谢。

4

1 回答 1

0

在 MPS 术语中,我们称这些实体不是模型而是“根节点”。您当然可以生成这样的节点组合——我可能会使用预处理脚本来生成六个组合作为引用原始实体的新根节点。它的概念可能看起来像这样:

concept TemporaryCombination extends BaseConcept ... references: page:Page[1] entity:Entity[1] ... 然后 TemporaryCombination 概念的根映射规则可以驱动目标节点的生成。

于 2015-05-04T17:06:09.433 回答