本书系统而简洁地介绍编译程序的构造原理,内容主要包括:概论、编译程序构造的基础知识、词法分析、语法分析、语义分析与目标代码生成、中间表示代码与代码优化、程序错误的检查与校正、目标代码的运行,以及虚拟机目标程序的解释程序的编制。各章开始于本章导读,各章末有本章小结、复习思考题以及习题。本书突出实践性,在编译程序构造的各个环节中,提供了具体可行的实现方法和技巧,供读者参考。
本书可作为计算机及相关专业的编译原理课程教材,也可作为计算机软件技术人员、研究生及广大计算机爱好者的参考用书。
《编译原理:编译程序构造与实践教程》:牢牢掌握编译程序构造的基本原理深入理解C程序设计语言的特性实践中领悟、实践中提升编译原理课程讨论的对象是编译程序。编译程序是符号处理的工具,只要是与符号处理相关的领域,都将可能需要应用编译程序构造的基本原理。仅讨论编译原理*基本的内容,突出从源程序读入到目标程序生成这一主线。紧密结合C语言。以C语言相关内容为例进行讨论,更具针对性。突出实践性。对编译过程的每个关键部分都有计算机实现的讨论,提供具体而切实可行的实现方法和技巧,读者将对概念与计算机实现之间的差异有深刻的体会,对C语言的应用能力将有较大的提升,并能积累程序编写和软件开发的经验。《编译原理:编译程序构造与实践教程》不是单纯地给出问题的解答,注重对重点问题进行分析,阐述思路。结合各种方法以实例说明,使学生在理解的基础上掌握问题的求解方法。概括地说,《编译原理:编译程序构造与实践教程》力图以简洁易懂的文字阐述主要的基本概念,用朴实的实例展示实用的方法,按直观的思维方法启发寻找问题的解答。
《编译原理:编译程序构造与实践教程》系统而简洁地介绍编译程序的构造原理,内容主要包括:概论、编译程序构造的基础知识、词法分析、语法分析、语义分析与目标代码生成、中间表示代码与代码优化、程序错误的检查与校正、目标代码的运行,以及虚拟机目标程序的解释程序的编制。各章开始于本章导读,各章末有本章小结、复习思考题以及习题。《编译原理:编译程序构造实践教程》突出实践性,在编译程序构造的各个环节中,提供了具体可行的实现方法和技巧,供读者参考。《编译原理:编译程序构造与实践教程》可作为计算机及相关专业的编译原理课程教材,也可作为计算机软件技术人员、研究生及广大计算机爱好者的参考用书。
插图:②语法分析。词法分析时识别开各个符号之后,由语法分析部分根据程序设计语言的语法规则,识别出各个语法成分,最终识别出完整的程序。在识别各类语法成分的同时,也就检查了语法的正确性。当识别出是语法上正确的程序时,生成相应的内部中间表示(通常是语法分析树或其他内部中间表示),如果存在错误,则给出相应的报错信息。完成语法分析的部分称为语法分析程序,或称为识别程序。概括起来,语法分析程序的功能是识别出各个语法成分,生成相应的内部中间表示,同时进行语法正确性的检查。③语义分析。编译程序继语法分析之后进行语义分析,即基于语法分析时输出的内部中间表示,依据各个语法成分的含义进行语义分析。由于一个程序通常由数据结构和控制结构两部分组成,必然对这两部分进行语义分析。对于数据结构,语义分析部分进行的语义分析工作是确定类型和类型检查,确切地说,检查标识符是否有定义,确定标识符所对应数据对象的数据类型等属性,检查运算的合法性及运算分量数据类型的一致性;对于控制结构,根据程序设计语言所规定的语义,对它们进行相应的语义处理,这时可以生成相应的目标代码。例如,对于一个加法运算,当检查了两个运算分量都有定义,它们都能进行加法运算(运算是合法的),且两个运算分量的类型一致(相容)时,可以生成进行加法的目标代码。不言而喻,执行语义分析的同时,还进行一些语义检查,当然这只是静态语义检查,即在编译时刻所能进行的语义检查,例如,检查是否从循环外通过控制转移语句把控制转入循环体。在运行时刻才能进行的语义检查称为动态语义检查,如检查数组元素下标是否越界,以及指针变量是否有初值等,自然不在语义分析时刻进行。为了改进目标程序质量,语义分析时可能不生成目标代码,而是生成另外一种内部中间表示,或称中间表示代码。代码优化阶段就是基于这种中间表示代码进行优化,然后再从优化了的中间表示代码生成目标代码。语义分析工作通常由语义子程序完成。完成语义分析的部分称为语义分析程序。概括起来,语义分析程序的功能是确定类型、类型检查、识别含义与相应语义处理,以及其他一些静态语义检查等。④代码优化。代码优化指的是为改进目标程序质量而在编译时刻进行的各项优化工作。代码优化通常基于语义分析部分生成的中间表示代码进行,把它变换成功能相同、但功效更高的优化了
张幸儿,南京大学计算机科学与技术系教授,长期从事教学和科研工作,参与多个编译程序和软件项目的研制,长期从事编译原理、程序设计等课程的教学。有丰富的教学经验和计算机软件开发经验。多次获得省部级科研与优秀教材奖,其中《计算机编译理论》和《计算机编译原理》分别获得教育部普通高校优秀教材二等奖。
戴新宇,南京大学计算机科学与技术系副教授,博士,研究方向是自然语言处理,多次讲授计算机编译原理课程。
《住宅精细化设计》为作者针对住宅设计要点的长期研究的总结。书中就住宅精细化设计过程中的方法、意义和建议等问题,围绕我国住
《股市天经(之一):量柱擒涨停(全彩版第2版)》内容简介:本书是我国第一部系统论述股市“量柱”理论及实战技法的著述,也是第一
VMWARE虚拟机实用宝典 内容简介 本书全面介绍了当前*流行的虚拟机软件,包括著名的VMware公司旗下的VMware Workstation 6、VMwar...
《计算机科学概论》由两位知名的计算机科学教育家编写,全面而细致地介绍了计算机科学的各个方面。书中,计算系统的每个分层都以
《软件产品质量要求和测试细则》内容简介:计算机软件是计算机应用的核心,其质量的好坏关系到计算机应用系统的成败,软件测评是提
《自己动手写Docker》内容简介:《自己动手写Docker》在详细分析Docker所依赖的技术栈的基础上,一步一步地通过代码实例,让读者可
《WCDMA无线网络规划与优化》围绕WCDMA移动通信系统中的各种网络规划和优化技术和方法,结合作者多年的研究成果,并在参考大量国
Y染色体由于其单倍体特性和群体特异性分布,成为分子人类学研究最有力的工具。利用Y染色体可以很好地解析种族的起源、民族的分化
Abasicproblemincomputervisionistounderstandthestructureofarealworldscenegivensev...
《世界遗产·中国》内容简介:人类生存于这个星球之上算是一个侥幸。两万年前,我们还是个濒危物种,熬过了冰河期,人类日益壮大。
《20几岁,你为什么害怕来不及》内容简介:2015年6月,林夏萨摩,在简书上写下了一篇《你才20多岁,为什么总怕来不及》,一时间引爆
《HeadFirstJava》是本完整的面向对象(object-oriented,OO)程序设计和Java的学习指导。此书是根据学习理论所设计的,让你可以
嵌入式实时操作系统T-Kernel 2.0-(含光盘) 本书特色 嵌入式实时操作系统tron(the realtime operatingnucleus),其*...
《清华版双语教学用书•数字信号处理:基于计算机的方法(第3版)》于2001年由清华大学出版社推出以来,得到了广大院校师生的一致好评
《程序与民主》是意大利著名政治学家、法学家皮罗·克拉玛德雷(Pierocalamandrei)(1889-1956)讨论现代诉讼程序的著作。该书篇
《作家榜名著:你一定爱读的极简中国史》内容简介:本书是一本国学入门读物,曹伯韩以浅显通畅的文字,对中国的语言文字、金石考证
《职场进阶的60个原则》内容简介:以原则为基础的人生成为专家型人才,还是管理型人才?接受犯错让下属干,还是撸起袖子亲自干?从
《数据可视化设计指南:从数据到新知》内容简介:《数据可视化设计指南:从数据到新知(全彩)》介绍了数据可视化的基本原理和设计
《Windows并发编程指南》详细讲述Windows并发编程的相关知识。内容分为四个部分:第一部分“概念”从高层视角介绍并发的基本概念
设计的实质是什么?在设计中,意念和多种多样的形工之间的关系究竟是怎么样?诸如此类的问题,当代设计大师靳埭强选择是如何思考