问题标签 [rascal]

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 回答
121 浏览

rascal - 模式变量的类型

我发现有时我必须为模式变量明确指定类型,否则 Rascal 将无法按预期工作。控制台中的以下会话说明了一切:

为什么会这样?

0 投票
1 回答
354 浏览

rascal - 从 RASCAL 调用 java 函数

我可以从 Rascal 调用 Java 函数吗?我想编写 RASCAL 分析器,但想通过调用 java 函数来访问 CFG 节点。这在流氓中是否可能。简而言之,我可以包装现有的 java 应用程序并从 RASCAL 调用它吗

0 投票
1 回答
182 浏览

rascal - 语法规范中*和+的含义

我对语法规范的含义*+语法规范感到有些困惑。我期待类似的东西

表示以分号分隔和结束的语句块。但在文档中它说:

用分号分隔的语句块

我确实在一些代码中看到,这样的语法规范允许{ x = 1; x }解析语句。为什么会这样?

0 投票
1 回答
278 浏览

parsing - Rascal MPL 基本实体建模中的基本解析失败

我想运行一个简单的 Rascal MPL 解析示例,并尝试遵循 2011 年 5 月 3 日的 Rascal Language Workbench (18531D.pdf) 中的清单 1。我已经下载了当前的 Rascal MPL 版本 0.5.1,并且请注意,一些模块路径已更改。下面显示了我的 Entity.rsc 的内容:

我在这里假设过去NameIdent现在的情况IdType现在是什么Symbol。然后我继续如下:

但是,当我尝试执行关键parse功能时,我收到下面列出的错误。我哪里错了?(尽管我注意到我可以在 Rascal 提示符下声明一个Symbol变量的消息。)

0 投票
2 回答
128 浏览

set - 为什么流氓集合的元素在打印时没有排序?

为了可用性,当我写下面的代码

我希望 Rascal 控制台打印相同的内容,但在输出窗口中我看到:

这个例子当然过于简单了,因此排序并没有什么坏处。但是,在更复杂的示例中,我希望对输出进行排序,以便我可以更轻松地验证某个元素是否包含在集合中。

打印集的当前排序是否有意义?

0 投票
1 回答
104 浏览

rascal - 从流氓地图中删除一对

在流氓导师的这个页面上,我看到地图上定义了一个删除函数。

我有以下代码行:

运行此代码时出现以下错误:“调用的签名:delete(map[loc, list[str]], loc),与任何声明的(重载)签名模式都不匹配:list[&T] delete( list[&T], int); 条件 = 删除(符号) 条件 = 删除(符号)"

这是流氓中的错误还是我做错了什么?提前感谢您的帮助。

0 投票
1 回答
276 浏览

c++ - 如何在流氓 MPL 中使用 SDF 的 {avoid}

我正在尝试使用Rascal MPL设计一个岛语法,但遇到了一个问题:

在 SDF 中实现 Island Grammar 时,一种非常常见的方法是使用 {avoid} 属性定义“包罗万象”的水生产。如果其他产品适用,这会阻止解析器使用此产品。这允许指定一个默认行为,该行为可以被其他产品覆盖而不会产生歧义。一个非常简单的例子是:

我尝试用 Rascal MPL 重现这种行为。我的目标是创建一个岛语法,将所有条件预处理器指令收集到一段 C/C++ 代码中,并使用 Water 生成跳过其余输入。

我试图通过使用 ">" 运算符为ConditionalDirective产生更高的优先级来创建 {avoid} 效果,但这显然不起作用。解析树仍然包含歧义。

例如,如果我解析上面的代码,我会得到一个如下所示的解析树:

歧义解析树

据我从Rascal Documentation可以看出,在我的情况下,使用“优先级”运算符可能不是要走的路,但我看不到任何其他可能性。不过我认为有一种方法,因为 rascal 的作者明确指出,每个 SDF 语法都可以转换为 rascal 语法。

有没有办法用流氓 MPL 重现 SDF {avoid} 功能?或者是否有可能以某种方式过滤解析森林,重新应用优先级?

0 投票
1 回答
213 浏览

rascal - Rascal 单元测试框架是否支持测试夹具?

在 Rascal 中,您可以通过test在布尔函数上指定修饰符来定义测试函数。:test并通过在 Rascal 命令行中键入来运行它们。在这里查看详细信息。

是否可以以某种方式指定测试装置(用于测试套件)?例如setup()teardown()功能?

0 投票
1 回答
224 浏览

rascal - 导入模块后无法访问模块中的全局变量

我发现在 Rascal 控制台中,在导入包含全局变量定义的模块后,这些全局变量无法访问。只能访问全局函数名称。例如,在下面的代码中,在Foo控制台中导入后,我可以调用x()get 1,但取消引用x给我一个未绑定变量错误。为什么?

0 投票
1 回答
74 浏览

rascal - Rascal 的命令式模型是什么?

Rascal 感觉既实用又必要。它支持任务。但它也声称是纯净的。所以我想像分配这样的功能是模拟的。那么什么是 Rascal 的命令式模型,通过 monads 的 Haskell 方式或通过唯一性的 Clean 方式?