- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C 语言编译器的设计和实现 LOGO 目录 1 背景及意义 2 3 4 相关技术及理论 系统需求分析 系统总体设计 5 系统详细设计和实现 背景及意义 1 背景 随着计算机的广泛应用,计算机程序设计语言也 从初期的机器语言发展为汇编语言,以及限制的各 种高级程序设计语言。而编译技术室计算机语言发 展的支柱,也是计算机科学中发展最迅速、最成熟 的一个分支,他集中体现了计算机发展的成果与精 华。 其核心思想就是把同样的逻辑结构和思想从一 种语言表示的程序转换为另外一种语言表示的程序 。从高级语言,最终到硬件执行的物理信号,这一 层层的转化,都涉及编译技术的应用。 因此,编译技术是人类智慧到机器执行的桥梁, 从软件到硬件层层推进的衔接力量。 背景及意义 ? 编译器是一种相当复杂的程序,其代码的长度可从几千行 到几百万行不等。编写甚至读懂这样的一个程序都非易事 ,大多数的计算机专业人员从来没有编写过一个完整的编 译器。但是,几乎所有形式的计算均要用到编译器,而且 任何一个与计算机打交道的专业人员都应该掌握编译器的 基本结构和操作。 ? 因此,掌握这一技术具有非常重大的实际意义。 2 意义 相关环境 ? VC2019 软件环境 硬件环境 ? CPU : Intel Core I5 ? 操作系统: Windows7 相关理论 ? 编译原理 形式语言理论 词法分析 语法分析 语义分析 中间代码生成 使用技术 标准 C++ 实现 保存不同信息的数据结构 大量算法 开发步骤 1. 认真分析,合理分工 2. 算法设计,方案确定 3. 语言选择,编制程序 4. 调试程序,确保质量 5. 资料整理,文本形成 系统需求分析 编译程序的任务: 源程序 目标程序 两者语法结构上可以不同,但语义上是等同的 系统需求分析 功能 识别 C 源文件语法正确性 判断出错类型 识别词法错误 分析 C 源文件语义 系统总体设计 系统详细设计和实现 ? 词法分析 ? 语法分析 ? 语义分析 ? 中间代码生成 词法分析 词法分析的功能 属性字:单词的 一 种 机 内 表 示 ( 反映单词的有 关特性 ). 单词符号(单词): 程序语言具有独立 意义的最小语法单 位 保留字 ( 关键字 ) 常数 标识符 界限符 ( 特殊符号 ) 程序语言定义的具有固 定意义的标识符 如 :Pascal 中的 begin 、 end 、 if 、 while …。 用来表示各种名字 . 如 : 变量 名、数组名、过程名等。 如 :128 、 0.123 、 3.14E-2 …。 如 :+ 、 - 、 * 、 / 、 = 、 = 、》 = 、《 = 等。 单词 符号 词法分析 单词符号的种类 词法分析程序的设计与实现 初始化 读字符 是字母 ? 读标识符 数字 ? 取数字 查常量表 生成属性字 写到输出流 是否分析结束 结束 特殊符号 ? 出错 查特殊符号表 生成属性字 查保留字表 查到 ? 查名字表 生成属性字 生成属性字 Y Y Y Y N N N N Y N 语法分析 ? 自顶向下 ? LL ( 1 ) ? 递归下降 ? 自底向上 ? LR ( 0 ) ? SLR ( 1 ) ? LR ( 1 ) ? LALR ( 1 ) 语法分析 --LR ( 1 ) LR(K) 是一种有效的自底向上语法分析方法。它的适应 范围广,分析速度快,且能准确及时地发现语法错误,所以 是当前最一般的语法分析方法。 LR(0) 是基础,但分析能力低,局限性大 SLR(1) “简单 LR ”实现容易,能力较强,不适合有 些文法 LR(1) 分析能力最强,适用于大多数文法, 但工作量大 LALR(1) 能力介于 SLR(1) 与 LR(1) 之间,空间节省 语法
文档评论(0)