我正在努力将这个EBNF转换为BNF。使用图像:

我将其转换为EBNF,现在我想将其转换为BNF。
EBNF I有两种选择:
number_constant ::= ( | "-") digit+ ("." digit+ | )
number_constant ::= "-"? digit+ ("." digit+)?我正在努力的部分是图表的中间部分,我将数字定义为1-9,所以不能使用数字作为关键字。我正在考虑分解图表,比如第一部分:
<min> ::= ' ' | "-"然后在中间部分:
<dig> ::= <digit> | <digit> <dig>合并后的代码看起来很简单:
<number_constant> ::= <min> <dig> <last_part>那我就不确定最后的部分了。
任何帮助都是非常感谢的。
发布于 2017-11-05 14:43:50
您的dig解决方案似乎是正确的。
最后一部分可以通过以下方式实现:
<last_part> ::= "." <dig> | ""发布于 2020-07-10 22:37:30
扩展的BNF确实可以让事情变得更加简洁。
以下是基于构成十进制数的语义的变体:
<number_constant> ::= <integer>
| <integer> '.' <whole_number>
<integer> ::= <integer>
| '- <whole_number>
<whole_number> ::= Digit
| <whole_number> Digit

https://stackoverflow.com/questions/47084723
复制相似问题