已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.2 编译过程概述,逻辑阶段 Phases steps,源程序,目标程序,词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成,表格管理,出错处理,例: position : initial rate*10,以下从源程序在不同阶段所被转换成的表示形式来介绍各个阶段的任务,词法分析 Lexical analysis, Scanning,字符流 单词流 从左到右扫描,识别出单词,单词, 单词符号, 符号, Token,什么是单词 逻辑上紧密相连的一组字符,这些字符具有集体含义。 sequences of characters having collective meaning. 五类单词 标识符 保留字(关 键字、基本字) 常量(常数) 运算符(算符) 界符,position : initial rate*10,单词类型 单词值 标识符(1) position 算符(赋值号) : 标识符(2) initial 算符(加号) 标识符(3) rate 算符(乘号) * 整数 10 界符(分号) ;,字符流 单词流,position : initial rate*10; id1 := id2 + id3 *10 ,词法分析程序的其他功能,滤掉注释和空白 提供出错的行号标记 宏处理,词法分析中的错误,9position := initial rate*60; 9, position, := := ,词法分析阶段,不会显示错误,关于词法分析,词法分析程序的自动生成工具LEX 词法分析的依据 词法规则 描述词法规则的工具 正规式 有限自动机,2) 语法分析 Syntax analysis, Parsing,单词流 - 语法短语 检查源程序的结构是否符合语法规则,语法短语, 语法单位,表达式, 语句, 函数, 程序段, 程序,position : initial rate*10; id1 := id2 + id3 *10,分析树 Parse Tree,id1 := id2 + id3 *10,语法树 Syntax Tree,词法分析和语法分析的界限,词法结构 线性分析 (Linear Analysis) 不需要递归 语法结构 层次分析 (Hierarchical Analysis) 需要递归,关于语法分析,语法分析程序的自动生成工具YACC 语法分析的依据语法规则 描述语法规则的工具 文法 BNF范式(BACKUS-NAUR FORM ),3) 语义分析 Semantic analysis,对结构上正确的源程序审查有无语义错误 静态语义 类型匹配审查 类型转换 动态语义(运行语义,执行语义) 例如数组越界、存储空间越界,语法正确但语义错误 类型不匹配,例1: int arr2, b; b = arr * 10;,例2: Program p(input,output); Var rate:real; procedure initial; position := initial + rate * 10,例3: int arr2,c; c = arr1 * 10 ; 变量没有声明,举例: 符合语法规则但不符合语义规则,使用没有声明的变量 给一个过程名赋值 调用函数时参数类型不合适 实数用作数组下标 参加运算的两个变量类型不匹配 ,Var rate:real; position := initial + rate * 10,插入语义结点,关于语义分析,语义分析程序的自动生成工具 无 语义分析的依据 - 语义规则 描述语义规则的工具 属性文法,4) 中间代码生成阶段 Intermediate Code Generation,中间语言, 中间表示 生成原则 介于高级语言和低级语言之间 容易生成 容易将它翻译成目标代码 与目标机无关,便于优化、移植 四元式、三元式、树结构 Pcode, Ccode, Bytecode,四元式,( 运算符,运算对象1,运算对象2,结果 ) ( * , a , b , c ) c = a*b,position : initial rate*10; id1:= id2+ id3 *10 id1:= id2+ id3 *inttoreal(10),id1:= id2+ id3 *inttoreal(10),(op, arg1, arg2, result ),问题:运算顺序是如何决定的?,t1、t2、t3为临时工作单元,也可以将四元式直接写成赋值的语句的形式 例:a = b * c + b * d 的四元式序列为: (1) t1 = b * c (2) t2 = b * d (3) t3 = t1 + t2 (4) a = t3,例: if ( a b if t1 goto L t2 = a c a = t2 L : t3 = b * c c = t3,5)代码优化 Code Optimization,中间代码优化 目标代码优化,源语句id1:= id2+ id3 *inttoreal(10)的代码序列,经优化得到优化的代码序列,6)目标代码生成,把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码 涉及到的内容 : 硬件系统功能部件的运用 机器指令的选择 各种数据类型变量的存储空间分配 关键问题是变量的寄存器分配,7) 表格管理 8) 出错处理,例: PL/0 语言 (PASCAL语言的子集),CONST A=35, B=49; VAR C, D, E; PROCEDURE P; VAR G;,positi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 捐资助学倡议书模板6篇
- 店铺使用权和代理权转让合同书(3篇)
- 第二十六章 二次函数(64道压轴题专练)
- 代词-2023年中考英语知识清单(原卷版)
- 天津市五区县重点校联考2024-2025学年高二上学期11月期中化学试题(含答案)
- 黑龙江省大庆市肇源县联盟学校2024-2025学年七年级上学期期中地理试题(含答案)
- 上海地区高考语文五年高考真题汇编-作文
- 2024年湖南省公务员考试《行测》真题及答案解析
- 企业间合作战略合同模板集
- 不动产投资合作协议书应注意问题
- 2024年浙江省中考英语试题卷(含答案)
- 2024-2030年中国AGV机器人行业发展分析及发展前景与趋势预测研究报告
- 人教版英语2024七年级上册全册单元测试卷
- 第5课 推动高质量发展
- 孤独之旅新版省公开课一等奖新名师比赛一等奖课件
- 2024-2030年中国智算中心行业市场发展现状及竞争格局研究报告
- GB/T 9799-2024金属及其他无机覆盖层钢铁上经过处理的锌电镀层
- CJT 497-2016 城市轨道交通桥梁伸缩装置
- 潍坊2024年山东潍坊市人力资源和社会保障局所属事业单位招聘笔试历年典型考题及考点附答案解析
- 电大财务大数据分析编程作业3
- Q∕GDW 1480-2015 分布式电源接入电网技术规定
评论
0/150
提交评论