第三章 语言翻译.PPTVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 语言翻译 程序结构 语法 程序是什么样的 BNF (上下文无关文法) – 一种非常有用的描述语法的表示法。 语义 执行行为 静态语义 – 语义在编译时确定: var A: integer; A 的类型和存储 int B[10]; 数组 B 的类型和存储 float MyProcC(float x;float y){...}; 函数属性 动态语义 – 语义在执行时确定: X = ``ABC‘’ SNOBOL4语言的例子: X 是一个字符串 X = 1 + 2; X 是一个整数 :(X) X 是一个地址;转移到标号为 X 的地方 主要内容 程序语言的语法 语法的一般准则、次要(或二级)准则 语法的基本元素 程序-程序的组织结构 程序的翻译 源程序分析:词法分析(扫描)、语法分析、语义分析 目标程序的综合 翻译模型 BNF、正则文法(有限状态自动机)、下推自动机 PERL概述 3.1 语言的语法 语法:单词的组织方式,用来展示单词之间的关系 单词作为语句中的元素 语法描述了构成有效程序的符号序列。 如C中,x=y+z是有效的符号序列,而xy+-则不是。 语法提供了理解程序的含义所需的信息,也提供了大量的从源程序到目标程序翻译所需的信息。 语言的语法(2) 单靠语法并不足以无二义地刻划语句的结构。如:x=2.45+3.67,语法并不能告诉我们x是否被声明过或是否声明为实数。x=5,6或6.12均是可能的。 因此,对语言的完整描述单靠语法结构是不够的,还需涉及语义。如:声明的使用、操作、顺序控制和引用环境等影响变量性质的一些属性,并不总是由语法决定。 语言的语法(3) 虽然如此,语法仍是语言描述中的重要属性。 现在,语法描述已是一个解决了的问题,源程序的语法理解阶段是相当机械的,YACC等工具可自动生成给定程序的语法描述。 语法的一般准则 语法的主要目的是为程序员和语言处理器间通讯提供一套注记方法。而选择特殊的语法结构主要是为了传递特殊的信息项。 例如:某特定变量有类型实数,可以用多种方式表达。可以是显式声明或隐含的命名约定,等。 语法细节的选择大部分是基于第二准则,如可读性,它和通讯的主要目标无关。 有很多二级准则,通常可按其目标分类,分为:易读、易写、易翻译、无二义等目标。这些目标间有时会有冲突。 易读性(Readabitity) 程序是易读的: 如果程序表示的算法和数据的结构可以很容易从程序文本中了解到。一个易读的程序,通常称为自成文档的(不需其他用于理解的辅助文档)。 增加易读性的方式: 自然的语句格式、结构化语句、关键字和噪音字的自由使用、嵌入式注释机制、不限长标识符、助记符、自由域格式、完全的数据声明等。 不同的语法应反映不同语义,做相似事的程序结构是相似的。做不同事的程序其结构需有明显不同。语言如只提供了少数不同语法结构,通常导致程序易读性差。如APL,SNOBOL4等,只提供一种语句格式,赋值、子程序调用、简单GOTO、子程序返回,多路条件分支、及其它常见程序结构的差异只能通过个别操作算子的不同来反映。 易读性(Readabitity) 易读性并不能由语言设计保证,最好的设计也可能由于糟糕的编程而破坏。当然,语法设计也可能使好程序员写出难理解的程序,如APL。COBOL强调易读,但其代价是牺牲了易写和易翻译。 易写性 易写性(使用简明的、规则的语法结构)通常和易读性(冗余结构是有帮助的)相冲突。 隐含的语法约定允许声明和操作不需预先刻划,从而使程序更短、更易写,但不易读。 有些语法冗余性有用的,因它允许程序易读,并允许翻译时错误检测。缺点是不易写。 语法称为冗余的,如果以多种方式传达同样的信息。 大多数缺省规则(针对语言结构含义)试图减少冗余,而删去了某些显式的含义陈述,因为这些含义可从语境中导出。 例,Fortran中约定,I-N打头的变量为整型,其他为实数,这样不需声明,但缺点是有副作用,如:拼写错误不能被编译器检测到,例如:INDEX被写成INDX→则变成新变量。 易写性 对两个目标均有增强的一些特征: 如结构化语句、简单自然语句格式、助记符、未限制标记符等通常使程序易写 通过允许在程序中直接表示问题的算法和数据的自然结构。 易验证性 和易读、易写相关的概念是程序正确性或程序验证。 多年经验表明,理解每条程序语言语句是容易的,创建正确程序的整个过程却是困难的。 因此,需有技术,使得能数学地证明程序是正确的。 易翻译性 即易于翻译成可执行形式。 易读性和易写性是面向程序员的需要。易翻译性(关键是结构的正则性)是面向翻译器(处理被写成的程序)的需要。 如LISP程序,不易读、也不易写、但易于翻译,主要由于其语法简单且正则。 当特殊语法结构增加,将导致翻译

文档评论(0)

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

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

1亿VIP精品文档

相关文档