无法为字符序列(可能为空)提出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>