以下哪项适当地描述了句柄(适用于LR解析)? (A) 它是句子形式中发生下一个移位或减少操作的位置
(B) 这是非终端产品,其生产将用于下一步的减量 (C) 它是一种产物,可用于未来步骤中的还原,以及下一个移位或还原操作将发生的句子形式中的位置 (D) 在下一步中,将使用产生式p以及句子形式中可以找到产生式右侧的位置 答复: (D) 说明: 让我们先了解一下这里使用的术语。
LR解析 –这里“L”代表输入字符串从左到右的筛选,“R”代表最右边的派生(因为它是自下而上的解析)。
句子形式 –假设对于给定的上下文无关语法G,我们有一个起始符号S,然后为了定义语法G生成的语言,即L(G),我们使用语法的产生式规则从S开始推导。经过一次完整的推导,我们得到了一个仅由终端符号组成的字符串w,即w属于L(G)。那么我们可以说w是语法G的一个句子。现在,当派生过程中,如果它得到某种形式q,其中q可能包含一些非终结符,那么我们说q是语法G的一种句子形式。甚至起始符号S也是语法G的句子形式(因为它也包含非终结符S)。
For Ex : Grammar is : S-> aAcBe A->Ab|b B->d Input string : abbcde Derivation : ( Top-Down, Right Most Derivation) S->aAcBe ->aAcde ->aAbcde ->abbcde
这里,{abbcde}是语法的句子(因为它只包含终端符号,{S,aAcBe,aAcde,aAbcde}是G的句子形式(因为这些形式在派生过程中包含非终端)
现在,让我们看看这个问题。
这个问题与LR解析有关,LR解析是一种自底向上的解析。
让我们使用上面相同的语法,因为这是一种自下而上的解析,我们需要从字符串“abbcde”开始,并尝试使用产生式规则获取s。
: abbcde ->aAbcde ( using A-> b ) ->aAcde ( using A-> Ab ) ->aAcBe ( using B -> d ) ->S ( using S-> aAcBe )
上述过程称为还原。
被LHS替换的产品的RHS被称为句柄,{b,Ab,d,aAcBe}是句柄,用LHS替换它被称为句柄修剪。
因此,选项D最适合。