我在理解左递归方面遇到了问题。我知道这是一个左递归:A-> Aa 你能告诉我这是否是递归? A-> AA
你能解释一下为什么这是间接的左递归吗?
感谢您的帮助!
答案 0 :(得分:1)
如果从非终端E
开始并且应用规则,您会找到一个以E
本身开头的字符串,语法将保持递归。如果它是一个直接规则,那么它就像A- > Aa
一样直接递归递归。如果你必须申请更多规则,那么它是间接的。
我假设你的语法是
- `D ---> dcD' | D'`
- `D' --> DbaD' | DcD' | e`
然后你有推导
D -> D' -> DbaD'
所以这是间接左递归。
现在,如果您确定存在S
,那么这取决于您可以从S
获得的内容。但是如果在D
派生的任何单词的开头都没有S
,那么它就不会递归。
顺便说一下,最好在https://cs.stackexchange.com/
上提出这类问题