编译原理及编译程序构造(张莉)

1 绪论

编译:把高级程序语言翻译成汇编语言或机器语言;

  • 计算机组成五部分:输入、输出、控制器、运算器、存储器
  • 源程序:程序语言处理系统的输入程序;
  • 目标程序:能在计算机上执行的程序,程序语言处理系统的输出程序;
  • 翻译程序:把某种语言程序变换为与之等价的别的语言程序的程序称为翻译程序或变换程序;
  • 汇编程序:把汇编语言程序转换为机器语言程序的程序;
  • 编译程序:把高级语言的源程序变换为语义等价的某种目标语言的程序;
  • 解释程序:对源语言的代码或者编译得到的中间语言进行解释执行的程序;
  • 遍:对源程序或源程序的中间形式从头到尾扫描一次并做相关的加工处理,生成新的源程序中间形式或目标程序,称为一遍;
    • 分遍好处是减少对内存容量的要求,但增加了重复性工作;
  • 编译-解释执行:先把源程序编译成中间代码,再对中间代码解释执行;

编译5个阶段:词法分析、语法分析、语义分析生成中间代码、代码优化、生成目标程序

  • 词法分析:把字符串形式的源程序分解为具有独立语法意义的单词符号token;

    • 单词:语言的基本语法单位;包括语言定义的关键字或保留字、标识符、常数、分界符(运算符)
  • 语法分析:根据语法规则分析语法成分,检查语法正确性。
  • 语义分析:确定源程序的意义,生成中间代码;
  • 代码优化:确保源代码功能不变的前提下,使得目标代码更加简短,以尽量减少存储时间和运行时间;
  • 生成目标程序:由中间代码生成目标程序

典型的编译程序具有7个逻辑部分,词法分析、语法分析、语义分析生成中间代码、代码优化、生成目标程序、符号表管理和出错处理;

  • 符号表管理:用于保存每个标识符及其属性信息的数据结构;
  • 出错处理:编译过程中检测道错误后立即处理错误、报告错误信息,并继续编译检测其他错误;

根据编译程序各部分功能,将编译程序分为前端和后端

  • 把与源程序有关的编译部分成为前端;
  • 把与目标机有关的部分成为后端;
  • 好处:采用同一个编译程序的前端,只改写后端就可以生成不同目标机上的相同源语言的编译程序;

第一周作业

1.解释名词

  • 源程序:程序语言处理系统的输入程序;
  • 目标程序:能在计算机上执行的程序,程序语言处理系统的输出程序;
  • 翻译程序:把某种语言程序变换为与之等价的别的语言程序的程序称为翻译程序或变换程序;
  • 汇编程序:把汇编语言程序转换为机器语言程序的程序;
  • 编译程序:把高级语言的源程序变换为语义等价的某种目标语言的程序;
  • 解释程序:对源语言的代码或者编译得到的中间语言进行解释执行的程序;
  • 遍:对源程序或源程序的中间形式从头到尾扫描一次并做相关的加工处理,生成新的源程序中间形式或目标程序,称为一遍;

2.典型的编译程序具有7个逻辑部分,词法分析、语法分析、语义分析生成中间代码、代码优化、生成目标程序、符号表管理和出错处理;

  • 词法分析:把字符串形式的源程序分解为具有独立语法意义的单词符号token;
  • 语法分析:根据语法规则分析语法成分,检查语法正确性。
  • 语义分析:确定源程序的意义,生成中间代码;
  • 代码优化:确保源代码功能不变的前提下,使得目标代码更加简短,以尽量减少存储时间和运行时间;
  • 生成目标程序:由中间代码生成目标程序
  • 符号表管理:用于保存每个标识符及其属性信息的数据结构;
  • 出错处理:编译过程中检测道错误后立即处理错误、报告错误信息,并继续编译检测其他错误;

3.根据编译程序各部分功能,将编译程序分为前端和后端;

  • 把与源程序有关的编译部分成为前端;
  • 把与目标机有关的部分成为后端;
  • 好处:采用同一个编译程序的前端,只改写后端就可以生成不同目标机上的相同源语言的编译程序;

