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

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

ID:28184529

大小:118.00 KB

页数:13页

时间:2018-12-09

《编译原理》(第2版)勘误表.doc_第1页
《编译原理》(第2版)勘误表.doc_第2页
《编译原理》(第2版)勘误表.doc_第3页
《编译原理》(第2版)勘误表.doc_第4页
《编译原理》(第2版)勘误表.doc_第5页
资源描述:

《《编译原理》(第2版)勘误表.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、《编译原理》(第2版)勘误表2008-8-311、第2页倒数第2行改成:分隔单词的空格通常在词法分析时被删去。=áid,1ñ+*60áid,2ñáid,3ñ=áid,1ñ+*60áid,2ñáid,3ñinttofloat(a)(b)图1.2语义分析插入了类型转换2、第3页图1.2改成:3、第16页倒数第9行开始的那段改成:上一节提到,字符串集合由叫做模式的规则来描述。正规式是表示这些规则的一种重要方法,因此本节围绕正规式来介绍记号的描述与识别。在介绍正规式前,先给“语言”一个形式定义。4、第18页表2.3

2、的第4行第4列改成:e肯定出现在一个闭包中5、第26页图2.10上面的那段改成:e-closure(T)的计算是从给定的结点集合出发,在图上搜索可达结点的典型过程。该图只包含NFA的含e标记的边,T是给定的结点集合。计算e-closure(T)的简单算法是用栈来保存那些边还没有完成e转换检查的状态。图2.11描述了这样的过程。6、第43页倒数第5行第一句改成:正规式可以描述的语言都能用上下文无关文法来描述。7、第61页5行开始的那段改成:(2)仅使用FOLLOW(A)作为A的同步集合是不够的。例如,分号在C

3、语言中作为语句的结束符,那么作为语句开始符号的关键字没有出现在表达式非终结符的FOLLOW集合中。这样,仅按上面(1)来设定同步记号集合的话,作为赋值结束的分号的遗漏会引起下一语句的开始关键字被跳过。8、第74页图3.15第2行改成:C={closure({[S¢®·S]})};9、第80页图3.19倒数第7行改成:置C的初值为{closure({[S¢®·S,$]})};10、第111页倒数第4行开始的那段改成:语法树作为一种中间表示,允许把翻译从分析中分离出来,形成先分析后翻译的方式,即先分析生成语法树

4、,然后再基于语法树进行翻译。即使是边分析边翻译,语法树作为一种概念上的中间表示,也是有用的。C和Java的编译器通常显式构造语法树。11、第119页图4.9下第1行第1句改成:图4.10给出了图4.9的动作是怎样为a*5*b构造语法树的。12、第128页倒数第9行开始的那段改成:(a)写一个翻译方案,它输出每个a的嵌套深度。例如,对于句子(a,(a,a)),输出的结果是122。13、第134页倒数第11行和倒数第7行,第135页第7行(两处)、第9行,第136页倒数第3行,第137页第2行,第149页倒数第

5、6行:“形式化的”都改成“形式的”14、第139行倒数第3条规则改成:(ExpIndex)(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=record,::infocellpointernextinteger(a)cell=record,::infopointernextinteger(b)图5.13递归定义的类型名17、第157页表5.4右栏的倒

6、数第4行改成:S={s

7、sÎE2.typesands®tÎE1.types}(备注:改成斜体)18、第170页图6.9最后一行左栏改成:mq(1,9)rp(1,9)q(1,3)q(1,0)p(1,3)19、第172页第7行开始的那段改成:(4)q根据局部数据域和临时数据域的大小来减小top_sp的值,也就是进行局部数据和临时数据的空间分配,并初始化它的局部数据,开始执行过程体,如图6.10所示。20、第203页中间那段改成:静态单赋值形式(staticsingle-assignmentform,简称SSA)

8、是一种便于某些代码优化的中间表示。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®e{t=mkTable(nil);push(t,tblptr);push(0,o

9、ffset);}23、第207页图7.8中最后1行改成:L®e{t=mkTable(nil);push(t,tblptr);push(0,offset);}24、第210页倒数第2段前2行改成:使用Elist的综合属性array来传递符号表中数组名条目的指针。并使用Elist.ndim来记录已分析过的下标表达式的个数。函数limit(array,j)返回nj,它是array指向数组第j维的大小。25、第211页倒

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。