- 8
- 0
- 约8.41千字
- 约 51页
- 2019-01-14 发布于湖北
- 举报
编译程序 (2)编译 编译程序是把高级语言程序(源程序)作为一个整体来处理,首先将程序源代码“翻译”成目标代码(机器语言),编译后与系统提供的代码库链接,形成—个完整的可执行的机器语言程序(目标程序代码)。 目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高。相应地,由于每次执行之前必须通过编译得到可执行程序,所以,可执行程序一旦需要修改,必须先修改源代码,再重新编译生成新的目标文件(*.obj)才能执行。 3.4.1 编译程序 编译程序的工作过程 如图: 3.4.1 编译程序 3.4.2 词法分析 其任务是从左到右一个字符、一个字符地对源程序进行扫描,读入源程序,对构成源程序的字符流进行扫描和分解,通过词法分析从而识别出一个个单词(也称单词符号或符号)。 例1 对表达式:position := initial + rate * 100;进行词法分析。 对其进行词法分析后得到以下结果: 单词类型 单词值 标识符1(id1) position 算符(赋值) := 标识符2(id2) initial 算符(加) + 标识符3(id3) rate 算符(乘) * 整数 100 分号 ; 3.4.2 词法分析 3.4.3 语法分析 语法分析是编译过程的第二个阶段,任务是在词法分析的基础上将单词序列分解成各类语法短语,如“程序”、“语句”、“表达式”等等。一般这种语法短语也称为语法单位。 例2 按照例1的结果,对表达式:position := initial + rate * 100;进行语法分析。 语法规则: 赋值语句::=标识符“:=”表达式 表达式::=表达式“+”表达式 表达式::=表达式“*”表达式 表达式::=“(”表达式“)” 表达式::=标识符 表达式::=整数 表达式::=实数 3.4.3 语法分析 依据源程序的语法规则把源程序的单词序列组成语法短语(表示成语法树),见图: 3.4.3 语法分析 把id1:=id2+id3*N转换成语法树见图: 3.4.3 语法分析 3.4.4 语义处理 在词法分析程序和语法分析程序对源程序的语法结构进行分析之后,一般要由语法分析程序调用相应的语义子程序进行语义处理。 编译过程中的语义处理实现两个功能: 审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义,有时把这个工作称为静态语义分析或静态审查。 如果静态语义正确,则语义处理要执行真正的翻译,要么生成程序的一种中间表示形式(中间代码),要么生成实际的目标代码。 例3 按照例1和2的结果,对表达式:position := initial + rate * 100;进行语义处理。 Program p(); Var rate:real; Var initial :real; Var position :real ; … position := initial + rate * 100; 3.4.4 语义处理 下图是得到的语义分析树: 3.4.4 语义处理 语义分析阶段审查源程序有无语义错误,为代码生成阶段收集类型信息。比如语义分析的一个工作是进行类型审查,审查每个算符是否具有语言规范允许的运算对象,当不符合语言规范时,编译程序亦报告错误。如有的编译程序要对实数用作数组下标的情况报告错误。又比如某些语言规定运算对象可被强制,那么当二目运算施于整型和实型时,编译程序应将整型转换成实型而不能认为是源程序的错误。 3.4.4 语义处理 3.4.5 中间代码生成 所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统可以设计为多种多样的形式,重要的设计原则为两点:一是容易生成;二是容易将它翻译成目标代码。 常用的中间代码形式有逆波兰式、三元式和四元式。 采用三地址指令表示t2 := id3 * t1,会得到以下的结果: ( * id3 t1 t2) 表达式id1:= id2 + id3 * 100按照三地址指令生成中间代码: (1) (inttoreal, 100 - t1) (2) (* id3 t1 t2) (3) (+ id2 t2 t3) (4) (:= t3 - id1) 3.4.5 中间代码生成 3.4.6
您可能关注的文档
- 计算机发展史薛强..ppt
- 计算机发展事迹概要..ppt
- 计算机仿真(matlab)PPT教程..ppt
- 计算机辅助电路分析(1)..ppt
- 计算机辅助几何造型技术-第5章..ppt
- 计算机公共基础—数制和码制..ppt
- 计算机环境安全技术..ppt
- 计算机基础(第1讲)..ppt
- 计算机基础_第4章..ppt
- 计算机基础概述..ppt
- 七年级语文上册期末模拟试卷1(解析版).docx
- 七年级语文上册期末模拟试卷1(原卷版).docx
- 七年级语文上册期末模拟试卷2(原卷版).docx
- 七年级语文上册期末模拟试卷2(解析版).docx
- 期末测试卷(二)(解析版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(三)(解析版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(二)(原卷版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(三)(原卷版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(一)(原卷版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(一)(解析版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
原创力文档

文档评论(0)