第三节 语言翻译问题.ppt

  1. 1、本文档共59页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章主要内容 3.1 编程语言语法 3.2 翻译步骤 3.3 BNF文法 3.1 编程语言语法 语法:以句子中词的排列来表明它们的彼此关系。如C语言中,x=y+z具有正确的语法,而x+-则语法错误。 语法是理解一个程序的重要手段,也为将源程序翻译成目标程序提供了必要的信息。 但,只有语法是不够的。如“张三踢足球”和“足球踢张三”,语法都正确,但语义?如 x = 2.54+3.67, 结果为5,6,6.21? 本节主要内容 通用语法标准 语言的语法要素 主程序-子程序结构 通用语法标准 可读性: 如果一个程序的算法和数据结构能够明显的从程序文本中观察出来,则这个程序是可读的。可读的程序称之为自引证的。 可读性成为如今程序编制的重要目标是一。 增加可读性的方法:用自然语句格式、结构化、自由使用关键字和噪声码、注释、不限标识符长度、助记符、自由域格式、完整的声明。 可写性: 可写性是指程序易于编写。语法结构简单的语言程序可写性好。 增加可写性的方法:设计简洁、整齐的语法结构。允许保留不明确声明和操作的隐含。 可写性与可读性是一对矛盾。简洁的结构可增强程序的可写性,但降低了程序的可读性。如C语言,可写性较好,但可读性差。允许保留不明确声明和操作的隐含可增强可写性,但会降低可读性,同时可检验性差。 易检验性: 证明程序的正确性。 这不仅涉及到语法,主要涉及到语义的正确性验证。 目前,主要通过一些测试方法,以及谓词演算方法来验证。 易翻译性: 源程序容易翻译成可执行的目标程序。易翻译性与翻译器密切关联。 易于翻译的关键是结构的规范化。 易翻译性与可读性和可写性之间存在矛盾。如LISP程序易于翻译,但可读性和可写性较差。COBOL语言程序的语义较为简单,可读性和可写性较好,但由于存在数量庞大的语句和声明,翻译极为困难。 无二义性: 所谓二义性是指:相同的语法结构存在两种或更多种理解。无二义性是每个程序语言设计的中心问题。二义性问题通常不是出现在单个的程序元素中,而是在不同结构的相互作用下表现出来的。 例1:C语言中存在两种不同的条件形式: if (ConE) S if (ConE) S1 else S2 每一条语句均清楚的解释了语义,不存在二义性。但将两个语句组合为: if (ConE1) if (ConE2) S1 else S2 此时,存在二义性。 语句S2的执行控制存在不同的理解,是ConE1为假时执行,还是ConE1为假时执行? 解决方法: 插入定界符,如 if (ConE1) if (ConE1) { if (ConE2) S1; 或 { if (ConE2) S1}; else S2;} else S2; 二者语义中强制的选择一种作为合法的解释,如就近匹配原则,即else与最近的 if 匹配。 例2:Fortran语言中,函数调用和数组引用语法是完全相同的。如语句 x = A(i,j) 存在二义性。此时A(i,j)是函数A的调用?还是数组A的引用? 解决方法:若没有数组A的声明,就默认为是函数A的调用。Pasacl和C语言中的解决方案是:用[]表示数组,()表示函数,如A[i,j]理解为数组引用, A(i,j)解释为函数调用。 语言的语法要素 选用不同的基本语法要素就形成了一种语言的基本风格。下面,将简介一些语法要素。 字符集: 字符集的选择是语法设计的第一步。通常选择的字符集是ASCII字符集。 目前,通常使用8为(一个Byte)来表示一个字符,这足够表示52个大小写字母、10个数字、标点符号以及一些特殊字符。但如今,计算机工业越来越国际化,各个国家的文字、货币符号等已远远超过256。因此,考虑使用16位表示字符集。 标识符: 大多数语言都遵循以字母开始字母和数字组成的字符串作为标识符的原则。有的语言还允许包括“.”和“_”之类的特殊字符。如name_student是C中的合法标识符。这样,可以增强可读性和改善长度方面的限制。 标识符长度应该不受限制。 操作符: 大多数语言均使用 “+” 和 “-” 来表示基本的数学运算操作,除此之外,很少有相同的。 如Pascal使用 “:=”作为赋值操作,而C使用 “=”。 Pascal使用 “=” 作为比较

您可能关注的文档

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档