В качестве домашнего задания я должен написать определение БНФ для шестнадцатеричного числа <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>
<hex> <hex>
никогда не узнает, следует ли уменьшать до<letter> <hex>
или<hex> <digit>
в случае чего-то вродеA20C64
. Это и делает его двусмысленным. - person   schedule 28.01.2015