计算机语言的发展
机器语言(二进制指令)
汇编语言(机器语言的助记——低级语言)
高级语言(更类似于数学定义或自然语言,与机器无关)
汇编程序(assembler):从汇编语言到机器语言的翻译程序。源语言和目标语言分别是相应的汇编语言和机器语言
编译程序(compiler)或解释程序(interpreter):源语言是某种高级语言,目标语言是相应于某一计算机的汇编语言或机器语言
编译源程序
分析:输入并扫描源程序、词法分析、语法分析
综合:修饰优化、目标代码生成
扫描程序(scanner)——词法分析
源程序的字符单词、记号
记号(token)
扫描拼写
如何组织输入:1. 逐个字符读入,逐个字符分析;2. 逐行读入,逐个符号分析;3. 整个程序读入,逐个符号分析。
语法分析程序(paeser)
程序的记号元素及其关系
记号句子用分析树或语法树表示
语义分析程序(semantic analyzer)
理解意思
一般的程序设计语言的典型静态语义包括声明和类型检查
在语法树上添加属性(attribute),如数据类型
源代码优化程序(source code optimizer)
与机器无关的优化
高级语言的设计
- 单词分类(保留字、标识符、专用符号等)
- 接近于数学定义及数学运算方式
- 控制结构简单:顺序、分支、循环
- 能做输入及输出
- 提高程序的可读性:可以加注释