问题 问答题


对文法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】
对文法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)#是文法的句子。

问答题 简答题
填空题