编译过程
从源程序开始,分别需要进行词法分析,语法分析,语义分析,目标代码生成,目标程序等过程。
另外,中间代码生成,代码优化是选做的。
词法分析
从左到右逐个扫描源程序中的字符,识别其中的关键字,标识符,常数,运算符以及分隔符。
语法分析
根据语法规则将单词符号分解成各类语法单位,并分析源程序是否存在语法上的错误。包括:语言结构出错,if end if不匹配,缺少分号,括号不匹配,表达式缺少操作数。
分析方法有自上而下的分析和自下而上的分析。
语义分析
进行类型分析和检查,主要检测源程序是否存在静态语义错误。
动态错误,只在发生在程序运行时,也叫动态语义错误。
陷入死循环,变量取零时做除数,引用数组元素下标越界。
静态错误
编译时所发现的程序错误
分为语法错误和静态语义错误
语法错误包括:单词拼写错误,标点符号错误,表达式中缺少操作数,括号不匹配等语言结构上的错误。
中间代码
根据语义分析的输出生成中间代码,常见的有后缀式,语法树,三地址码,四元式