编译原理CHAP01

75 阅读1分钟
计算机语言的发展

机器语言(二进制指令)

汇编语言(机器语言的助记——低级语言)

高级语言(更类似于数学定义或自然语言,与机器无关)

汇编程序(assembler):从汇编语言到机器语言的翻译程序。源语言和目标语言分别是相应的汇编语言和机器语言

编译程序(compiler)或解释程序(interpreter):源语言是某种高级语言,目标语言是相应于某一计算机的汇编语言或机器语言

编译源程序

分析:输入并扫描源程序、词法分析、语法分析

综合:修饰优化、目标代码生成

image.png

扫描程序(scanner)——词法分析

源程序的字符\rightarrow单词、记号

记号(token)

扫描==拼写

如何组织输入:1. 逐个字符读入,逐个字符分析;2. 逐行读入,逐个符号分析;3. 整个程序读入,逐个符号分析。

语法分析程序(paeser)

程序的记号元素及其关系

记号\rightarrow句子\rightarrow用分析树或语法树表示

语义分析程序(semantic analyzer)

理解意思

一般的程序设计语言的典型静态语义包括声明和类型检查

在语法树上添加属性(attribute),如数据类型

源代码优化程序(source code optimizer)

与机器无关的优化

高级语言的设计
  1. 单词分类(保留字、标识符、专用符号等)
  2. 接近于数学定义及数学运算方式
  3. 控制结构简单:顺序、分支、循环
  4. 能做输入及输出
  5. 提高程序的可读性:可以加注释