BNF用于逗号分隔序列?

时间:2012-09-19 13:42:49

标签: grammar bnf

无法为字符序列(可能为空)提供BNF语法,用逗号分隔,但不以逗号开头或结尾,

所以这没关系:

  <--- Empty sequence is ok!
A
A,B
A,B,C

这不行:

A,
,A
A,,B
AB

空箱子把我扔了。到目前为止我得到的是:

<char-seq> ::= <empty> | <char> , <char-seq> | <char>

但这会产生A,之类的字符串: - (

2 个答案:

答案 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>
相关问题