gpt4 book ai didi

java - 在 .jj 文件中检测到左递归

转载 作者:行者123 更新时间:2023-11-30 08:28:02 26 4
gpt4 key购买 nike

不确定是什么原因造成的。当我尝试编译文件时,出现错误“检测到左递归表达式...-> 片段...-> 表达式。

有这个的代码区域是这个部分

void statement() : {}

{
identifier() <ASSIGN> expression()
| identifier() <ASSIGN> <STRING>
| <EMARK> expression()
| <QMARK> identifier()
| identifier(arg_list())
| <BEGIN>(statement() <SEMIC>)+ <END>
| <IF> condition() <THEN> statement()
| <IF> condition() <THEN> statement() <ELSE> statement()
| <WHILE> (condition()) <DO> statement()
| {}
}

void expression () : {}
{
fragment()((<PLUS_SIGN> | <MINUS_SIGN> | <MULT_SIGN> | <DIV_SIGN>) fragment())*
}

void fragment () : {}
{
identifier() | <NUM> | (<PLUS_SIGN> | <MINUS_SIGN>)fragment() | expression()
}

我不太确定如何解决这个问题,如果有任何帮助,我将不胜感激!谢谢!

最佳答案

void fragment() #void : {}
|<LBR> expression() <RBR>

更改片段生成规则,其中包含表达式以在两侧包含括号。这应该可以解决您的递归问题。

关于java - 在 .jj 文件中检测到左递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20482797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com