如何在 lbnf / bnfc 语法中调试'no production for X'?



在使用lbnf/bnfc时,在某些情况下,我希望它可以选择允许复数形式。然而,它总是说"没有"复数"出现在规则中",我不明白为什么。下面是相关的一行。SomeOther和SomeToken基本上是字符串。

HeadAuthors. Authors::= "AUTHOR" [Plural] ":" SomeOther SomeToken ;

Plural. Plural::= "S" ;

我会跳过列表,并将复数设置为如下规则

rules Plural ::= "S" | ;

关于rules宏的文档,参见https://bnfc.readthedocs.io/en/latest/lbnf.html#rules。

如果你想保留列表,那么你需要给复数一个分隔符或结束符,见这里https://bnfc.readthedocs.io/en/latest/lbnf.html#terminator,否则它不会成为一个列表。你可以直接写

terminator Plural "" ;

最新更新