编译原理-23.docVIP

  • 514
  • 0
  • 约4.07千字
  • 约 5页
  • 2017-01-06 发布于重庆
  • 举报
编译原理-23

第二章 3. 试构造产生如下语言的文法: (1){anbn│n≥0}; (2)不以0打头的所有奇整数组成的集合; (3)由偶数个0和偶数个1组成的所有符号串的集合; (4){anbnci│n≥1,i≥0}。 解答: (1)G[S]= ({S},{a,b},{ S→aSb| ε},S) (2)G[S] = ({S,A,B,I,J},{+,-0,1,2,3,4,5,6,7,8,9}, {S→[+|-](J|IBJ),B→0B|IB|ε, I→J|2|4|6|8, J→1|3|5|7|9},S) (3)G[S]= ({S,A,B,C},{0,1}{S→0A|1B|ε, A→0S|1C, B→0C|1S, C→1A|0B},S) (4)G[S]= ({S,A,B},{a,b,c},{S→AB,A→aAb|ab,B→Bc|ε},S) 5.下列各文法,按要求做等价变换: (1)消去单一产生式 S→aAB│E A→dDA│e B→bE│f D→eA E→fA│g (2)消除空符产生式 S→aAS│b A→cS│ε (3)消除无用符号和无用产生式 S→SA│SB│A A→B│(S)│( ) 解答 (1)由消除单一产生式算法2.3,得: W(S)={S,E} W(A)={A} W(B)={B} W(D)={D} W(E)={E} 由W(S)得:S→aAB│fA| g 由W(A)得:A→dDA│e 由W(B)得:B→bE│f 由W(D)得:D→eA 由W(E)得:E→fA│g 所以等价变换后的文法为:S→aAB│fA| g,A→dDA│e,B→bE│f,D→eA,E→fA│g (2)由消除空符产生式算法2.5得: S→aAS│aS |b A→cS (3)由消除无用符号和无用产生式算法2.1、2.2得: S→SA│A A→ (S)│( ) 3.2 设 M=({x,y},{a,b},f,x,{y}) 为一非确定的有限自动机,其中f定义如下: f(x,a)={x,y} f(x,b)={y} f(y,a)= φ f(y,b)={x,y} 请构造相应的确定的有限自动机M。 解:画出M的状态转换图: 构造DFA: M,由于M中没有ε转换(状态图中没有ε弧),所以M的每一个状态子集的ε-closure都是其自身。因此直接构造状态子集族C={T0,T1,T2,T3},并且T0={x}, T1={y}, T2=φ, T3={x,y},以C作的状态集,字母表为{a,b},状态转换函数为: D(T0,a)=f(x,a)={x,y}=T3 D(T0,b)=f(x,b)={y}=T1 D(T1,a)=f(y,a)=φ=T2 D(T1,b)=f(y,b)={x,y}=T3 D(T2,a)= D(T2,b)= φ D(T3,a)=f({x,y},a)=f(x,a)∪f(y,a)={x,y}∪φ= T3 D(T3,b)= f({x,y},b)=f(x,b)∪f(y,b)={y}∪{x,y}= T3 初态为T0,终态集为{T1,T3}。 3.6 把下图的NFA确定化: 解:(1)先将左边的NFA转化为DFA。根据状态转换图得NFA的状态集为S={S0,S1,S2},状态转换函数为: f(S0,a)=S1,f(S0,b)=φ,f(S1,a)=φ,f(S1,b)={S1,S2},f(S2,a)=S1,f(S2,b)=φ 令T0={S0},T1={S1},T2={S2},T3={S1,S2},T4=φ。构造S的状态子集族C={T0,T1,T2,T3, T4},由于状态子集{S0,S1}、{S1,S2,S3}和{S1,S2,S3}在NFA中都是不可达的,那么在构造的DFA中它们对应的也必是多余状态,所以在构造C时就不考虑它们了。 接下来,以C为DFA的状态集构造其状态转换函数。 D(T0,a)=T1,D(T0,b)=T4,D(T1,a)=T4,D(T1,b)=T3,D(T2,a)=T1,D(T2,b)=T4, D(T3,a)=T1,D(T3,b)=T3,D(T4,a)=D(T4,b)=T4, 其中,终止状态为{T2,T3}。观察上面求出的状态转换函数,不难发现T4是个死状态,T2 是个多余状态。为了使状态转换图看上去更简单、清晰,在下面的有限状态途中我们没有画出无用状态和死状态及其相关的有向边。这个DFA简化的状态转换图如下

文档评论(0)

1亿VIP精品文档

相关文档