当前位置:首页 > 计算机理论 >

《编译原理》答案

PDF超清版

时间:2020-10-17 09:15:22大小:2.5 MB已被586人关注 资源下载

编译原理知识点总结
编译原理知识点总结

编译原理是计算机专业的一门重要专业课,旨在介绍编译程序构建的一般原理和基本方法。内容包括语言和语法、词法分析、语法分析、语法引导翻译、中间代码生成、存储管理、代码优化和目标代码生成。编译原理是计算机专业的一门重要专业课。编译原理课程是计算机专业学生的必修课,是高校培养计算机专业人才的基础和核心课程。它也是计算机科学中最难和最具挑战性的课程之一。《编译原理》课程内容以原理性为主,高度抽象。

编译器的工作原理与基本组成

(0)通用程序设计语言的主要成份 声明+操作=完整定义

(1)以过程为基本结构的程序设计语言的组成

声明性语句:提供操作对象的性质,如数据类型、值、作用域等;
操作性语句:确定操作的计算次序,完成实际操作。
过程定义 = 过程头+过程体

编译器各阶段工作

1> 词法分析:词法分析的输入是源程序,输出是识别出的记号流.目的是识别单词. 至少分以下几类:关键字(保留字)、标识符、字面量、特殊符号

2> 语法分析: 输入是词法分析器返回的记号流,输出是语法树.目的是得到语言结构并以树的形式表示.对于声明性语句,进行符号表的查填,对于可执行语句,检查结构合理的表达式运算是否有意义.

3> 语义分析:根据语义规则对语法树中的语法单元进行静态语义检查,如类型检查和转换等,目的在于保证语法正确的结构在语义分析上也是合法的.

4> 中间代码生成(可选):生成一种既接近目标语言,又与具体机器无关的表示,便于代码优化与代码生成.

(到目前为止,编译器与解释器可以一致)

5> 中间代码优化(可选):局部优化、循环优化、全局优化等;优化实际上是一个等价变换,变换前后的指令序列完成同样的功能,但在占用的空间上和程序执行的时间上都更省、更有效

6> 目标代码生成:不同形式的目标代码—汇编语言形式、可重定位二进制代码形式、内存形式(Load-and-Go)

7> 符号表管理:合理组织符号,便于各阶段查找\填写等.

8> 出错处理:

动态错误:源程序中的逻辑错误,发生在程序运行的时候。也称为动态语义错误
静态错误:静态错误分为语法错误和静态语义错误.  
<1> 语法错误:有关语言结构上的错误,如单词拼写错误、表达式缺少操作数、begin和end不匹配
<2> 静态语义错误:分析源程序时可以发现的语言意义上的错误,如加法的两个操作数一个是整形变量,另一个是数组名

 

已被953人点赞
编译以及编译过程
编译以及编译过程

也许我们这辈子都不会去实现一个编译器,但是我们至少要知道编译器是什么?为什么会需要编译器?

①编译器首先也是一种电脑程序。它会将用某种编程语言写成的源代码(原始语言),转换成另一种编程语言(目标语言)。

②高级计算机语言便于人编写,阅读,维护。低阶机器语言是计算机能直接解读、运行的。编译器主要的目的是将便于人编写,阅读,维护的高级计算机语言所写作的源代码,翻译为计算机能解读、运行的低阶机器语言的程序。编译器将原始程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源代码一般为高阶语言 (High-level language), 如 Pascal、C、C++、C# 、Java 等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。

词法分析

编译器的第一个步骤称为词法分析或扫描。词法分析器读入组成源程序的字符流,并将其组成有意义的词素的序列。形如<token-name, attribute-value>这样的词法单元。(token-name是由语法分析使用的抽象符号,attribute-value是指向符号表中关于这个词法单元的条目,符号表条目的信息会被语义分析和代码生成步骤使用)

例如源程序包含如下赋值语句:position = initial + rate * 60

中间代码生成

在源程序翻译成目标代码的过程中,一个编译器可能构造出一个或多个中间表示。这些中间表示可以有多种形式。语法树是一种中间表示形式,它们通常在语法分析和语义分析中使用。

 在源程序的语法分析和语义分析完成之后(也会生成中间表示,区别语法树),很多编译器生成一个明确的低级的或类机器语言的中间表示。该中间表示有两个重要的性质:1.易于生成;2.能够轻松地翻译为目标机器上的语言。

代码优化

代码优化试图改进中间代码,以便生成更好的目标代码。即更快(省时),更短(省空间)或能耗更低。

代码生成

代码生成以中间表示形式作为输入,并把它映射为目标语言。如果目标语言是机器代码,则必须为每个变量选择寄存器或内存位置,中间指令则被翻译为能够完成相同任务的机器指令序列。

已被219人点赞
下载地址:百度网盘下载
相关资源
编译系统透视:图解编译原理
编译系统透视:图解编译原理 高清版

本书是编译原理领域的鸿篇巨著,中文版尚未出版,英文版权已经输出到美国,将在世界范围内产生重要影响。从以下多个角度讲,本书都具有重要的里程碑意义: 它让编译原理不再像是一门

立即下载
编译器设计
编译器设计 扫描第2版

1952年一个编译器诞生,至今已经过去了半个多世纪,编译器的发展日臻成熟,关于编译器设计的著作也出版了不少,但既关注设计细节,又具备大局观的经典之作凤毛麟角,《 编译器设计(第

立即下载
自己动手构造编译系统:编译、汇编与链接
自己动手构造编译系统:编译、汇编与链接 高清版

《自己动手构造编译系统:编译、汇编与链接》 以作者实现的一个基于Intelx86指令集的编译系统为例,结合程序代码的主要部分详细阐述了编译系统的实现原理和过程。本书对编译器、汇编器、

立即下载
编译与反编译技术实战
编译与反编译技术实战 清晰扫描版

介绍了本书所基于的环境与工具,结合GCC和LLVM这两款具体的编译器进行论述,介绍了多样化编译方面的实践,介绍了反编译在信息安全方面的应用等

立即下载
Android系统安全和反编译实战
Android系统安全和反编译实战 高清版

Android系统安全和反编译实战 内容分为 4篇,共计 22个章节,循序渐进地讲解了 Android系统安全分析和破解实战的基本知识。本书从搭建应用开发环境开始讲起,依次讲解了基础知识篇、系统安

立即下载
高级C/C++编译技术
高级C/C++编译技术 扫描版

《C/C++技术丛书:高级C/C++编译技术》 从多个角度全面、系统地讲解多任务操作系统中编译、链接、装载与库的内幕和技术细节,为深入理解和掌握系统底层技术提供翔实参考和实践指南。和纯

立即下载
自己动手实现Lua:虚拟机、编译器和标准库
自己动手实现Lua:虚拟机、编译器和标准库 影印版

用Go和Java深入阐述Lua虚拟机、编译器、标准库及核心语法原理,七牛云许式伟等力荐

立即下载

Copyright 2018-2020 www.xz577.com 码农之家

版权投诉 / 书籍推广 / 赞助:520161757@qq.com