无法为字符序列(可能为空)提供BNF语法,用逗号分隔,但不以逗号开头或结尾,
所以这没关系:
<--- Empty sequence is ok!
A
A,B
A,B,C
这不行:
A,
,A
A,,B
AB
空箱子把我扔了。到目前为止我得到的是:
<char-seq> ::= <empty> | <char> , <char-seq> | <char>
但这会产生A,
之类的字符串: - (
答案 0 :(得分:9)
空char序列会给你带来麻烦。您需要一个匹配非空序列的规则,使其与匹配空的和非空的规则分开,如下所示:
<char-seq> ::= <empty> | <non-empty-char-seq>
<non-empty-char-seq> ::= <char> | <char> , <non-empty-char-seq>
答案 1 :(得分:2)
<char-seq> ::= <empty> | <chars>
<chars> ::= <char> | <char> , <chars>