不能为由逗号分隔的字符序列(可能为空),但不以逗号开头或结尾提供BNF语法,
所以这没问题:
<--- Empty sequence is ok!
A
A,B
A,B,C
这是不正确的:
A,
,A
A,,B
AB
空情况让我感到困扰。目前我的理解是:
<char-seq> ::= <empty> | <char> , <char-seq> | <char>
但是这样会产生像
A,
这样的字符串 :-(。空的字符序列是导致问题的原因。您需要编写一个匹配非空序列的规则,与同时匹配空和非空序列的规则分开,像这样:
<char-seq> ::= <empty> | <non-empty-char-seq>
<non-empty-char-seq> ::= <char> | <char> , <non-empty-char-seq>
<char-seq> ::= <empty> | <chars>
<chars> ::= <char> | <char> , <chars>