文件名称:编译原理 第二版 答案 保证是全的
文件大小:2.23MB
文件格式:PDF
更新时间:2014-04-28 12:18:34
编译原理 第二版 答案 保证是全的
第三章 L(G[S])={ abc } L(G[N])={ n位整数或空字符串 | n>0 } G[E]:E—>E+D | E-D | D D—>0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 L(G[Z])={ anbn | n>0 } (1) 考虑不包括“0”的情况 G[S]:S—>0S | ABC | 2 | 4| 6 | 8 A—>1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 B—>AB | 0B | ε C—>0 | 2 | 4 | 6 | 8 考虑包括“0”的情况: G[S]:S—>AB | C B—>AB | C A—>0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 C—>0 | 2 | 4 | 6 | 8 (2)方法1: G[S]:S—> ABC | 2 | 4 | 6 | 8 A—>1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 B—>AB | 0B | ε C—>0 | 2 | 4 | 6 | 8 方法2: G[S]:S—>AB | C B—> AB | 0B | C | 0 A—> 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 C—>2 | 4 | 6 | 8 设<表达式>为E,<项>为T,<因子>为F,注:推导过程不能省略,以下均为最左推导(1) E => T => F => i (4) E => E+T => T+T => T*F+T => F*F+T => i*F+T => i*i+T => i*i+F => i*i+i (6) E => E+T => T+T => F+T => i+T => i+T*F => i+F*F => i+i*F => i+i*I 是有二义性的,因为句子abc有两棵语法树(或称有两个最左推导或有两个最右推导) 最左推导1:S => Ac => abc 最左推导2:S => aB => abc (1) (2) 该文法描述了变量a和运算符+、*组成的逆波兰表达式 10、(1) 该文法描述了各种成对圆括号的语法结构 (2) 是有二义性的,因为该文法的句子()()存在两种不同的最左推导: 最左推导1:S => S(S)S => (S)S => ()S => ()S(S)S => ()(S)S => ()()S => ()() 最左推导2:S => S(S)S => S(S)S(S)S => (S)S(S)S => ()S(S)S => ()(S)S => ()()S => ()() 11、(1) 因为从文法的开始符E出发可推导出E+T*F,推导过程如下: E => E+T => E+T*F ,所以E+T*F是句型。 从子树和短语之间的关系可知: E+T*F是句型E+T*F相对于E的短语; T*F是句型E+T*F相对于T的短语,也是简单短语和句柄。 13、(1) 最左推导:S => ABS => aBS => aSBBS => aBBS => abBS => abbS => abbAa => abbaa (2) S—>ABS | Aa |ε A—>a B—>SBB | b (3) 首先为了区别句子abbaa中的a和b,把它写成a1b1b2a2a3 该句子的短语有:a1b1b2a2a3,b1b2,a2a3,a1,a2,b1,b2,ε 直接短语有:a1,a2,b1,b2,ε 句柄:a1 14、(1) G[S]:S—>AB A—>aAb |ε B—>aBb |ε (2) G[S]:S—>1S0 | A A—>0A1 |ε (3) G[S]:S—>0S0 | aSa | a 16、(1) G[A]:A—>aA |ε (2)G[A]:A—> aA | aB B—> bB | b (3)G[A]:A—>aA | B B—> bB | C C—>cC |ε 17、习题6、习题7和习题7中的文法所描述的语言都是由变量i、+、-、*、/、(和)组成算术表达式,因此它们之间是等价的。