【问题标题】:JavaCUP - How to convert this line of EBNF to CFG Grammar?JavaCUP - 如何将这行 EBNF 转换为 CFG 语法?
【发布时间】:2011-03-17 04:36:04
【问题描述】:

几天前我发布了关于将 EBNF 语法转换为 CFG 的帖子。好吧,我想我现在已经掌握了它的要点,但我对这个特定的有点卡住了:

你会如何转换:

MultiplicativeExpr -> PrimaryExpr (( '*' | '/' ) PrimaryExpr)*

去CFG?

我在这里的尝试是去掉末尾的 *(表示 0 或更多),并用递归的方式替换它。

【问题讨论】:

    标签: context-free-grammar ebnf


    【解决方案1】:

    你的想法是正确的。使用附加变量(递归),您可以这样做:

    MultiplicativeExpr -> PrimaryExpr SignExprList
    SignExprList -> ε | '*' PrimaryExpr SignExprList | '/' PrimaryExpr SignExprList
    

    当然这不是唯一的方法,例如你也可以做类似Sign -> '*' | '/'的事情,并在SignExprList中使用它...

    【讨论】:

      猜你喜欢
      • 2020-02-05
      • 1970-01-01
      • 2011-01-28
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多