网站大量收购独家精品文档,联系QQ:2885784924

编译原理期末复习资料.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
编译原理期末复习资料 简答题: 什么是编译程序? 答:编译程序是指一个把源语言(如C,Pascal,java等高级语言)转换为目标语言(汇编语言、机器语言等低级语言)的翻译程序。 什么是解释程序? 答:解释程序指以一个源语言(C,Pascal,java等高级语言)为输入,但不产生目标程序,而是边解释边执行源程序本身的程序。 编译程序和解释程序的区别? 答:一个产生目标代码(编译),一个不产生目标代码(解释)。 编译程序的步骤和任务: 词法分析:从左至右扫描字符流的源程序、分解构成源程序的字符串,识别出(拼)一个个的单词(符号) 语法分析:层次分析,依据源程序的语法规则把源程序的单词序列组成语法短语(表示成语法树) 语义分析与中间代码产生:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译(产生中间代码)。 优化:对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效(省时间和空间)的目标代码。(书本)应用一些技术对代码进行变换以使得编译产生的目标代码高效(PPT)。 目标代码生成:把中间代码(或经优化处理之后)变换成特定机器上的低级语言代码。(书本)生成目标机汇编和机器指令。 名词解释 文法:一个文法G是一个四元组(VT,VN,S,P),其中: VT是一个非空有穷终结符号集合; VN是一个非空有穷的非终结符号集合,且VT∩VN=Φ; S∈VN开始符号。 P是一个产生式的非空有穷集合,每个产生式的形式是A→α,其中A∈VN,α∈(VT∪VN)* 开始符号S至必须在某个产生式的左部出现一次 直接推导和推导 直接推导:令G=(VT,VN,S,P), 若A→γ∈P, 且α,β∈(VT∪VN)*称αAβ直接推出αγβ,表示成αAβ?αγβ 同时也称αγβ是αAβ的直接推导,或称αγβ 直接归约到αAβ。 推导:如果存在一个直接推导序列:α0?α1?α2?… ?αn(n>0)表示成α0+?αn,称从α0到αn的长度为n的推导。α0*?αn,或者α0=αn或者α0+?αn . 语言:设文法G=(VT,VN,S,P)。如果S*?α,则称α是一个句型。仅含终结符号的句型是一个句子。语言L(G)是由文法G产生的所有句子所组成的集合:L(G)={α|S*?α且α∈VT*} 三、问答题 8. 文法的分类: 分为四种,逐渐对产生式施加限制形成一个层次 0型:G=(VT,VN,S,P) 规则形式:α→βα,β∈(VT∪VN)*, α≠ε 推导:γαδ?γβδ 1型(上下文有关):规则α→β有|α|≤|β| 规则形式:ξAη→ξγη A ∈VN,ξ,γ,.η∈(VT∪VN)*, γ≠ε 2型(上下文无关):规则形式:A→β A ∈VN,β∈(VT∪VN)* 3型(右线性):A→aB或A→a(右线性) A→Ba或A→a (左线性)a ∈VT∪{ε} 9. 给语言写文法:P36 :6、7、8、9、11 10. 改二义性文法:P36:10 基本步骤:把出现二义的部分优先级分块。 然后每个优先级用一个新的VN表示。 最底优先级的VN符号要能由VT符号定义如:A→…|a 11. NFA、DFA :P64:12 基本步骤:正则表达式→NFA→确定化(确定化表)→DFA(未简化) →最小化→最小化DFA ( 12. 写正则表达式:P64 :8 13. 练习理解文法的First和Follow集,证明文法是LL(1)的,预测分析表,构造递归下降分析程序。 1)计算FIRST(x)集: ·若x属于VT,则FIRST(x)={x} ·若x属于VN,x→a…,则a加入FIRST(x) ·若x属于VN,x→Y…,则FIRST(Y)除“空串”之外的加入FIRST(x) ·若x属于VN,X→Y1Y2Y3….YN若FIRST(Y1)、FIRST(Y1)、FIRST(Y1)…. FIRST(Yn)都含有“空串”那么把FIRST(Y1)、FIRST(Y1)、FIRST(Y1)…. FIRST(Yn)都加入到FIRST(x);如果只是前几个含有“空串”,如到Yk,那么把FIRST(Y1)、FIRST(Y1)、FIRST(Y1)…. FIRST(Yk)中非“空串”元素加入FIRST(x)。 2)计算FOLLOW(x)集: ·若x为开始符号,则把#加入FOLLOW(x); ·若A→axp,则把FIRST(p)除“空串”加入FOLLOW(x) ·若A→ax,或者A→axp中p有限步→“空串”,则把FOLLOW(A)加入到FOLLOW(x) 3)如何判断文法是否是LL(1)的: 假设是的,那么,考察非终结符号A→a|p

文档评论(0)

bm5044 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档