编译原理与技术 中间代码生成 2021/2/11 《编译原理与技术》讲义
2021/2/11 《编译原理与技术》讲义 1 编译原理与技术 中间代码生成
中间代码生成 中间代码形式 控制流语句翻译 2021/2/11 《编译原理与技术》讲义
2021/2/11 《编译原理与技术》讲义 2 中间代码生成 -中间代码形式 -控制流语句翻译
中间代码生成 中间代码的种类 后缀式(逆波兰式) e.g. 1 a+b*-c, abc@+ eg21)a:=b*-C+b*-C,其后缀式为 abc@*@*+ assign 2) if a>b then c: =c+ 1 ab>cc1+ assign正 语法树Vs.分析树 eg.31)a:=b*-C+b*-C,其语法树为 2021/2/11 《编译原理与技术》讲义 3
2021/2/11 《编译原理与技术》讲义 3 中间代码生成 中间代码的种类 - 后缀式(逆波兰式) e.g.1 a + b * -c ➔ a b c @ * + e.g.2 1)a := b* -c + b * -c,其后缀式为 a b c @ * b c @ * + assign 2)if a>b then c := c + 1 a b > c c 1 + assign IF - 语法树 vs. 分析树 e.g.3 1)a := b* -c + b * -c,其语法树为
中间代码的种类 -e.g.3 1)a: =b*-C+ b*-c 语法树 VS.分析树 赋值语句 assign E assign E a a E E E × E b@ E b @E 2021/2/11 《编译原理与技术》讲义 4
2021/2/11 《编译原理与技术》讲义 4 - e.g.3 1)a := b* -c + b * -c 语法树 vs. 分析树 中间代码的种类 assign a + * b @ c * b @ c assign E E + E E * E b @ E E a 赋值语句 c E * E b @ E c
中间代码的种类 -e.g.3 2)a: =b*-C+ b*-c 语法树 VS DAG assign assign a a b@ 2021/2/11 《编译原理与技术》讲义 5
2021/2/11 《编译原理与技术》讲义 5 - e.g.3 2)a := b* -c + b * -c 语法树 vs. DAG 中间代码的种类 assign a + * b @ c * b @ c assign a + * b @ c