cad*_*ian 30
考虑:
A ::= A B
Run Code Online (Sandbox Code Playgroud)
等效的代码是
boolean A() {
if (A()) {
return B();
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
看到无限递归?
BCS*_*BCS 17
对于谁有兴趣
A ::= A B | A C | D | E
Run Code Online (Sandbox Code Playgroud)
可以改写为:
A ::= (D | E) (B | C)*
Run Code Online (Sandbox Code Playgroud)
转换的一般形式是:任何一个非左递归析取,后跟任何数量的左递归析取而没有第一个元素.
改变动作代码有点诡计,但我的事情也可以插件.