编译原理-期末1
# chap 1## 1. 编译程序概念把高级语言源程序翻译成等价的低级语言目标程序的翻译程序## 编译原理主要内容见2## 编译程序重要性体现屏蔽机器细节,使得程序设计独立于机器.## 2.!典型编译程序划分,各阶段基本任务1. 词法分析:从左到右一个字符一个字符地读入源程序,对构成源程序的字符进行扫描和分解,识别出单词;2. 语法分析:将单词序列分解成各类语法短语;3. 语义分析:审查源程序有无语义错误,为代码生成阶段收集类型信息;4. 中间代码生成:将源程序变成一种易于翻译成目标代码的内部表示形式;5. 代码优化:是对前阶段生成的中间代码进行变换或改造,使生成的目标代码更为高效;6. 目标代码生成:把中间代码变换成特定机器上的目标代码## 常用的语言翻译程序有哪些:汇编程序,解释程序,编译程序.解释与编译的区别:1. 工作模式:这是**根本区别**,编译把源程序翻译成目标代码,而解释直接得到计算结果,不生成目标代码。2. 存储区内容:编译方式翻译和执行分开,解释方式翻译和执行同时并允许修改源程序,因此二者存储组织不同。3. 效率:解释慢于编译,很多语言两种方式都有。## 4.编译过程再组织:前端:和源语言有关系,包括哪些东西(作业做过了),后端:- 前端:词法分析,语法分析,语义分析,中间代码生成.(仅与源语言相关)- 后端:代码优化,目标代码生成.(目标语言,运行环境有关)目的:在多源语言,多目标语言开发中,可灵活搭配组合,消除重复开发工作量,提高编译系统开发效率组织以后有什么好处:提高编译程序效率,方便移植.有些是单遍编译,不是区别于程序设计而是取决于语言本身特点. ## 遍/趟的划分依据,单遍与多遍编译程序趟划分的主要参考因素是源语言和目标机的特征.####作业1.4. 贯穿编译过程的两个工作是什么?各自的主要任务是什么?遍(PASS): 对输入文件(源程序或其等价的中间语言程序)从头到尾扫视,完成预定处理的过程。一个多遍的编译程序较之一遍的编译程序可能少占内存,逻辑结构可能清晰些,但效率相对可能差点(主要是作业里面)------# chap2## 1.文法的直观概念和形式概念.### 直观概念- 有无穷句子的语言,无法列出全部句子,可以给出一些规则,用这些规则来说明(或者定义)句子的组成结构,这些规则成为判别句子结构合法与否的依据,可以看成是一种元语言,用来描述语言,仅仅涉及语言句子的结构描述,这样的语言描述称为文法。(例)- 有了规则,可以用它们去推导或产生句子(例)- 文法作为工具,严格地定义了句子的结构,也能够用适当条数的规则把语言的全部句子描述出来,是以有穷集合刻划无穷集合的工具。文法就是用来判定任何句子结构是否正确/推导句子的规则(有限的手段解决无穷的问题). 我们掌握形式概念(黑板写下来了):四元组:$$G(S)=(V_T,V_N,S,P)$$## 符号串和符号串集合的概念和运算 给你两个符号串集合,有可能求某种运算的结果,包含哪些串并, 写出LM的连接:{st|s属于L且t属于M}- 连接(乘积):$$=LM=\{st|s \in L \ and \ t \in M\}$$## 2.直接推导和推导的概念-最左,最右推导,规范推导,规范规约#### 推导$$令G=(V_T,V_N,S,P), 若A \rightarrow γ∈P,且α,β∈(V_T∪V_N)^*,若有符号v,w 满足:v= αAβ,w= αγβ,则称w是v的直接推导$$
来源: