编译原理学习笔记-第一章-引论

编译原理学习笔记

第一章 引论

1.1什么是编译程序

编译程序是一个语言翻译程序。

编译程序是由高级语言(源语言)翻译成低级语言(目标语言)的程序。

编译程序重要性体现在它使计算机用户不必考虑与机器相关的繁琐细节,使得程序员独立于机器。

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

编译过程:
词法分析-语法分析-语义分析-中间代码生成-代码优化-目标代码生成。
具体内容后述;

编译程序结构
编译过程的6个阶段的任务可以分别由6个模块完成:
词法分析程序-语法分析程序-语义分析程序-中间代码生成程序-代码优化程序-目标代码生成程序
此外,一个完整的编译程序还包括表格管理程序和出错处理程序。
编译原理学习笔记-第一章-引论_第1张图片

编译阶段的组合
有时把编译过程分为“前端”与“后端”:
前端(依赖于源语言):词法分析、语法分析、语义分析、中间代码生成、以及某些优化工作
后端(依赖于目标机):目标代码生成、出错处理、符号表。

一个编译过程可以由一遍、两遍或者多遍完成。
而在实际的编译系统的设计中,编译的几个阶段的工作的组合主要参考源语言以及目标机的特征。

一遍完成编译的组合少占内存、消耗时间少;但是多遍完成的组合往往使得整个编译程序的逻辑结构更加清晰。

1.3解释程序和一些软件工具
编译程序的编译和运行是分开的,只有在编译完成才能运行。

解释程序以一种交互的方式,即一边编译一边解释。
解释程序不生成目标代码,直接生成结果。

处理源程序的软件工具
人们开发软件工具,为了提高软件开发的开发效率和质量。

(1)语言的结构化编辑器
所具有的功能举例:检查用户输入正确性,自动提供关键字,可读性好。

(2)语言程序的调试工具
调试工具,分步执行,生成调试信息等。

(3)程序格式化工具
使得程序的结构变得更加清晰、增强其可读性。

(4)语言程序测试工具
静态分析器以及动态分析器
静态分析器:在不运行程序的情况下进行静态分析,以发现程序的潜在错误或异常。
动态分析器:讲测试语句等插入到合适位置进行测试。

(5)程序理解工具
确定模块间的调用关系
记录程序的静态属性以及结构属性
画出控制流程图

(6)高级语言之间的转换工具
随着高级语言的不断更新,高级语言之间的互相转化也变得尤为重要。

你可能感兴趣的:(编译原理,编译程序,编译程序结构)