编译原理总复习(吉林大学)总复习(2).pptVIP

编译原理总复习(吉林大学)总复习(2).ppt

  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文档。上传文档
查看更多
总 复 习(二) 一、正则表达式和正则集 正则表达式是表示給定字母表上的符号串集合的一种工具,是描述程序设计语言中单词的一种简单而且数学化工具。 表示符号串的构成模式。 正则表达式r定义了一个符号串集合rs, rs内的每个符号串都与r所定义的模式相匹配,rs称为由r生成的语言,记作L(r)。 正则表达式所表示的符号串集合又称为正则集。 (一)正则表达式和正则集的定义 定义1:设∑为有限字母表,在∑上的正则表达式和正则集可递归定义如下: (1) ? 和?是∑上的正则表达式,它们表示的正则集分别为{ε}和?; (2) 对任何a∈∑,a 是∑上的正则表达式,它所表示的正则集为{a}; (3) 若r,s都是正则表达式,它们表示的正则集分别为R和S, 则(r)、r|s、r?s、(r)*也是正则表达式,它们分别表示的正则集是:R,R∪S , RS和R*。 (4) 有限次使用上述三条规则构成的表达式,称为∑上的正则表达式,仅由这些正则表达式表示的集合称为正则集。 证明:对于字母表∑上的任意一个正则表达式R,一定可以构造出一个非确定有限自动机 M, 使得L(M)=L(R)。 Step1:首先构造此非确定有限自动机M的初始状态S和终止状态Z,由S射出指向Z的有向弧上标记正则表达式R。 step2:反复利用下述的替换规则对正则表达式R依次进行分解,直至状态转换图中所有有向弧上标记的符号都是字母表∑上的元素或?为止。 对应过程∕函数声明的中间代码有: ( ENTRY , LabelQ , SizeQ , LevelQ ) ( ENDPROC , — , — , — ) 或 ( ENDFUNC , — , — , — ) 其中: LabelQ 是给过程Q分配的代码入口标号; SizeQ 是过程(函数)Q的AR空间大小,该空间暂时不包括临时变量部分,此时SizeQ实际是临时变量的初始Offset ,在代码生成阶段处理完临时变量时才可完全确定; LevelQ是过程Q的层数; ENTRY和ENDPROC(或ENDFUNC)分别表示子程序的入口和出口。 While语句的中间代码结构: ( WHILE ,-,-,- ) E 的中间代码 ( DO ,E.FORM ,-,-) S的中间代码 (ENDWHILE ,-,-,- ) if E then S1 else S2中间代码结构: E 的中间代码 ( THEN , E.FORM , — , — ) S1 的中间代码 (ELSE , — , — , — ) S2 的中间代码 (ENDIF , — , — , — ) 背景知识 背景知识 * * 选择题 1.现有前缀表示的表达式文法G1: E ? -EE | -E | a | b | c 则文法的句子- - a – b c的所有可能语法树有 棵。 A. 1 B. 2 C.3 D. 4 E E E - E E E - E E - a - E E c a b b c E - E - - E E C E - E ? -EE | -E | a | b | c 则文法的句子- - a – b c的所有可能语法树有 棵 E - E E - E E - - E E E - a b c C 2.一个语言的文法是 。 A.惟一的 B.不惟一的 C.个数有限的 3.对于允许用户动态申请和释放内存空间的高级程序设计语言,必须采用 存储分配技术。 A.静态 B.栈式 C.堆式 4.在高级语言的程序中,各个函数/过程之间信息传递是通过 实现的。 ①局部变量 ②全局变量 ③参数传递 ④函数返回值 A. ①②③④ B. ①②③ C. ②③④ D. ③④ B C C 5.设有文法G[S]: S ? S*S | S+S | (S) | a 该文法 二义性文法。 A.是 B.不是 C.无法判断 6.赋值语句x=a+b*((a+c)*d+e)的逆波兰表示式是 。 A.xab+ac+d*e+*= B.xabac+de+**+= C.xabac+d*e+*+= D.a,b,c都不正确 7. 文法G产生的 的 全体是该文法描述的语言。 符号串 B. 句型 C. 句子 D. 符号 C C A Pos(E1ωE2)=Pos(E1)||pos(E2) || ω Pos((E))=Pos(E) Pos(id)=id Pos(x=a+b*((a+c)*d+e)) Pos(x) || pos(a+b*((a+c)*d+e)) || =

文档评论(0)

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

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档