在复习编译原理时,在消除左递归的地方有以下想法
首先,消除左递归的目的是为了避免自上而下分析法(LL(1))陷入循环
(另外,构造LL(1)文法还需要消除回溯,即消除左公共因子)
在消除左递归时,我们可以先分析文法中出现左递归的规则所构成的语言
话不多说,上例题:
A->Ab|d构成的语言1.左侧必含有d,2.b的个数为[0,无穷],即db(n-1)(n>=1)
第一条规则是为了满足1.条件,第二条规则是为满足2.条件,这样左递归就消除了
另外,多加几个例子
在复习编译原理时,在消除左递归的地方有以下想法
首先,消除左递归的目的是为了避免自上而下分析法(LL(1))陷入循环
(另外,构造LL(1)文法还需要消除回溯,即消除左公共因子)
在消除左递归时,我们可以先分析文法中出现左递归的规则所构成的语言
话不多说,上例题:
A->Ab|d构成的语言1.左侧必含有d,2.b的个数为[0,无穷],即db(n-1)(n>=1)
第一条规则是为了满足1.条件,第二条规则是为满足2.条件,这样左递归就消除了
另外,多加几个例子