BNF 表示十六进制数

BNF for a hexadecimal number

作为家庭作业,我必须为十六进制数编写 BNF 定义 <hex>

这将使用<digit><letter>来完成,两者的定义如下:

<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
<letter> ::= A | B | C | D | E | F

教科书答案为:

<hex> ::= <digit> | <letter> | <hex> <digit> | <hex> <letter>

我同意这是一个正确的答案,但我想问一下这样的答案是否也是正确的:

<hex> ::= <digit> | <letter> | <hex> <hex>

不,只看 textbook grammarsuggested grammar (code)。注:解析树代表推导。