【问题标题】:Backus-Naur Form (BNF) RecursionBackus-Naur 形式 (BNF) 递归
【发布时间】:2015-10-19 18:11:33
【问题描述】:

我在如何在 BNF 中表达递归时遇到了麻烦。在我的例子中,“术语”可以由一个值、乘法和除法(如图所示)组成,我想出了以下内容:

<term> ::= <value>
              | <value> “*”
              | <value> “/”

【问题讨论】:

  • 我觉得应该是t := v | t * t | t / t
  • 这更有意义,谢谢。

标签: bnf


【解决方案1】:

递归规范是一种规范,其中非终结符递归地出现在生产规则中。 看看下面的语法,它是一个包含 +、*、$(exponentiation) 并使用 BNF 表示法的递归规范:

 <exp>     := <exp> + <term> | <term>
 <term>    := <term> * <factor> | <factor>
 <factor>  := <factor> $ <primary> | <primary>
 <primary> := id

正如您所见,LHS 中的所有非终结符 := 也都在生产中 (RHS),因此称为递归 BNF 表示法。

【讨论】:

    猜你喜欢
    • 2016-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多