自从我将 rascal 的 vscode 扩展更新到版本 0.11.2 以来,当我尝试测试我的语法时,我一直收到歧义警告和错误。我降级回 0.11.1,它像以前一样工作。我什至尝试了其他以前版本的扩展,它们的工作方式正常。可能是什么原因?
这是我的代码库的一个简短示例。
module lang::testlang::Expressions
extend lang::std::Layout;
extend lang::exprlang::grammar::Expressions;
start syntax Program = Expr;
syntax Expr
= :neq2
> left hashExp: Expr "#" Expr
;
在 0.11.2 版本中,对于像
2+2
这样的简单示例,它返回歧义错误,但不是 2 + 2
。使用 0.11.1 测试同样的事情不会给我警告或返回歧义错误
我们解决了该版本中扩展和语法如何工作的一些问题。要么你遇到了回归,要么语法依赖于一个统一的错误。
如果您可以制作一个最小的工作示例(并将其提交给问题跟踪器),我们可以帮助解决它。
我会说,由于名为
neq2
的空产生式,这个语法很可能是雄心勃勃的。您很少需要空的产生式,因为它们通常会导致模糊的解析森林。