在 Rascal 中有没有一种方法可以从相应的数据类型生成语法的语法定义?

Is there a way in Rascal to generate the syntax definition of a grammar from its corresponding datatype?

让问题更具体一点。我想知道我是否可以从内置语法数据结构生成 Rascal 可解析代码,当然,它又是解析过的 Rascal 代码。我喜欢这个,因为它更易于阅读,也是一个不错的功能,因为它可以使解析的这一部分可以交谈。

所以来自这个实例:

data Grammar = \grammar(set[Symbol] starts, map[Symbol sort, Production def] rules);

像这样:

start syntax E 
    = E "+" T
    | T
    ;

syntax T
    = T "*" F
    | F
    ;

syntax F
    = "(" E ")"
    | "a"
    ;

是的,可以在 'lang:: rascal::format::Grammar'

中找到该实用程序

'grammar2rascal' 将整个语法格式化为定义相同语法的流氓程序。

'topProd2rascal' 将单个规则映射回其在流氓符号中的具体定义。