Compiler construction 从语法中删除左递归
从以下语法中删除左递归: 问题1 问题2 我知道删除左递归的规则,但我很困惑。因此,如果有人请张贴这个语法的答案,这将是有益的Compiler construction 从语法中删除左递归,compiler-construction,grammar,left-recursion,Compiler Construction,Grammar,Left Recursion,从以下语法中删除左递归: 问题1 问题2 我知道删除左递归的规则,但我很困惑。因此,如果有人请张贴这个语法的答案,这将是有益的 根据评论更新: 我知道这2个是左递归语法: S -> SXY | a P -> P H 4 U | p 我知道如何从这些语法中删除左递归,但是其他语法呢 P -> P ... This is left recursive. P -> p ... Is this is also left recursive ? 首先,让我们把术语弄清楚:
根据评论更新:
我知道这2个是左递归语法:
S -> SXY | a
P -> P H 4 U | p
我知道如何从这些语法中删除左递归,但是其他语法呢
P -> P ... This is left recursive.
P -> p ... Is this is also left recursive ?
首先,让我们把术语弄清楚:你评论中的四行(我添加到问题中)是语法规则,而不是语法。每个只处理一个扩展;它们都不提供从起始符号S到一系列终端符号的路径 左递归规则是这样一种规则:对LHS(一个非终端符号(大写字母))的扩展会导致以相同符号开头的较长字符串。因此,P->P不是左递归的,因为规则没有意义P->P不是左递归的,因为它将非终端符号P扩展为终端符号P(小写) 前两条规则是左递归的,这是正确的
这能让你动起来吗?我相信它回答了您所有悬而未决的具体问题。“我很困惑”不是问题描述。要求别人给你答案是欺骗。这是一个可以获得帮助的地方:告诉我们你在转换过程中走了多远,描述一下你的困境,我们会帮你渡过难关。我知道这两个是左递归语法:S->SXY | a和P->pH4u | P,我知道如何从这些语法中删除左递归,但其他语法呢,它是左递归还是非左递归?P->P->这是左递归的。P->P->这也是左递归的吗?
S -> SXY | a
P -> P H 4 U | p
P -> P ... This is left recursive.
P -> p ... Is this is also left recursive ?