在 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' 将单个规则映射回其在流氓符号中的具体定义。
让问题更具体一点。我想知道我是否可以从内置语法数据结构生成 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' 将单个规则映射回其在流氓符号中的具体定义。