Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Recursion 如何从A->;中删除左递归;Aα;|ε;_Recursion_Compiler Construction_Context Free Grammar_Left Recursion_Context Free Language - Fatal编程技术网

Recursion 如何从A->;中删除左递归;Aα;|ε;

Recursion 如何从A->;中删除左递归;Aα;|ε;,recursion,compiler-construction,context-free-grammar,left-recursion,context-free-language,Recursion,Compiler Construction,Context Free Grammar,Left Recursion,Context Free Language,我认为这种语法的左递归是不可移除的。如果我错了,请纠正我。 α是非末端的α ε是ε。可以从语法中删除左递归;以下是不带左递归的语法: A -> A' | ε A' -> α A A -> α A | ε 您还可以像@Mephy那样使用正确的递归: A -> A' | ε A' -> α A A -> α A | ε 请注意(正如@Mephy所说)这个语法是零或更多的αs(α*)。不确定这是否是本网站的主题,但你可以只交换A->αA |ε。这两个规则定义

我认为这种语法的左递归是不可移除的。如果我错了,请纠正我。 α是非末端的α
ε是ε。

可以从语法中删除左递归;以下是不带左递归的语法:

A -> A' | ε
A' -> α A
A -> α A | ε
您还可以像@Mephy那样使用正确的递归:

A -> A' | ε
A' -> α A
A -> α A | ε

请注意(正如@Mephy所说)这个语法是零或更多的
α
s(
α*
)。

不确定这是否是本网站的主题,但你可以只交换
A->αA |ε
。这两个规则定义将等效于常规表达式
α*
,即一个包含任意多个字母字符的序列(不包括任何字符)。