删除JavaCC中的直接左递归



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

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

,其中<AND>为"&&",<OR>为"||"。这导致了一些问题,因为它是直接的左递归。我该如何解决这个问题?

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

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

相关内容

  • 没有找到相关文章

最新更新