编译程序的过程
词法分析
输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个的单词,删掉无用的信息,报告分析时的错误
词法分析时编译或解释用户源程序过程是唯一与源程序打交道的阶段,其主要功能是按顺序分析出源程序的记号
语法分析
语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位。<br>通过语法分析确定整个输入串是否构成一个语法上正确的程序
语义分析
主要检查源程序是否存在语义上的错误,并收集类型信息供后面的代码生成阶段使用。<br>语义分析分为静态分析和动态分析两个部分。
静态语义分析使用语法指导翻译
中间代码<br>
不依赖计算机,有四种表现形式
后缀式,(逆波兰式)
树型表示
三元式(三地址码)
四元式 (四地址码)
出错处理<br>
语义错误分为两类:静态语义错误可以通过编译程序检测发现;动态语义错误需要程序运行时才能被发现
静态错误<br>
编译时出现语法错误,静态语义错误(运算符与运算对象类型不合法)
动态错误
程序运行时出现 (变量取0做除数,数组下标越界等)
编译正确的程序可以消除词法即语法错误,但不能完全消除语义错误;