考查下列文法:
G(VT,VN,E,P)
其中:VT=+,*,(,),i);VN=E,T,F;E是开始符号;P为:
E→E+T|T
T→T*F|F
F→(E)|i
F*F+T是该文法的一个句型,其中 (1) 是句柄, (2) 是素短语, (3) 是该句型的直接推导, (4) 是该句型的最左推导, (5) 是该文法的一个句子。
(5)处填()。
A.T+(i+i)
B.i+(i+F)
C.i
D.(E)
参考答案:C
解析:
句型F*F+T的推导过程如下:
E[*]E+T[*]T+T[*]T*F+T[*]F*F+T,因为E[*]T*F+T,E[*]F*F+T,T→F,所以F是句型F*F+T相对于产生式T→F的直接短语,又因为它是该句型的最左直接短语,所以F是该句型的句柄。
同理,可分析出句型F*F+T的短语有F、F*F、F*F+T。由于素短语中至少应含有一个终结符,因此F不是素短语;由于F*F+T中包含了短语F*F,因此它也不是素短语。所以该句型的素短语是F*F。
因为句型F*F+T[*]F*F+T*F,所以F*F+T*F是该句型的直接推导。而F*F+I、F*F+F*F和i*i+T都不能由句型F*F+T直接推导出来。
由于最左推导是对句型右部的最左非终结符进行推导,因此在第(4)空的选择答案中只有(E)*F+T满足此条件。
因为句子是仅含终结符的句型,所以第(5)空的选择答案中只有i有可能是句子,而E[*]T[*]F[*]i,所以i是该文法的一个句子。