将EBNF转换为BNF

时间:2017-11-02 21:10:44

标签: bnf ebnf

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

我将此转换为EBNF,并希望现在将其转换为BNF。 我有EBNF:

 Number_constant ::= ( | "-")  digit+  ("." digit+ |  )

我正在努力的部分是图的中间部分,我将数字定义为1-9,因此不能使用数字作为关键字。我正在考虑分解图表,例如第一部分:

<min> ::= '   ' | "-"

然后是中间部分:

<dig> ::= <digit> | <digit> <dig>

这样看起来就像是:

<number_constant> ::= <min> <dig> <last_part>

然后我不确定最后一部分。

感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您的dig解决方案似乎正确无误。最后一部分可以实现 <last_part> ::= "." <dig> | ""

答案 1 :(得分:0)

扩展的BNF可以使您的操作更加简洁。

这是根据组成十进制数字的语义的变体:

<number_constant> ::= <integer> 
                      | <integer> '.' <whole_number>

<integer> ::= <integer>
              | '- <whole_number>

<whole_number> ::= Digit 
                   | <whole_number> Digit

enter image description here