语法 - 左递归

时间:2014-02-05 00:55:43

标签: recursion grammar left-recursion

我在理解左递归方面遇到了问题。我知道这是一个左递归:A-> Aa 你能告诉我这是否是递归? A-> AA

你能解释一下为什么这是间接的左递归吗?

  • D ---> dcD'| SD'
  • D' - > DbaD'| DcD'| ë

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

如果从非终端E开始并且应用规则,您会找到一个以E本身开头的字符串,语法将保持递归。如果它是一个直接规则,那么它就像A- > Aa一样直接递归递归。如果你必须申请更多规则,那么它是间接的。

我假设你的语法是

- `D ---> dcD' | D'`
- `D' --> DbaD' | DcD' | e`

然后你有推导

 D -> D' -> DbaD'

所以这是间接左递归。

现在,如果您确定存在S,那么这取决于您可以从S获得的内容。但是如果在D派生的任何单词的开头都没有S,那么它就不会递归。

顺便说一下,最好在https://cs.stackexchange.com/

上提出这类问题