问题标签 [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.
rascal - @doc 注释和从 Rascal 模块生成 doc 的目的
我通过 Rascal 模块找到了很多 @doc 注释,但不知道它们是如何工作的。我尝试创建 javadoc,但不直接支持。我觉得必须有一种方法可以通过通过 Rascal 项目中的模块运行进程来生成文档集合。任何帮助表示赞赏...
rascal - 不能遍历 AST 的节点,同时为每个节点分配一个 ID
这更像是一个简单的个人尝试,以了解 Rascal 内部发生的事情。必须有更好的(如果尚未支持)解决方案。这是代码:
给我
loadPHPFile 返回一个类型为:list[Stmt] 的节点,其中每个 Stmt 都是程序中可能出现的多种语句之一(在我的例子中是 PHP)。不谈为什么我会这样做,为什么上面的代码不起作用?尤其令人沮丧,因为在线文档中提供了一个非常简单的示例。请参阅:http ://tutor.rascal-mpl.org/Recipes/Basic/Basic.html#/Recipes/Common/CountConstructors/CountConstructors.html
rascal - 我将如何在 Rascal 中初始化一个空关系并向其添加元素?
看起来很简单,我如何初始化一个空关系(比如 [str,int] 类型),然后向它添加新元素?一个近似的流氓代码:
删除/修改操作的示例也将不胜感激。
rascal - 在访问 Rascal 中的节点时使用模式绑定到构造函数的参数
我正在尝试对代数数据类型进行自上而下的访问。当我找到某种类型的节点时,我还想绑定到该特定节点的节点,例如
所以我在case语句中试图做的是通过做几个模式匹配来搜索特定类型的节点:即类型assign(var( ),scalar( ))。我的意图是在找到特定类型的节点的同时将变量 left 和 right 分别绑定到 var( ) 和 scalar( )。我希望不要执行嵌套的“case”语句来检索有关子节点的信息。也许这是可能的,但我不确定。
rascal - 为流氓中的 ADT 确定特定类型的构造函数
问题如下:
如何指定条件来确定 e1 和 e2 的类型,并在以后采取措施,例如,
rascal - 用 Rascal 表达多态行为,用 Rascal 表达类 Java 递归
假设我有一个定义如下的数据类型:
其中一般模式是每个构造函数的第一个参数是“实验室”类型。那么,是否有一种有效/清晰的方式来表达模式匹配以执行以下操作?
虽然我在这里,并且反对 StackOverflow 提出一个问题/线程的建议,但 Rascal 是否支持简单的类似 Java 的递归?
yield - Rascal中(子)解析树的产量
如何在 Rascal 中获得(子)分析树的产量,即与子树关联的文本?例如,在访问期间,我遇到了一个声明(使用 Java/M3),现在我想获取该声明的文本。我试过“unparse”,但这给出了“不匹配任何声明的(重载)签名模式:unparse(Tree)”,我猜它只适用于顶级排序/起始符号。
abstract-syntax-tree - 为什么在 Rascal 中的 Java AST 中有表达式 `super()`?
Java AST 声明中的表达式之一是Expression::super()
. 使用哪个 Java 表达式super()
?
以这个示例类为例:
流氓中的 AST 是:
它不包含super()
没有参数的构造函数。仅在通配符绑定 ( wildcard(super(
) 的情况下存在 asuper(_)
但它有一个参数并在lang::java::m3::TypeSymbol
模块中进行了描述。
那么发生了什么,我是否缺少 Java 构造,或者 Rascal ADT 的定义是否与 AST 中生成的内容不正确?
rascal - 从列表和/或集合中删除元素
我有一种情况,我使用“私有”范围标识符定义了几个模块级实例变量。我需要这样做,因为这些变量将在模块内的多个函数中使用。此外,其中一些变量是“列表”或“集合”。我意识到这些变量的值在对模块中某个函数的重复调用之间持续存在。这正如预期的那样。
我还在创建一个测试,我在其中重复调用其中一个函数。我希望拥有实例变量的新副本(就像 Java 中的实例成员一样)。我似乎不能这样做。如果我尝试使列表/集合的内容无效,我会遇到如下麻烦:
因此,我修改了 nullifyInstanceVars() 方法以设置 [DataType1] data1={ }。它不起作用,因为我相信这只是创建了一个仅在函数范围内的新变量,并且实际上并没有清除元素!
任何帮助表示赞赏...
rascal - 在IDE中从Rascal跳转到某个位置的功能是什么
如果我有一个带有位置信息的 Rascal 可视化(例如,Java 方法的开始/结束行),我如何跳转到 IDE 并突出显示选定的行?
所以本质上,我怎样才能获得与在 Rascal 控制台中单击打印的 loc 相同的行为?
例如: