【问题标题】:Removing direct left recursion in JavaCC删除 JavaCC 中的直接左递归
【发布时间】:2016-10-26 15:52:56
【问题描述】:

我在 JavaCC 文件中有以下内容:

void condition() : {}
{
    expression() comp_op() expression()
    | condition() (<AND> | <OR>) condition()
}

其中&lt;AND&gt; 是“&&”,&lt;OR&gt; 是“||”。由于它是直接左递归,这会导致问题。我该如何解决这个问题?

【问题讨论】:

    标签: parsing recursion compiler-construction javacc left-recursion


    【解决方案1】:

    条件本质上是expression comp_op expression 中的一个或多个,由ANDOR 分隔。您可以执行以下操作

    condition --> simpleCondition ( (<AND> | <OR>) simpleCondition )*
    simpleCondition --> expression comp_op expression
    

    【讨论】:

      猜你喜欢
      • 2022-11-10
      • 2011-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多