【作业1】
已有文法: G[S]: S→SA, S→A, A→SB, A→B, A→(S), A→(), B→[S] (1)改写文法以满足递归下降分析的要求。
答:
S →SAS →A
A →SBA →B
A →(S)A→()
B →[S]B→[ ]
(2)画出非终结符号B的递归下降子程序。
答:
S →(S)Z21|()Z21|[S]Z31|[]Z31
A →(S)Z22|()Z22|[S]Z32|[]Z32
B →(S)Z23|()Z23|[S]Z33|[]Z33
Z11→ε|AZ11|BZ21
Z12→AZ12|BZ22Z13→AZ13|BZ23
Z21→Z11Z22→ε|Z12
Z23→Z13Z31→Z21
Z32→Z22Z33→ε|Z23
【作业2】
已有文法:G[S]: S→aBc|bAB, A→aAb|b|Cc, B→b|ε,C→c (1)求每个非终结符的FIRST集和FOLLOW集;
答:
(2)构建LL(1)分析表;
答:
Select(S→ aBc)=a
Select(S→ bAB)=b
Sel ect(A→ aAb)=a
Select(A→ b)=b
Select(B→ b)=b
Select(B→ ε)=c,#
Select(S→ aBc)=a
Select(S→ bAB)=b
Select(A→ aAb)=a
Select(A→ b)=b
Select(B→ b)=b
Select(B→ ε)=c,#
(3)判断字符串baabbb是否为该文法的句子。
答:
S=>bAB=>b aAbB=>baaAbbB=>baabbbB=>baabbb baabbb是该文法的句子
【作业3】
设已给文法G[S]: S→TaF|F, F→TbP|P, P→c|d, T→e|b. 构造此文法的算符优先矩阵;
+ *↑()i #
+ > < < < > < >
* > > < < > < >
↑> < < > < >
( < < < <= <
) > > > > >
| > > > > >
# < < < < <。