如何消除LL解析器的左递归

时间:2016-04-24 17:24:42

标签: parsing compiler-construction context-free-grammar ll

如何消除以下类型的左递归。我似乎无法对这一特定规则适用一般规则。

A -> A | a | b

通过使用消除规则:

A  -> aA' | bA'
A' -> A'  | epsilon

还有离开递归。

这是否说明语法是否为LL(1)?

谢谢。

1 个答案:

答案 0 :(得分:1)

请注意规则

  

A→A

从某种意义上说,

完全没用。对于应用此规则的派生,它没有做任何事情。因此,我们可以安全地从语法中删除它而不改变语法产生的内容。这留下了

  

A→a | B'/ P>

是LL(1)。