网站大量收购独家精品文档,联系QQ:2885784924

第二章 程序设计语言设计概述.pptVIP

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二章 程序设计语言设计概述 2.1 表示与抽象 2.2 设计目标 2.3 设计准则 2.4 规格说明 2.1 表示与抽象 表示是人为制造的符号组合以表达我们需要表达的意思。 程序是程序设计语言表示的计算 float n; //n 是浮点数变量 sqrt(n) ; //对n取平方根 同一程序的高级语言表示、经翻译后的汇编码表示、机器码表示就是该程序在不同抽象层次上的表示。 2.1 表示与抽象 程序在不同抽象层次表示的关系 例:x = x + 1在机器码上就有两种方法。 2.1 表示与抽象 2.2 PL设计目标 2.2 PL设计目标 2.3 设计准则 频度准则 越常用越简单 方便、可读 结构一致 程序结构和计算的逻辑结构一致 可读、方便 局部性 Locality 只有全局变量Basic 不鼓励全局变量Pascal,C 无全局变量函数式 Java 词法内聚 Lexical Coherence 变量在使用处就近声明 (Pascal声明和语句严格分开) 续 续 续 续 2.4.1 语法规格说明 续 续 2.4.1.2 上下文无关文法 2.4.1.3 BNF 和EBNF 续 续 续 续 2.4.1.4 语法图 2.4.1.5 语法分析 语法、语义和语用 语法规格说明定义了该语言程序合法的特征和语句。语言处理器则通过语法分析接受合法的程序,这就叫做程序释义(Parsing a Program),释义过程是产生式生成句子的逆过程。 语法分析的算法可归为两类: “自顶向下” 释义则从文法的起始符开始,按可能产生的表达式寻找语句相同的结构匹配。每一步都产生下一个可能的源符号串,找到再往下走。 “由底向上”释义则相反,它先查找源代码的各个符号串,看它能否匹配归结为产生式左边的非终结符,如果有含混则向前多读入k个符号串,为此归约下去,一个短语一个短语,最后到达起始符号串,归约的过程就形成了释义树。 begin x := 17 ; writeIn ( x ) end 标识符 变量标识符 变量访问 无符号常量 完整变量 无符号数 无符号整数 因子 项 简单表达式 表达式 过程标识符 标识符 变量标识符 完整变量 变量访问 因子 项 简单表达式 表达式 write参数 writeln参数表 赋值语句 简单语句 语句 过程语句 简单语句 语句 语句序列 复合语句 第*页 语法分析是语言翻译过程的一个重要阶段。语法分析技术是“编译原理”或“编译技术”课程的重要内容 本课程不准备详细介绍语法分析的技术,词法分析和语法分析过程并不仅用在编译系统里。 许多计算机软件的用户输入都需要做词法分析和简单的语法分析 今天的大部分语法分析器都是用工具生成的。例yacc/bison。 这些工具接受某种类似BNF 的语法描述,生成对应的语法分析器人们为各种主要语言(C/C++/Java等)开发了支持做词法和语法分析的工具或库,有些脚本语言本身就带有词法/语法分析库,可直接使用 2.4.1.5 语法分析 第*页 常规的语言编译过程 词法分析 语法分析 语义分析和中 间代码生成 与机器无关 的优化 目标代码生成 机器特定的 优化 2.4.2 语义定义与规格说明 第*页 语义定义:目标是赋予每个合法的程序一个明确的意义 精确定义程序执行的效果(行为,结果……) 要求编译程序(等)生成这种效果 写程序的人可以依赖于这种效果,据此写自己的程序 语义定义的基本方法是基于语言的语法结构: 定义语言中各种基本元素的意义 定义语言中各种语法结构的意义 基于相应结构的成分的意义,定义整个结构的意义一些具体情况: 表达式的意义是其怎样求值,求出什么值 语句的意义是其执行时的产生的效果 第*页 Algol 60 修订报告 用BNF 定义语言的语法, 采用自然语言形式的说明和实例的方式,非形式地定义语言的语义 Backus 在讨论Algol 60 时说: 现在我们已经有办法严格地定义语言的语法了,希望今后不久就能严格地定义语言的语义。 很遗憾,至今的语言手册仍一直沿用上述方式。因为: - 语义远比语法复杂,至今计算机工作者还没有开发出一种完美、功 能强大、易理解、易使用,适用于

文档评论(0)

***** + 关注
实名认证
文档贡献者

本账号下所有文档分享可拿50%收益 欢迎分享

1亿VIP精品文档

相关文档