问答题 对文法G[S]:S→a|∧|(T);T→T,S|S:回答问题1~问题3。
【表】

表4-2 预测分析表
a
(
)
,
#
S
→a
→∧
(u)(2)(/u)
T
(u)(1)(/u)
→SN
→SN
N
(u)(3)(/u)
→,SN


1. 【问题1】
对文法G进行改写,然后对每个非终结符写出不带回溯的递归子程序。
【正确答案】改写文法为:
(0)S→d
(1)S→∧
(2)S→(T)
(3)T→SN
(4)N→,SN
(5)N→ε
非终结符 FIRST集 FOLLOW集
S {a,∧,(} {#,,,}}
T {a,∧,(} {}}…
N {,,ε}. {}}…
对左部为N的产生式可知:
FIRST(→,SN);{,}
FIRST(→ε):{ε}
FOLLOW(N)={}}
【答案解析】[分析]
对于文法
S→d|^|(T) T→T,S|S
由于SELECT(N→,SN)∩SELECT(N→ε)={,}∩{}}=[*],所以文法是。LL(1)的。
也可由预测分析表中无多重入口判定文法是LL(1)的。
(3)对输入串(a,a)#的分析过程为:
栈 当前输入符 剩余输入符 所用产生式
(STACK) (CUR CHAR) (1NOUT STRING) (OPERATION)
#S ( a,a)#... ..
#)T( ( a,a)#... S→(T)
#)T a ,a)#... .
#)NS a ,a)#... T→SN
#)Na a ,a).. S→a
#)N , a)#... .
#)NS, , a)#... N→,SN
#)NS a )#... .
#)Na a )#... S→a
#)N ) #... .
#) ) #... N→ε
# #
可见输入串(a,a)#是文法的句子。
【正确答案】文法是LL(1)的。
(1)→SN
(2)→(T)
(3)→C
【答案解析】
【正确答案】输入串(a,a)#是文法的句子。
【答案解析】