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