在计算机科学里面,左递归是一种递归的特殊状况。
在上下文无关文法内里的说法,若一个非终结符号(non-terminal)r
有任何直接的文法规则或者透过多个文法规则,推导出的句型(sentential form)其中最左边的符号 又会出现r
,则我们说这个非终结符号r
是左递归的。
使用类似的方式我们可以定义出某文法本身是左递归的。
"一个文法是左递归的,若我们可以找出其中存在某非终结符号A,最终会推导出来的句型(sentential form)里面包含以自己为最左符号(left-symbol)的句型"
直接左递归(Immediate left recursion)以下面的句型规则出现:
这里(recursive descent parser)可能会像这样:
function Expr(){ Expr(); match('+'); Term();}