编译原理知识点汇集.docVIP

  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文档。上传文档
查看更多
编译原理知识点汇集

第1章: 1、名词:解释器/解释程序 interpreter;编译器/编译程序 compiler;翻译器/翻译程序 translator。三者的区别与联系。虚拟机(如JAVA虚拟机JVM、Tiny语言虚拟机)是哪种程序? (1)解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的. 编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;? 是一种系统程序,它将计算机编程语言编写的程序翻译成另外一种计算机语言的一般来说等价的程序,主要包括编译程序和解释程序,汇编程序也被认为是翻译程序目标程序或者目标代码。。 解释器是另外种形式的语言处理器,它相当于不生成上面的目标程序,直接将输入“放到”源程序中,然后经过解释器,就得到了输出。通常情况下,编译过程比解释过程更快,但解释器能够有更好的错误诊断,因为解释器是逐句进行解释的。编.0译器和解释器可以结合起来进行处理,Java语言处理器就是其中的代表,其过程是源程序经过翻译器处理后得到中间程序,也被称作字节码(bytecode),然后和输入共同加入到虚拟机(virtual machine)的前端,得到输出,其前一部分用到编译器,后一部分用到解释器,这样做的好处是一个机器解释的代码可以应用在另外的机器上,甚至可以延伸到网络上。 2、编译过程图示 P5 图1-1 第3章: 1、Chomsky语言文法分类,程序语言的语法是哪一类,词法是哪一类,其产生式有什么特点。(教材3.6.3,但归纳得不好,参看课件) 下面4种文法构成的语言类成为乔姆斯基层次(Chomskyhierarchy) (1)0——型文法:(非限制的) (2)1——型文法:(上下文无关文法) (3)2——型文法:(上下文无关文法) (4)3——型文法:(正则文法) 2、名词:上下文无关文法的文法、语言、文法二义性、语言先天二义性、分析树、最左推导、最右推导。 (1)上下文无关文法:在计算机科学中,若一个形式文法?G = (N, Σ, P, S) 的 ??产生式规则都取如下的形式:V - w,则称之为上下文无关的,其中 VN ,w(N∪Σ)* 。上下文无关文法取名为“上下文无关”的原因就是因为字符 V 总可以被字串 w 自由替换,而无需考虑字符 V 出现的上下文。一个形式语言是上下文无关的,如果它是由上下文无关文法生成的﹙条目上下文无关语言﹚。 (3)文法二义性:指可生成带有两个不同分析树的串的文法称为二义性文法。 二义性问题不可判定:不存在一个算法,它能在有限步骤内,确切判定任给的一个文法是否为二义的;二义存在性证明是只要找到一个句子,该句子对应两个不同的语法树,即证明该文法是二义的。 解决二义性的基本方法:①设置一个规则,该规则可在每个二义性的情况下指出哪一个分析树(语法树)是正确的;②将文法改变成一个强制正确分析树的构造格式。 (4)语言先天二义性:如果产生上下文无关语言的每一个文法都是二义的,则说此语言是先天二义的。 (5)分析树(语法树) (6)最左推导:是指它的每一步中最左的非终结符都要被替换的推导。 (7)最右推导:是指它的每一步中最右的非终结符都要被替换的推导。 第4章: 1、递归下降语法分析程序构造过程; 对给定的一个上下文无关文法: (1)改写成EBNF;(4.1.2的两个例子,注意对有左公因子和直接左递归的产生式如何改写) (2)根据EBNF直接编写函数。 ①重复类型:使用while循环编程 如改写成EBNF的例子:E(EA|B改为E(B{A} 编程:E() { B(); while(token)  //token是A的起始终结符 { A(); } } ②选择类型:使用if语句 如改写为EBNF的例子:E(A|AB 改为E(A[B],中括号代表0或1次可选 编程:E() { A(); if(token) //token是B能导出的起始终结符 { B(); } } 第6章:语义分析 1、程序语言中的语义分析一般包括哪些内容? 答:变量定义和类型检查。其中变量定义中需要检查变量是否符合先定义后使用和变量的语义检查;在类型检查中:包括赋值语句、表达式、数组下标越界检查、函数调用(参数传递)的检查等。 2、名词:属性文法(上下文无关文法中增加文法符号的语义属性,以及语义规则);静态属性;动

文档评论(0)

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

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

1亿VIP精品文档

相关文档