如何从 Rascal 的解析树中获取语法?

How to get the the grammar from the parsetree in Rascal?

我对此很陌生,但我已经开始编写 Rascal 代码,而且我已经被困了很长时间。我正在尝试获取解析树的语法,但我似乎无法设法检索它。

当您将鼠标悬停在此处的解析树上方时,您知道带有语法的黄色框吗? http://tutor.rascal-mpl.org/Recipes/Visualization/ParseTree/ParseTree.html#/Recipes/Visualization/ParseTree/ParseTree.html

我想以某种方式得到它。我正在尝试在 html 上可视化分析树。而且我不知何故认为最好先掌握语法,然后自己将树绘制成 html,或者有更好的方法吗?

感谢任何帮助!!

每个语法分析树节点都表示使用的每个语法规则。在库模块 Parsetree 中,您可以找到 Tree 数据类型的定义。每个分析树都是这种类型。每个 appl 项都有一个 Production 和一个 list[Tree].

类型的子项列表

使用模式匹配或场投影,您可以获得这些数据并绘制您的树。

您可以在 vis::ParseTree 中找到示例代码。

模块 lang::rascal::format::Grammar 也很方便,它具有以 Rascal 表示法漂亮地打印语法规则的功能。