《编译原理》(第2版)勘误表格.docVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《编译原理》(第2版)勘误表 200 1、第2页倒数第2行改成: 分隔单词的空格通常在词法分析时被删去。 =?id, 1 = ?id, 1? + ? 60 ?id, 2? ?id, 3? = ?id, 1? + ? 60 ?id, 2? ?id, 3? inttofloat (a) (b) 图1.2 语义分析插入了类型转换 3、第16页倒数第9行开始的那段改成: 上一节提到,字符串集合由叫做模式的规则来描述。正规式是表示这些规则的一种重要方法,因此本节围绕正规式来介绍记号的描述与识别。在介绍正规式前,先给“语言”一个形式定义。 4、第18页表2.3的第4行第4列改成: ? 肯定出现在一个闭包中 5、第26页图2.10上面的那段改成: ?-closure(T)的计算是从给定的结点集合出发,在图上搜索可达结点的典型过程。该图只包含NFA的含? 标记的边,T是给定的结点集合。计算?-closure(T)的简单算法是用栈来保存那些边还没有完成? 转换检查的状态。图2.11描述了这样的过程。 6、第43页倒数第5行第一句改成: 正规式可以描述的语言都能用上下文无关文法来描述。 7、第61页5行开始的那段改成: (2)仅使用FOLLOW(A)作为A的同步集合是不够的。例如,分号在C语言中作为语句的结束符,那么作为语句开始符号的关键字没有出现在表达式非终结符的FOLLOW集合中。这样,仅按上面(1)来设定同步记号集合的话,作为赋值结束的分号的遗漏会引起下一语句的开始关键字被跳过。 8、第74页图3.15第2行改成: C = {closure ({[S?? · S ]})}; 9、第80页图3.19倒数第7行改成: 置C的初值为{closure({[S? ? · S, $]})}; 10、第111页倒数第4行开始的那段改成: 语法树作为一种中间表示,允许把翻译从分析中分离出来,形成先分析后翻译的方式,即先分析生成语法树,然后再基于语法树进行翻译。即使是边分析边翻译,语法树作为一种概念上的中间表示,也是有用的。C和Java的编译器通常显式构造语法树。 11、第119页图4.9下第1行第1句改成: 图4.10给出了图4.9的动作是怎样为a?5?b构造语法树的。 12、第128页倒数第9行开始的那段改成: (a) 写一个翻译方案,它输出每个a的嵌套深度。例如,对于句子( a , ( a , a) ),输出的结果是1 2 2。 13、第134页倒数第11行和倒数第7行,第135页第7行(两处)、第9行,第136页倒数第3行,第137页第2行,第149页倒数第6行: “形式化的”都改成“形式的” 14、第139行倒数第3条规则改成: (Exp Index) (0? E2.val ? N?1) 15、第141页倒数第12行改成: S ? id := E {if (id.type==E.type && E.type?{boolean, integer}) 16、第154页图5.13改成: cell = cell = record , : : info cell pointer next integer (a) cell = record , : : info pointer next integer (b) 图5.13 递归定义的类型名 17、第157页表5.4右栏的倒数第4行改成: S = {s | s ? E2.types and s ? t ? E1.types} (备注:改成斜体) 18、第170页图6.9最后一行左栏改成: m m q(1,9) r p(1,9) q(1,3) q(1,0) p(1,3) 19、第172页第7行开始的那段改成: (4)q根据局部数据域和临时数据域的大小来减小top_sp的值,也就是进行局部数据和临时数据的空间分配,并初始化它的局部数据,开始执行过程体,如图6.10所示。 20、第203页中间那段改成: 静态单赋值形式(static single-assignment form,简称SSA)是一种便于某些代码优化的中间表示。SSA有两个显著特点可区别它和三地址代码。第一个特点是,SSA中所有赋值指令都是对不同名字变量的赋值,所有才有静态单赋值这个术语。图7.4是用三地址代码和静态单赋值形式写的同一个中间语言程序,注意,在SSA表示中,下标用来区别变量p和q的每个定义。 21、第204页图7.5最后1行改成: T? ?T1 {T.type = pointer (T1.type); T.width = 4;} 22、第206页第2行改成: M ? ? {t = mkTable(nil); push(t, tblptr); push(0, offset);

文档评论(0)

139****3928 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档