我看到这个问题被问了很多次,也见过人"解决";它……但它要么让我困惑,要么没有解决我的具体情况:
以下是大致情况:
block: statement*;
statement: <bunch of stuff> | expressionStatement;
expression_statement: <more stuff, for example> | method_invoke;
method_invoke: expression LEFT_PAREN <args...> RIGHT_PAREN block;
expression: <bunch of stuff> | expression_statement;
以表达式开头的expression_statement中的所有内容都使用间接左递归,我不知道如何修复它,同时仍然可以将这些语法用作语句,以便它们在块中可用(可以执行类似Print("hello world");
的操作它本身(一个语句),但也可以做一些类似int c = a + b.getValue()
的事情,作为表达式(一个表达式)的一部分。。。
我该如何以不同的方式处理它?
如果你需要更多信息,请让我知道,我会尽力提供
我知道要解决间接左递归,我必须复制一个或多个规则。。。我希望有一种比网上写的和这里说的更好的方法来处理它,但没有。我最终做到了,它奏效了,谢谢