欢迎来到天天文库
浏览记录
ID:11070061
大小:239.00 KB
页数:23页
时间:2018-07-09
《编译原理及实践教程第1章参考答案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1.翻译程序:能够将某种语言写的程序转换成另一种语言的程序,而且后者与前者在逻辑上是等价的。编译程序:是一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序解释程序:接受某高级语言的一个语句输入,进行解释并控制计算机执行,马上得到这句的执行结果,然后再接受下一句。源程序:被翻译的程序。目标程序:翻译后的程序。遍:对源程序或源程序的中间结果从头到尾扫描一次,并作有关的加工处理,生成新的中间结果或目标程序。编译前端:主要指与源语言有关,与目标语言无关的部分,通常包括词法分析、语法分析、语义分析和中间代码生成,与机器无关部分的代码优化编译后
2、端:指与目标机器有关的部分。如与机器有关的优化、目标代码生成2.高级语言程序有哪两种执行方式?其特点是什么?阐述其主要异同点。答:高级语言程序有编译程序和解释程序两种执行方式;编译程序(Compiler)——将高级程序设计语言程序翻译成逻辑上等价的低级语言(汇编语言,机器语言)程序的翻译程序。解释程序(Interpreter)——将高级程序设计语言写的源程序作为输入,边解释边执行源程序本身,而不产生目标程序的翻译程序。3.编译过程可分为哪些阶段?各个阶段的主要任务是什么?答:编译过程逻辑上可分为五个阶段:词法分析、语法分析、语义分析与中间代码
3、生成、代码优化、目标代码生成。第一阶段:词法分析任务:从左到右扫描源程序,识别出每个单词第二阶段:语法分析任务:在词法分析的基础上,根据语言的语法规则,将单词符号串分解成各类语法短语(例:程序、语句、表达式)。第三阶段:语义分析和中间代码生成任务:对语法分析所识别出的各类语法范畴分析其含义,进行初步的翻译(翻译成中间代码)。第四阶段:代码优化任务:对已产生的中间代码进行加工变换,使生成的目标代码更为高效(时间和空间)。第五阶段:目标代码的生成任务:把中间代码(或经优化的中间代码)变换成特定机器上的低级语言代码。4.编译程序有哪些主要构成成分?
4、各自的主要功能是什么?答:(1)记号(token)当扫描程序将字符收集到一个记号中时,它通常是以符号表示这个记号;这也就是说,作为一个枚举数据类型的值来表示源程序的记号集。(2)语法树(syntaxtree)如果分析程序确实生成了语法树,它的构造通常为基于指针的标准结构,在进行分析时动态分配该结构,则整棵树可作为一个指向根节点的单个变量保存。结构中的每一个节点都是一个记录,它的域表示由分析程序和之后的语义分析程序收集的信息。(3)符号表(symboltable)这个数据结构中的信息与标识符有关:函数、变量、常量以及数据类型。符号表几乎与编译器
5、的所有阶段交互:扫描程序、分析程序或将标识符输入到表格中的语义分析程序;语义分析程序将增加数据类型和其他信息;优化阶段和代码生成阶段也将利用由符号表提供的信息选出恰当的代码。因为对符号表的访问如此频繁,所以插入、删除和访问操作都必须比常规操作更有效。尽管可以使用各种树的结构,但杂凑表却是达到这一要求的标准数据结构。有时在一个列表或栈中可使用若干个表格。(4)常数表(literaltable)常数表的功能是存放在程序中用到的常量和字符串,因此快速插入和查找在常数表中也十分重要。但是,在其中却无需删除,这是因为它的数据全程应用于程序而且常量或字符
6、串在该表中只出现一次。(5)中间代码(intermediatecode)根据中间代码的类型(例如三元式代码)和优化的类型,该代码可以是文本串的数组、临时文本文件或是结构的连接列表。对于进行复杂优化的编译器,应特别注意选择允许简单重组的表示。(6)临时文件(temporaryfile)计算机过去一直未能在编译器时将整个程序保留在存储器中。这一问题已经通过使用临时文件来保存翻译时中间步骤的结果或通过“匆忙地”编译(也就是只保留源程序早期部分的足够信息用以处理翻译)解决了。5.编译程序的构造需要掌握哪些原理和技术?答:源语言:理解其结构和含义目标语
7、言:必须清楚硬件的系统结构和指令的格式等编译方法6.编译程序构造工具的作用是什么?答:自动生成:LEX(词法分析)与YACC(用于自动产生LALR分析表)7.编译技术可应用在哪些领域?答:语言的结构化编辑器:Turbo-Edit、editplus和Ultraedit等语言程序的调试工具语言程序的测试工具高级语言之间的转换工具交叉编译程序思考题1•1.什么是编译程序?•一种将高级语言程序(源程序)翻译成低级语言(目标程序)的程序•2.编译过程分哪些阶段?各阶段的功能和任务是什么?•略•3.写出C语言中字符集、单词、数据类型、各种表达式、语句和程
8、序的组成答:C语言字符集由字母,数字,空格,标点和特殊字符组成。C语言常用单词:1.数据类型关键字(8个):...int,short,long,signed,uns
此文档下载收益归作者所有