Rascal MPL打印访问中所有遍历节点的id



是否可以打印访问中遍历的所有节点ID/值?取以下代码示例:

top-down visit(asts) {
case x: println(typeOf(x));
}

我现在得到了访问过的所有类型的节点。相反,我想知道遇到的所有x的ids/值(不打印整个树)。换句话说,我很好奇Rascal是如何穿越包含lang::java::m3::ASTs的list[Declaration] asts的。

作为一个栏,是否可以打印一份宣言的直系亲属/后代,无论其类型如何?或者打印ast的子代总数?

在文档中(https://www.rascal-mpl.org/docs/rascal/expressions/visit/)没有提到这一点。

  • 原则上Rascal值不具有";id";。它的结构是它的";id";它的id就是它的结构。如果需要,可以使用md5sum打印哈希,例如通过IO函数:case value x : println(md5sum(x));
  • Rascal从左到右遍历列表。在top-down模式中,它首先访问整个列表,在bottom-up模式中,首先访问子列表
  • 打印树中的节点总数:(0 | it + 1 | /_ <- t)
  • 打印节点的所有子级:import Node;case node n: println(getChildren(n));
  • 上升点是不可访问的,除非你匹配得更深,并在一个模式中包括两个级别的节点

最新更新