问题标签 [mps]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
52 浏览

mps - 我更新变量的类型(例如 Foo a; -> Bar b) MPS 如何更新 x.field 对新类型的引用?

TL;DR:我知道 MPS 2017.2 不会更新字段引用。问题是如何正确处理,以便 DSL 用户不必重新键入所有程序,以防发生单个“变量类型更改”

这是 MPS 的基本语言的示例:

如果我FooBarin更新Foo a;,那么测试代码看起来是一样的

如果我将变量的类型更新aBar,则test方法中的代码仍将引用Foo. 当然,check model识别损坏的参考,但是我想知道在 MPS 中解决这类 DSL 问题的预期方法是什么?

“更新”脚本是否应该找到所有“字段用法”并相应地更新模型?是否应该禁止“字段类型更新”并要求用户确认?(例如某种重构或任何意图)

我正在 MPS 中构建 61131 ST 语言,所以我正在研究“静态类型语言”类型的 DSL。

0 投票
1 回答
225 浏览

jetbrains-ide - 语音菜单示例 - JetBrains MPS - 如何构建、编译和运行示例项目

我正在尝试学习 DSL 工作台 JetBrains MPS。他们的示例之一是此处的电话语音菜单和此处源代码。

在 MPS 中打开项目时。我有这个关于依赖的警告/错误突出显示。

如何执行此项目以重现 JetBrains 的示例视频中所示的语音菜单演示?该视频大量讨论了如何使用文本到语音库来模拟语音菜单命令等,但它处于非常高的水平,并且跳过了重现结果的确切步骤。

任何帮助表示赞赏。

0 投票
2 回答
99 浏览

mps - 从内联模板访问节点的属性/子节点

我有一个template switch基于节点概念的地方,我想使用该节点的属性和/或子节点创建运行时对象。每个案例的右侧是一个内联模板。如何从该内联模板访问节点的属性/子级?更具体地说,在下面的屏幕截图中,需要从对应的and节点中提取line()and方法的参数。rectangle()LineCommandRectangle

请注意,Alt+Enter菜单不提供“添加属性宏”。

我正在使用 MPS 2018.1.5。

在此处输入图像描述

0 投票
2 回答
39 浏览

mps - SWITCH 宏的 initValue

在模板中,我想使用$SWITCH$宏。它要求我指定一个<initValue>

在此处输入图像描述

这有什么作用<initValue>?我应该/可以传递<initValue>什么?请注意,Ctrl+上不会出现自动完成建议Space

下面是宏的检查器:

在此处输入图像描述

0 投票
1 回答
42 浏览

mps - 如何在模板开关的默认分支中抛出错误(在生成时)?

我想确保只使用它可以处理的节点调用我的模板开关。如果它与无法识别的概念一起使用,我希望代码生成失败并出现错误。有没有办法从模板中抛出生成时错误?


注意:我一直在使用的解决方法是生成无效输出,这将导致错误,例如:

然后会产生一个错误

何时Fill是交换机无法识别的概念。

0 投票
2 回答
68 浏览

mps - 如何调用为抽象概念的具体实例配置的任何生成器规则?

我有一组概念节点,我正在使用宏Command进行迭代。是一个抽象的概念。我已经为具体的子概念定义了模板和缩减规则,例如:$LOOP$CommandOutline

问题:我如何从只知道节点是抽象类型的宏内部为具体概念调用适当的生成器规则?$LOOP$Command

[编辑] 由于建议的答案是特定于循环元素集合,当没有循环时我将如何做同样的事情?即如何为给定节点(例如当前节点的某个子节点)触发配置的规则。

注意 1:我尝试使用 just $LOOP$[null],希望元素节点能够通过适当的规则自动处理,但这只是null在输出中产生了 s 。

注2:我试过$LOOP[$COPY_SRC$[null]]了,但产生了

[编辑 2]这实际上是一个可行的解决方案。有什么帮助可能是使缓存无效(只是重建项目不起作用)。

注3:以前我使用模板开关来调用基于具体概念的适当模板,但我现在想支持自定义扩展,Command所以我不能再创建一个详尽的模板开关。

0 投票
1 回答
279 浏览

plugins - 如何在 Jetbrains MPS 中使用 mbeddr 的语法单元?

我想在 MPS 中使用 mbeddr 的语法单元,如此和链接视频中所示。

因此,我按照说明,下载了最新的稳定版 platform-distribution_2017_2_0.zip 并将所有插件复制到我的 MPS 2018.1 中。虽然版本号不完全适合,但重新启动后所有插件都没有任何错误(在插件管理器中)。

现在,我不知道如何在我自己的项目中使用它们。我有没有在某处添加一些东西?我有什么需要注意的吗?

0 投票
2 回答
1159 浏览

python - 我可以在 Web 应用程序中使用 JetBrains MPS 吗?

我正在使用 Flask 开发一个小型 Web 应用程序。这个应用程序需要一个 DSL,它可以表达 .pdf 文件的内容。

我已经使用 JetBrains MPS 开发了一个 DSL,但现在我不确定如何在我的 Web 应用程序中使用它。可能吗?或者我应该考虑切换到另一个 DSL 或直接在 Python 中制作我的 DSL。

0 投票
1 回答
94 浏览

mps - 有没有办法通过 Gradle 使用 mps 扩展?

我看到https://github.com/JetBrains/MPS-extensions通过 GitHub 发布版本,但是将工件集成到基于 MPS 的项目中看起来并不方便。

如果我的项目是通过 MPS 构建的并且依赖于 MPS 扩展,该怎么办?如果有一种方法可以通过命令行自动下载适当的扩展工件(例如./gradlew downloadExtensions) ,那就太好了

0 投票
1 回答
45 浏览

mps - 如何在 Jetbrains MPS 中的节点上运行撤消操作?

我正在创建一个插件,它将有两个按钮来在特定节点上执行撤消和重做操作。我想知道是否可以有问题地执行 IDE 撤消和重做操作?