BNF用于逗号分隔序列?

And*_*yuk 5 grammar bnf

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

das*_*ght 9

空char序列会给你带来麻烦.您需要一个匹配非空序列的规则,以与匹配空的和非空的规则分开,如下所示:

<char-seq> ::= <empty> | <non-empty-char-seq>
<non-empty-char-seq> ::= <char> | <char> , <non-empty-char-seq>
Run Code Online (Sandbox Code Playgroud)