可能的错误:这个Rascal语法规则的含义是什么?

时间:2018-05-03 12:40:56

标签: context-free-grammar rascal

我正在努力将语法重写为同一语法的其他形式并使用函数grammar2rascal(g),但是在尝试写回跟随/先行限制时,它会产生(在我看来)奇怪的结果。我想知道是否有人可以向我解释这意味着什么以及为什么流氓会像这样工作。我假设流氓在内部重写了一些东西,因此想出了这个,但我仍然想了解它的意义和用法。

所以这里是:

lmtest

变为:

plm

看起来很好,但写回:

lexical Id = "a" !<< [a-z]+ !>> "b";

这完全删除了之前没有&#34; a&#34;规则的一部分。我错过了什么或是某种错误吗?

1 个答案:

答案 0 :(得分:2)

查看grammar2rascal的代码,有一个错误处理precede的错误。这已在1c7fed中修复,这应该会在大约一小时(欧洲中部时间16:00)的不稳定更新网站上显示。

事实上,正如你所期望的那样,它会打印出来:

lexical Id = "a" !<< [a-z]+ !>> "b";