消除小量生产的左递归消除(Eliminating Epsilon Production for Le

2019-09-29 15:12发布

IM的算法从grammar.It左递归消除以下称取出小量生产,如果有任何

我有以下的语法

S-->Aa/b

A-->Ac/Sd/∈

取出小量生产的语法变得之后我可以看到

  1) S-->Aa/a/b

  2)A-->Ac/Sd/c/d

林困惑,其中A / B进来1)和c / d进来2)有人能解释一下吗?

Answer 1:

让我们来看看规则S->Aa ,如果A->∈S->∈a给刚刚S->a ,所以连同之前的规则,我们得到S->Aa|a|b

现在让我们检查规则A->AcA->∈c这让我们A->c

怎么样A->Sd ? 我看不出你是如何得到A->d作为一项规则。 如果这是一个规则,则字符串“DA”是由这个语法接受( S->Aa & A->d --> "da" ),而是试图建立此字符串与原来的语法-如果你开始S和字符串以完成a ,这意味着你必须使用S->Aa ,但后来为了有一个"d"你必须使用A->Sd ,这迫使我们有另一个"a""b" ,这意味着我们无法建造这个字符串,以及规则A->d是不正确的。



文章来源: Eliminating Epsilon Production for Left Recursion Elimination