第1章 编译概述

这是对《编译原理》(第四版)(刘铭著,电子工业出版社)一书的笔记

CH1 编译概述

第一章包括以下4个方面的内容:

(1)编译程序(1.1 翻译程序与编译程序)

(2)编译过程(1.2 编译过程)

(3)编译程序的结构(1.2 编译程序的基本结构)

(4)编译程序的生成方法(1.3编译程序的生成方法)

1.1 翻译程序与编译程序

翻译程序:把一种语言(源语言)所写的程序(源程序)翻译成与之等价的另一种语言(目标语言)的程序(目标程序)

编译程序:当翻译程序中的源语言是高级语言,目标语言是低级语言时,这样的翻译程序为编译程序。将高级语言所写的源程序翻译成等价的机器语言或汇编语言的目标程序。

  • 当目标语言为机器语言时的执行过程
    • 2个阶段:编译阶段,执行阶段
  • 当目标语言为汇编语言时的执行过程
    • 3个阶段:编译阶段,汇编阶段,执行阶段

解释程序:将源程序作为输入并执行,边解释边执行。

编译程序和解释程序的区别:

  • 编译程序在编译过程中产生目标程序
  • 解释程序在解释过程中不产生目标程序,按照源语言的定义解释执行源程序本身

1.2 编译过程和编译程序的基本结构

1.2.1 编译过程

step1 词法分析

  • 词法规则:单词符号的形成规则,规定了哪些字符串构成一个单词符号,如:关键字,标识符,常数,运算符,界符等
  • 符号:(单词符号)具有独立意义的单词:
  • 词法分析:对构成源程序的字符串从左到右进行扫描和分解,根据语言的词法规则,识别出一个个符号

step2 语法分析

  • 语法单位:如表达式,说明,语句等
  • 语法规则:规定如何从单词符号形成语法单位(语法单位的形成规则)
  • 语法检查:检查各种语法单位在语法结构上的正确性
  • 语法分析:在词法分析的基础上,根据语言的语法规则从单词符号串中识别出各种语法单位并进行语法检查

step3 语义分析及中间代码生成

  • 语义分析:静态语义审查,分析含义,并使用中间代码或目标语言来描述语义
  • 四元组式的中间代码(运算符,变量/常量,变量/常量,表达式结果)

step4 代码优化

  • 代码优化:对前阶段产生的中间代码进行等价变换或改造,获得更高效的(更省时间和空间的)目标代码
  • 优化方式:局部优化,循环优化

step5 目标代码生成

  • 目标代码生成:将中间代码变换为特定机器上的绝对指令代码可重定位的指令代码汇编指令代码

 

所有步骤:

在编译程序的各个阶段中都要涉及表格管理错误处理 

表格管理:符号表,对变量名,存储分配,类型,作用域等信息进行构造,查找,修改,存取

错误处理:由编译程序的设计者决定,报告错误的种类以及出错位置

1.2.2 编译程序的基本结构

编译过程的5个阶段由5个程序完成。

1.3 编译程序的生成方法

  1. 对源语言和目标语言认真分析
    • 正确理解源语言的语法语义
    • 正确理解目标语言和目标机的性质
    • 确定编译程序的结构和采用的具体策略
  2. 设计编译算法
    • 算法设计中着重考虑如何使编译程序具有易读性、易改性和易扩展性
  3. 选择语言编制程序
    • 根据所设计算法选择语言写出编译程序
  4. 调试编译程序
  5. 提交相关文档资料
  6. 其他编译程序的方法:自编译方式和移植方式

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值