以下哪项适当地描述了句柄(适用于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称为Handle,因此{b,Ab,d,aAcBe}是句柄,用其LHS替换它的称为Handle-Pruning。
因此,选项D最适合。这个问题的测验