编译原理及编译程序构造-绪论相关推荐

  1. 编译原理(哈工大)绪论

    编译原理(哈工大) 一.编译系统的结构 1.编译的本质:翻译的过程 2.编译流程:源程序---预处理器---编译器----汇编器----链接器/加载器---目标机器码 3.字符流--词法分析--语法分 ...

  2. 编译原理 | 由正规文法构造状态转换图

    词法分析 :由正规文法构造状态转换图 解题方法 1. 由左线性文法构造状态转换图 左线性文法G=(VN,VT,P,Z)(1)G中形如U::=Ba,则可化成:B-(a)->U(表示状态B向状态U引 ...

  3. 【编译原理】手工构造词法分析器

    [问题描述]通过设计c语言常见单词的正规文法或正规式,而后得到NFA,再确定化得到DFA,根据DFA的转换矩阵或转换图,用c++语言实现词法分析器. [输入形式]输入一段完整的c语言程序 [输出形式] ...

  4. 编译原理(六)自底向上分析之LR分析法

    自底向上分析之LR分析法 说明:以老师PPT为标准,借鉴部分教材内容,AlvinZH学习笔记. 基本概念 1. LR分析:从左到右扫描(L)自底向上进行规约(R),是规范规约,也即最右推导(规范推导) ...

  5. 编译原理(五)自底向上分析之算符优先分析法

    自底向上分析之算符优先分析法 说明:以老师PPT为标准,借鉴部分教材内容,AlvinZH学习笔记. 基本过程 1. 一般方法:采用自左向右地扫描和分析输入串,从输入符号串开始,通过反复查找当前句型的句 ...

  6. #编译原理# 概论(一)

    概论 编译原理笔记第一部分,内容参考:北航软院教师邵兵课堂课件及内容.张莉著<编译原理及编译程序构造>.国防工业出版社的<编译原理--学习指导与典型题解析>.AlvinZH的学 ...

  7. #编译原理# 文法和内容(二)

    文法和内容 编译原理笔记第二部分,内容参考:北航软院教师邵兵课堂课件及内容.张莉著<编译原理及编译程序构造>.国防工业出版社的<编译原理--学习指导与典型题解析>.AlvinZ ...

  8. 北航计算机学院编译原理,1 北航本科编译原理课件课本 张莉.pdf

    1 北航本科编译原理课件课本 张莉 第一章 概 论 • 编译的起源:程序设计语言的发展 • 编译的起源:程序设计语言的发展 • 基本概念 • 基本概念 • 编译过程和编译程序构造 • 编译过程和编译程 ...

  9. 编译原理 C-Minus词法分析(FLEX)

    C–源代码词法分析 文章目录 C--源代码词法分析 一.实现目标 二.C-Minus语法 三.Flex Flex简介 Flex正则表达式 Flex安装与使用 Flex文件编写 定义 规则 用户代码 四 ...

最新文章

  1. 【Axure原型图】—— 4. Tab Control(选项卡)
  2. node 升级_技术周刊( Node.js 12 性能大提升 2019-04-30)
  3. 危机永远回来,只是什么时候的问题
  4. java 上传文件编码_(java)有什么办法把MultipartFile上传的文件转为utf-8的编码吗
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的递代收系统
  6. python上三角九九乘法表_用5行Python代码打印九九乘法表
  7. android荣耀v20圆角适配,AR新玩法 让荣耀V20成为你随身的尺子
  8. SQL Server 2008 Express 及 SSMS Express 下载安装配置教程
  9. vux2.9版本bug
  10. 黑群晖 7.0 安装
  11. linux服务器发异常包,如何排查Linux服务器上的恶意发包行为
  12. 货币金融学学习笔记(第4篇中央银行与货币操作政策)
  13. PPT插入形状,在里面填写文字,文本框过大
  14. GSL-蒙特卡洛积分
  15. 神策数据虚席以待,欢迎加入!
  16. 使用Python异序词检测示例_清点法_排序法_蛮力法_计数法
  17. python3.7反编译生成的.exe
  18. 元宇宙源于人类生存维度的拓展和人类感官维度的拓展
  19. 1000W纯正弦波逆变器方案资料EG8010源代码KA3525原理图图纸PCB
  20. H.265/HEVC 简述 第二课(数字视频格式)

热门文章

  1. 3 万字 + 100 张图带你彻底搞懂 TCP 面试题(强烈建议收藏)
  2. C+实现RSA加密解密
  3. Win8输入法不见了怎么办
  4. C语言 字符串-字符串的复制
  5. 安卓设置均衡器 Equalizer
  6. 关于颜色HSL(色度、饱和度、亮度)
  7. Matlab中的FCM算法代码及中文详解
  8. AV-TEST给出Android平台最佳防毒软件排名
  9. Echarts 图表不能渲染问题整理
  10. @Validated和@Valid 解决list校验问题