如何在 lbnf / bnfc 语法中调试 'no production for X'?
How to debug 'no production for X' in lbnf / bnfc grammar?
在使用 lbnf/bnfc 时,在某些情况下我希望它可以选择性地允许复数形式。但是,它总是说“规则中出现的 'Plural' 没有生产”,我不明白为什么。
相关行如下。 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 "" ;
在使用 lbnf/bnfc 时,在某些情况下我希望它可以选择性地允许复数形式。但是,它总是说“规则中出现的 'Plural' 没有生产”,我不明白为什么。 相关行如下。 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 "" ;