程序设计语言历史
- 机器语言
- 汇编语言
- 高级语言
实现高级语言程序的方式
- 编译方式
- 解释方式
两种方式的区别
- 解释器:执行系统;一次目标程序只能执行一次;有利于人机交互;保存的信息多,空间开销大
- 编译器:转换系统;一次翻译目标程序可执行多次
其它高级语言实现的方式:
- 转换方式:把A语言的程序转换为已有编译器的B语言程序,然后通过B语言已有的编译器编译执行
编译程序的组成
编译程序的结构:
词法分析程序:
- 检查程序中是否有词法错误
- 构造单词的内部表示
例如:x=100,分为五个字符x,=,1,0,0;通过词法分析程序,将其分为三个单词x,=,100
语法分析程序:(检查文法错误)
- 自顶向下的分析方法
- 自底向上的分析方法
语义分析
- 检查有无语义错误(变量重复声明,运算时类型不相容等)
- 为后续编译工作收集所需信息
-----------------------------------这里以上三条需要错误处理------------------------------------
中间代码的生成:
- 为了优化
- 便于移植
中间代码的优化:
与程序算法无关,与程序内部有关
生成目标代码:
生成特定机器上的汇编代码或者机器语言
-----------------------------------------这以上六条需要表格管理---------------------------------