我有以下的生产递归的深浅解析器 - 避免左递归
A -> Aa
A -> b
所以很显然,有左递归像
parseA() {
parseA();//recursion
parsea();
}
据说左递归可以使用可以避免以下规则:
A -> bA'
A' -> aA'|null
这里如何避免左递归?仍然存在递归在函数A'中。 有人可以解释我这个。我是这个主题的初学者吗?
我有以下的生产递归的深浅解析器 - 避免左递归
A -> Aa
A -> b
所以很显然,有左递归像
parseA() {
parseA();//recursion
parsea();
}
据说左递归可以使用可以避免以下规则:
A -> bA'
A' -> aA'|null
这里如何避免左递归?仍然存在递归在函数A'中。 有人可以解释我这个。我是这个主题的初学者吗?
这里如何避免左递归?在函数A'中仍然存在递归。
再次阅读。左递归被避免。非左递归不是。
所以仍然存在递归函数A'? – 2012-07-24 15:12:55
实际上这是什么“左”递归? – 2012-07-24 15:14:01
递归最左边的元素。所以像'A = A something'这样的规则是递归的。所有LL解析器的非左递归都可以。 – Puppy 2012-07-24 15:23:36
写出函数来查看发生了什么。递归现在是尾递归而不是左递归。 – 2012-07-24 15:13:28
实际上这个'左'递归是什么 – 2012-07-24 15:14:38
进入所有活跃的聊天室并向别人打招呼是没有礼貌的,只有链接到你的秒问题。 – 2012-07-24 15:16:33