1、1第 3 章作业【编辑人:陈芳芳】1. 写一文法,使其语言是偶正整数的集合。要求:(1)允许 0 打头;(2)不允许 0 打头。【解】:(1) 允许 0 打头且含 0 的偶正整数集合的文法为:N(0|D|E)N|(E|0)D1|3|5|7|9E2|4|6|8(2) 不允许 0 打头的偶正整数集合的文法为:R(D|E)N|EN(0|D|E)N|(E|0)D1|3|5|7|9E2|4|6|8(3) 允许 0 打头的偶正整数集合的文法为:S0S|RR(D|E)N|EN(0|D|E)N|(E|0)D1|3|5|7|9E2|4|6|82.一个上下文无关文法生成句子 abbaa 的推导树如下:S2A B
2、Sa S B B A a b b a(1)给出该句子的相应的最左推导,最右推导。(2)该文法的产生式集合 P 可能有哪些元素?(3)找出该句子的所有短语,简单短语,句柄。【解】:(1)最左推导:S=ABS=aBS=aSBBS=aBBS=abBS=abbS=abbAa=abbaa最右推导:S=ABS=ABAa=ABaa=ASBBaa=ASBbaa=ASbbaa=Abbaa=abbaa(2) 产生式集合 P:SABS | Aa| AaBSBB | b(3) 短语: a , , b , bb , aa , abbaa直接短语:a , , b句柄:a3、给出生成下述语言的上下文无关文法:(1)anbn
3、ambm | n, m = 03(2)1n0m1m0n | n, m = 0【解】:(1)SAA AaAb | (2)S1S0 | A A0A1 | 4第 4 章课后作业1. 构造一个状态数最小的 DFA,它接受=0,1上所有倒数第二个字符为 1 的字符串。 (编辑:张超)解: 构造正规式:(01) * 1(01) 由正规式构造 NFA:0121 0,11 0 NFA 转化为 DFA :T0=closure (0)=0用子集构造法求 DFA 状态,T0 为初态,T2,T3 为终态。状态 closure(move(Ti ,0) ) closure(move(Ti ,1) )T0=0 0 0,1T
4、1=0,1 0,2 0,1,2T2=0,2 0 0,1T3=0,1,2 0,2 0,1,2用 0,1,2,3 代表 T0,T1,T2,T3 ,得到如下 DFA :50 1 2 300101101最小化 DFA :P0=(0,1,2,3)P1=(0,1,2 ,3 )无等价状态。 没有找到多余状态, 无多余状态。 上图为最小化的 DFA。2、将下图的 NFA 确定化为 DFA,并最小化。 (编辑:张超)X 1 2 3 Yb a ba解:用子集构造法求 DFA 状态,T0 为初态, T3 为终态。状态 closure(move(Ti ,a) )closure(move(Ti ,b) )T0=X,1,
5、2 1, 2 1, 2,3T1=1,2 1, 2 1, 2,36T2=1,2,3 1, 2,Y 1, 2,3T3=1,2,Y 1, 2 1, 2,3用 0,1,2,3 代表 T0,T1,T2,T3,得到如下 DFA :012 3aaabb bb最小化:0 ,1,2 30 ,1 2 30 ,1 2 30 和 1 是等价的, 得到最小化的 DFA 如下 :023ab aabb7第 5-7 章课后作业(含答案)1、将文法 GS 改写为等价的 GS,使 GS不含左递归和左公共因子。GS: SbSAe|bA AAbd | dc | a【解】:GS:SbS SSAe|AA(dc|a)A A bd A |2
6、、有文法 GS:SABf ABbS|e BdAg|证明文法 G 是 LL(1)文法,并构造预测分析表【解】:计算 FIRST、FOLLOW、SELECT 集由上表可知:该文法中,所有相同左部不同右部的产生式 SELECT 集两两相交均为空集,所以该文法为 LL(1)文法。 构造预测分析表f b e d g #S ABf ABf ABfA BbS e BbSB dAg产生式左部 右部FIRST FOLLOW SELECTS ABf d b e # g d f d b eBbS d b d bAe eg d fedAg d dB b fb f83、已知文法 GS:S(A)ab AAcSS 构造文法
7、的算符优先矩阵,并判断该文法是否是算符优先文法。【解】:拓展该文法:S#S# S(A) ab AAcSS计算 FIRSTVT 与 LASTVT:FIRSTVT LASTVTS # #S ( a b ) a bA c ( a b c ) a b计算算符优先关系:# = # ( = )# # LASTVT(A) ) LASTVT(A) c构造算符优先矩阵(注:按终结符出现顺序列表):( ) a b c #( a b c # b then x := m - kelse y := m + k;【解】 对应的四元式序列为:100(Jnz, A, , 108 )101(J , , , 102 )102(Jnz, B, , 104 )103(J , , , 106 )104(Jnz, C, , 106 )105(J , , , 108 )106(Jnz, D, , 108 )107(J , , , 116 )108(J,a ,b , 110 )109(J , , , 113 )110(-, m,k , T1 )111(:= ,T1 , ,x )112(J , , , 100)113(+, m,k , T2 )114(:= ,T2 , ,y )115(J , , ,100 )116