Java教程

编译原理及编译程序构造-绪论

本文主要是介绍编译原理及编译程序构造-绪论,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

1 绪论

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

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

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

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

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

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

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

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

第一周作业

1.解释名词

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

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

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

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

  • 把与源程序有关的编译部分成为前端;
  • 把与目标机有关的部分成为后端;
  • 好处:采用同一个编译程序的前端,只改写后端就可以生成不同目标机上的相同源语言的编译程序;
这篇关于编译原理及编译程序构造-绪论的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!