2013-2014编译原理考试.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文档。上传文档
查看更多
编译程序是对高级语言程序进行翻译 在规范规约中,用句柄来刻画可规约串 动态存储分配是指在运行阶段为源程序的数据对象分配存储空间 词法分析的输出结果是单词的种别编码和自身值 正规式等价是指所识别的语言集相等 优化可生成运行时间短且占内存少的代码程序 【一】文法和语言 编译程序和翻译程序的区别 编译程序是整体编译完了,生成目标代码,再一次性执行。 解释程序是一边解释,一边执行,并不形成目标程序。 文法 文法是描述语言的语法结构的形式规则(即语法规则)。文法G:定义为四元组(VN,VT,P,S)VN为非终结符号的集合, VT为终结符号的集合, P为产生式的集合, S为开始符号,是一个非终结符,至少要在一条规则中作为左部出现。 文法分类 0型文法 短语文法 递归可枚举语言 1型文法 上下文有关文法 上下文有关语言 2型文法 上下文无关文法 上下文无关语言 3型文法 正规文法 正规语言 句型 假定G是一个文法,S是它的开始符号。如果ST*(表示从S出发,经0步或若干步可推出a),则称a是一个句型。 句子 仅含终结符号的句型是一个句子。 语言 由文法G生成的语言记为L(G),它是文法G的一切句子的集合 推导 直接推导 规约 直接规约 直接推导:仅当A —γ是一个产生式,有v =αAβ,w= αγ β,αAβ T αγ β,称v直接推导到w, 记作v T w,也称w直接归约到v。 最左推导又称为规范推导。 语法树 语法树的根结由开始符号所标记。 随着推导的展开,当某个非终结符被它的某个候选式所替换时,这个非终结符的相应结就产生了下一代新结。每个新结和其父亲结间都有一条连线。 在一棵语法树生长过程中的任何时刻,所有那些没有后代的端末结自左至右排列起来就是一个句型。 二义文法 如果一个文法存在某个句子对应两棵不同的语法树,则称这个文法是二义的。也就是说,若一个文法存在某个句子,它有两个不同的最左(最右)推导,则这个文法是法是二义的。 文法的二义性证明:找出一个句子,它有两个不同的最左推导或最右推导 短语 语法树中一棵子树的所有叶子从左向右排列起来形成一个相对于子树根的短语。 直接短语 只有父子两代的短语为直接短语。 句柄 一个句型的分析树中,最左边的只有父子两代的子树的叶子从左向右排列起来形成构成此句型的句柄。 1、语言和文法的相互转换 1) 已知文法写出该文法所生成的语言: ① 语言是有穷集:通过从开始符号的推导出所有的句子,所有句子的集合即为所求的语言 ② 语言是无穷集:通过从开始符号的推导出几个的句子,总结句子的特点,将特点描述出来。 例如G: S→0S1, S→01 S ?01 S?0S1 ?0011 S ?0S1 ?00S11=000111 语言为01个数相等,并且0在前,1在后L(G)={0n1n|n=1} 2) 已知语言写出描述该语言的文法 一般所写的文法是上下文无关文法和正规文法, ①用集合的形式表示语言 若是这一类的题目先记住几个基本的情况,若是复杂的都可以分解成基本的情况。 一般给定集合是无限集,文法都应是递归文法,可以是直接递归也可以是间接递归。 基本的有: ⅰ{an } 若生成多个a,用递归文法表示则为:A-aA, 递归有结束的时候,结束的写法看n的值: 若n为0,即有0个a,即为ε,A-ε 若n为1,即有1个a,即为a,A-a 若n为2,即有2个a,即为aa,A-aa ⅱ{anbn}生成n个a,n个b且a在b之前,则每一次推导都要产生一个a和一个b,才能保证ab的个数相等,若用A作为非终结符,右部A不能在ab之前A-Aab,或在ab之后A-abA,这样生成的符号串就是abab…,所以只能在ab之间。所以为:A-aAb,然后看n的值:若n为0,即有0个ab,即为ε,A-ε 若n为1,即有1个a,一个b,即为ab,A-ab ⅲ {rrt} 若r是{a,b}*,rt是r的逆,第一位和最后一位相同,第二位和倒数第二位相同,……。所以先生成第一个和最后一个,然后依次生成第二位和倒数第二位……。因为第一位和最后一位相同,同为a或同为b,A-aAa|bAb,这样能保证从后部分是前部分的逆。递归结束看rt和r之间的符号,在这里没有为ε,所以为A-ε;若改为{rart},rt和r之间为a,即为A-a 其余的情况可分解成以上三种情形。 例1: 试构造生成语言L={anbnci|n≥1, i ≥0}的文法 分析:anbnci可以进行分解让A生成anbn,B生成ci符号串anbnci是AB连接后的结果。n≥1所以A-〉aAb|ab ,i ≥0所以B-cB|ε也可写成B-Bc|ε。 解:S-〉

文档评论(0)

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

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

1亿VIP精品文档

相关文档