- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
;;[重点和难点]:
本章的重点是:源程序的分析和目标程序综合的原理与方法;BNF文法;
本章的难点是:语法二义性,语义分析原理;;对于在虚拟计算机上实现的高级语言程序,必须经过翻译才能在实际的计算机上运行。
翻译一般要经“词法分析”—“语法分析” —“语义分析” —“代码优化” —“目标程序生成”等5个阶段。其中, “语法分析”阶段最为重要,它是描述程序结构的主要手段。
“遍”的概念?
“一遍”翻译?“二遍”翻译? “三遍”翻译?
;3.1 编程语言语法;本节主要内容;通用语法标准;可写性:
可写性是指程序易于编写。语法结构简单的语言程序可写性好。
增加可写性的方法:设计简洁、整齐的语法结构。允许保留不明确声明和操作的隐含。
可写性与可读性是一对矛盾。简洁的结构可增强程序的可写性,但降低了程序的可读性。如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)解释为函数调用。;语言的语法要素;标识符:
大多数语言都遵循以字母开始字母和数字组成的字符串作为标识符的原则。有的语言还允许包括“.”和“_”之类的特殊字符。如name_student是C中的合法标识符。这样,可以增强可读性和改善长度方面的限制。
标识符长度应该不受限制。;操作符:
大多数语言均使用 “+” 和 “-” 来表示基本的数学运算操作,除此之外,很少有相同的。
如Pascal使用 “:=”作为赋值操作,而C使用 “=”。 Pascal使用 “=” 作为比较操作,而C使用 “= =”,Fortran 使用字符串.EQ.。 ;关键字和保留字:
关键字是语句语法中固定部分使用的标识符。当关键字不能用作程序的标识符时,该关键字就是一个保留字。如C语言中的 if, for, while等。
使用保留字使翻译过程中的语法分析变得简单。作为反面例子,Fortran 中用户可以使用DO 和 IF作为标识符,因此以DO 和 IF 开始的语句实际上并不一定是循环或条件语句,所以Fortran 的语法分析较为困难。
使用保留字可增加程序的可读性。
但保留字也不能太多,否则难以记忆,编程不方便。如COBOL的保留字太多。
但当语言扩充而扩充新的保留字时,会引来麻烦。;噪声码:
插入在于语句中用来增加可读性的可选代码。
如Basic 语言中“GOTO”语句中的“GO”
您可能关注的文档
最近下载
- 剑桥少儿英语二级上unit1.ppt VIP
- Module 3 Unit 1 They're all my favourite festivals!(课件)-五年级英语同步备课(外研版一起).pptx VIP
- 教师资格考试基本能力第一节阅读理解能力演示教学.ppt VIP
- 2025第三届全国技能大赛海南省选拔赛-餐厅服务(国赛精选)项目技术文件.pdf VIP
- 麻醉药品和精神药品培训试题及答案.docx VIP
- 导视标识标牌系统制作安装方案(全面标准版).pdf VIP
- 挖掘机技能竞赛技术方案8660.pdf VIP
- 2023年国际生物奥林匹克竞赛试题-版.doc VIP
- Unit3Let'splaytors(课件)剑桥少儿英语二级下册((1)).pptx VIP
- 【★本书配套课件】5.2 “漫画”老师.pptx VIP
文档评论(0)