13编译器的阶段 源程序 词法分析器 语法分析 语义分析 符号表管理器 错误处理器 中间代码生成器 代码优化器 代码生成器 目标程序
1.3 编译器的阶段 源程序 词法分析器 语法分析 语义分析 中间代码生成器 代码优化器 代码生成器 目标程序 符号表管理器 错误处理器
3编译器的阶段 131符号表管理 符号表,记录符号与其关联的属性,如类 型、作用域,对于过程名符号,有其参数 个数和类型、传值还是传引用、返回类型。 ■符号在词法分析阶段进入符号表,而与其 关联的属性要在后继阶段补充。 a float position, initial, rate
◼ 符号表,记录符号与其关联的属性,如类 型、作用域,对于过程名符号,有其参数 个数和类型、传值还是传引用、返回类型。 ◼ 符号在词法分析阶段进入符号表,而与其 关联的属性要在后继阶段补充。 ◼ float position, initial, rate; 1.3.1 符号表管理 1.3 编译器的阶段
13编译器的阶段 1.3.2错误处理 ■在遇到错误时,应尽可能继续执行相应阶 段 ■词法分析:不成词的余留串,如3nt 语义分析:语法结构良好,但语义错误, 如加两个标识符,类型分别为数组和过程
1.3 编译器的阶段 ◼ 在遇到错误时,应尽可能继续执行相应阶 段。 ◼ 词法分析:不成词的余留串,如3int ◼ 语义分析:语法结构良好,但语义错误, 如加两个标识符,类型分别为数组和过程。 1.3.2 错误处理
13编译器的阶段 133中间代码生成 中间代码可看作是一种抽象机上的程序, 如GC产生的中间代码, Java byte代码。 重要特性:容易从语义分析阶段产生,容 易翻译到目标代码。 中间代码有多种形式。 三地址码,最多三个操作数 ■流控和过程调用( more on later
◼ 中间代码可看作是一种抽象机上的程序, 如GCC产生的中间代码,Java Byte代码。 ◼ 重要特性:容易从语义分析阶段产生,容 易翻译到目标代码。 ◼ 中间代码有多种形式。 ◼ 三地址码,最多三个操作数 ◼ 流控和过程调用 (more on later…) 1.3 编译器的阶段 1.3.3 中间代码生成
13编译器的阶段 1.34代码优化 135代码生成 more on later
1.3 编译器的阶段 1.3.4 代码优化 1.3.5 代码生成 ◼ (more on later … )