首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将EBNF转换为BNF

将EBNF转换为BNF
EN

Stack Overflow用户
提问于 2017-11-03 05:10:44
回答 2查看 394关注 0票数 1

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

我将其转换为EBNF,现在我想将其转换为BNF。

EBNF I有两种选择:

代码语言:javascript
复制
 number_constant ::= ( | "-")  digit+  ("." digit+ |  )

 number_constant ::= "-"? digit+ ("." digit+)?

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

代码语言:javascript
复制
<min> ::= '   ' | "-"

然后在中间部分:

代码语言:javascript
复制
<dig> ::= <digit> | <digit> <dig>

合并后的代码看起来很简单:

代码语言:javascript
复制
<number_constant> ::= <min> <dig> <last_part>

那我就不确定最后的部分了。

任何帮助都是非常感谢的。

EN

回答 2

Stack Overflow用户

发布于 2017-11-05 14:43:50

您的dig解决方案似乎是正确的。

最后一部分可以通过以下方式实现:

代码语言:javascript
复制
<last_part> ::= "." <dig> | ""
票数 1
EN

Stack Overflow用户

发布于 2020-07-10 22:37:30

扩展的BNF确实可以让事情变得更加简洁。

以下是基于构成十进制数的语义的变体:

代码语言:javascript
复制
<number_constant> ::= <integer> 
                      | <integer> '.' <whole_number>

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47084723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档