软考-程序语言

编译与翻译

翻译程序

  • 翻译时不产生新的独立目标程序
  • 解释程序和源程序参与程序的运行

编译程序

  • 编译时产生新的独立目标程序
  • 编译程序和源程序不参与程序的运行

程序设计语言的成分

顺序、选择、循环结构

传值与传地址

编译、解释与翻译阶段

共同点:

编译和解释都不可省略 词法分析、语法分析、语义分析且顺序不可交换

编译器特点

  • 词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成
  • 中间代码生成 和 代码优化不是必要,可省略

解释器特点

  • 词法分析、语法分析、语义分析
    在这里插入图片描述

编译过程

1.词法分析

输入:源程序
输出:记号流
分析字符、符号是否符合规定

2.语法分析

输入:记号流
输出:语法树
分析程序中的句子,结构是否符合结构。能分析出所有的语法错误

3.语义分析

不能分析出所有的语义错误
分析类型是否匹配
不能发现动态语义错误,只能发现静态语义错误

4.目标代码生成

目标代码生成阶段的工作与具体的机器密切相关
寄存器的分配处于目标代码生成阶段

5.中间代码生成

  • 后缀式、三地址码、三元式、四元式和树(图)
  • 中间代码与机器无关

正规式

学会即可
在这里插入图片描述

有限自动机

最终都要回到终态
Σ表示可以跳过此阶段
在这里插入图片描述