编译程序总复习-例题_第1页
编译程序总复习-例题_第2页
编译程序总复习-例题_第3页
编译程序总复习-例题_第4页
编译程序总复习-例题_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编译程序总复习——例题1.编译程序的功能和组织结构2.编译和解释程序3.正则表达式NFA→DFA→DFA最小化句型→推导的语法树→短语→简单短语→句柄6.文法←→语言←→句子7.语法分析——自顶向下和自底向上(LL法、LR法)8.语法制导翻译9.中间代码10.中间代码优化11.目标代码1.编译程序的功能和组织结构表处理词法分析源程序目标程序错误处理语法分析语义分析目标代码生成前端后端中间代码优化中间代码生成2.编译和解释程序目标程序源程序编译程序初始数据计算结果源程序解释程序初始数据计算结果功能工作结果实现技术上解释程序源程序的一个执行系统源程序的执行结果执行中间代码编译程序源程序的一个转换系统源程序的目标代码把中间代码转换成目标程序解释程序和编译程序的区别解释程序和编译程序的根本区别:是否生成目标代码3.正则表达式设文法G[A]:A→[BB→X]|BAX→Xa|Xb|a|b试求出文法G[A]产生的语言对应的正则式。3.设文法G[A]:

A→[B

B→X]|BA

X→Xa|Xb|a|b

试求出文法G[A]产生的语言对应的正则式。解:

[(a|b)(a|b)*]([(a|b)(a|b)*])*4.请构造与正则式R=(a*b)*ba(a|b)*等价的状态最少的DFA(确定有限自动机)。解:(1)NFA(2)NFA→DFA(3)DFA最小化5.有文法G[E]:ET|E+T|E-T

TF|T*F|T/F

Fi/(E)请判断(E+T)*i+F是G的一句型吗?如果是,请画出它的推导的语法树。并写出语法树的短语、简单短语、句柄。有文法G[E]:ET|E+T|E-TTF|T*F|T/FFi/(E)(E+T)*i+F是G的一句型)E(+ETE+ETTFF*TiF每棵子树的叶组成短语(E+T)*i+F(E+T)*I(E+T)E+TiF每棵简单子树的叶组成简单短语E+TiF最左简单子树的叶组成句柄

E+T6.(1)设有文法G[S]=({b},{S,B},S,{S→b|bB,B→bS}),该文法所描述的语言是_________。

(2)已知语言L={anbbn|n≥1},则_______文法可以产生语言L。

(3)设有文法G[I]:

I→I1|I0|Ic|a|b|c该文法的句子有________

①ab0②a0c01③aaa④bc106.

(1)设有文法G[S]=({b},{S,B},S,{S→b|bB,B→bS}),该文法所描述的语言是

L(G[S]={b2i+1|i≥0}

(2)已知语言L={anbbn|n≥1},则

Z→aAb

A→aAb|b

上述文法可以产生语言L。(3)设有文法G[I]:

I→I1|I0|Ic|a|b|c该文法的句子有②③④。

①ab0②a0c01③aaa④bc107.

设有文法G[S]:

S→E

E→Aa|bB

A→cA|d

B→cB|d

构造其LR(0)分析表并利用分析表判断acccd是否为文法G[S]的句子。

7.

设有文法G[S]:

S→E

E→Aa|bB

A→cA|d

B→cB|d

构造其LR(0)分析表并利用分析表判断acccd是否为文法G[S]的句子。

解:(1)识别活前缀的自动机(2)LR分析表(3)LR分析过程——即判断acccd是否为文法G[S]的句子8.在一个移入-规约的分析中采用以下的语法制导的翻译模式,在按一产生式规约时,立即执行括号中的动作。

A→aB{print“0”}

A→c{print“”}

B

→Ab{print“2”}

当分析器的输入为aacbb时,打印的字符串是什么?分析器输入为aacbb,打印的字符为12020bBcAAaBAab⑤④③②①A→aB{print“0”}

A→c{print“”}

B

→Ab{print“2”}9.

(1)表达式a*b-c-d$e$f-g-h*I中,运算符的优先级由高到低依次为-、*、$,且均右结合,且相应的后缀式为______。

(2)表达式-a+b*c+d+(e*f)/d*e,如果运算符的优先级由高到低依次为-、+、*、/,且均左结合,则其后缀式为______。9.

(1)表达式a*b-c-d$e$f-g-h*I中,运算符的优先级由高到低依次为-、*、$,且相应的后缀式为abcd--*efgh--I*$$。

(2)表达式-a+b*c+d+(e*f)/d*e,如果运算符的优先级由高到低依次为-、+、*、/,且均左结合,则其后缀式为

a-b+cd+ef*+*de*/。10.试写出算术表达式

a+b*c-(c*b+a-e)/(b*c+d)

优化后的四元式序列。11.目标代码写出下列表达式的目标代码T:=C*(A+B)+(A+B)C:=A+BA:=(C*D)+(E-F)

写出下列表达式的目标代码T:=C*(A+B)+(A+B)C:=A+BA:=(C*D)+(E-F)解答:LOAD A,R1ADD B,R1LOAD C,R2MULT R1,R2ADD R1,R2STORE G,R2LOAD E,R2SUB F,R2STORE C,R1MULT D,R1ADD R2,R1STORE A,R2编译器设计方案•C-惯用的词法•C-语言的TinyMachine运行时环境•C-的语法和语义•使用C-和TM的编程设计•C-的程序例子这里定义了一个编程语言称作C-Minus(或简称为C-),这是一种适合编译器设计方案的语言,它比TIN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论