- 计算机对源程序的处理有两种方式,一种是解释型,一种是编译型。解释型就是输入一行代码按回车立即分析执行该条语句;编译型是指整个代码写完后,按编译运行才可以执行。
1.编译过程
1.1 词法分析
逐字符扫描,识别出“单词”符号,如关键字、标识符等。词法分析输出的单词常常采用二元组的方式,即单词类别和单词自身的值。
- 词法错误: 非法字符,关键字或标识符拼写错误
1.2 语法分析
根据语法规则将单词符号序列分解成各类语法单位,如表达式、语句、程序等。在此过程需要分配存储空间(基本数据类型和结构化数据类型以及连接数据,如返回地址、参数等)。分配策略有静态存储分配和动态存储分配。
- 静态存储分配: 在编译时就可以安排好目标程序运行时的全部数据空间,并确定每个数据对象的存储位置。
- 动态存储分配: 如果一个程序语言允许递归过程和可变数据结构,则需用栈分配和堆分配来动态存储分配。
- 语法错误: