1.词法分析 ■任务:对源程序字符流进行扫描和分解,识别出一个个单词符号。 依循原则:构词规则 描述工具:有限自动机 例 Z:=Ⅹ+6*Y z|: X+6 可识别为下列单词(记号): 标识符z赋值:=标识符ⅹ加号+数字6乘号*标识符y
1. 词法分析 ◼ 任务: 对源程序字符流进行扫描和分解,识别出一个个单词符号。 ◼ 依循原则:构词规则 ◼ 描述工具:有限自动机 ◼ 例: Z := X + 6 * Y z : = x + 6 * y 可识别为下列单词(记号): 标识符z 赋值 := 标识符x 加号+ 数字6 乘号* 标识符y
2.语法分析 任务:在词法分析的基础上,根据语言的语法规则把 单词符号串分解成各类语法单位 依循的原则:语法规则 描述工具:上下文无关文法、语法树 例( PASCAL): VAR Z,X,Y: real;E Z Ⅹ+6米Y E E E D E E D
2. 语法分析 ◼ 任务:在词法分析的基础上,根据语言的语法规则把 单词符号串分解成各类语法单位。 ◼ 依循的原则:语法规则 ◼ 描述工具:上下文无关文法、语法树 ◼ 例(PASCAL): VAR Z,X,Y:real; Z := X + 6* Y E A_E ID := E E + E ID E * E ID ID Z := * + 6 Y X
3语义分析 检查源程序的语义错误,并收集代码生成阶段 要用到的类型信息。 inttoreal 6
3.语义分析 ◼ 检查源程序的语义错误,并收集代码生成阶段 要用到的类型信息。 Z := * + 6 Y X inttoreal
4.中间代码产生 ■任务:对各类不同语法范畴按语言的语义进 行初步翻译。 ■依循的原则:语义规则 中间代码:三元式,四元式,树形结构等 例: Z:=X+6*Y翻译成四元式为 * 6 Y T1 (3):=271m2 (2)
4. 中间代码产生 ◼ 任务:对各类不同语法范畴按语言的语义进 行初步翻译。 ◼ 依循的原则:语义规则 ◼ 中间代码:三元式,四元式,树形结构等 ◼ 例: Z:=X + 6 * Y 翻译成四元式为 (1) * 6 Y T1 (2) + X T1 T2 (3) := T2 _ Z
5.优化 任务:对于前阶段产生的中间代码进行加 工变换,以期在最后阶段产生更高效的目 标代码。 依循的原则:程序的等价变换规则 例 FOR K:=1T0 100 DO BEGIN X:=工+1 M:=I+10米K N:=丁+10*K END
5. 优化 ◼ 任务:对于前阶段产生的中间代码进行加 工变换,以期在最后阶段产生更高效的目 标代码。 ◼ 依循的原则:程序的等价变换规则 ◼ 例 FOR K:=1 TO 100 DO BEGIN X:=I+1; M := I + 10 * K; N := J + 10 * K; END