资源描述:
《编译程序总复习——例题》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、编译程序总复习——例题1.编译程序的功能和组织结构2.编译和解释程序3.正则表达式NFA→DFA→DFA最小化句型→推导的语法树→短语→简单短语→句柄6.文法←→语言←→句子7.语法分析——自顶向下和自底向上(LL法、LR法)8.语法制导翻译9.中间代码10.中间代码优化11.目标代码1.编译程序的功能和组织结构表处理词法分析源程序目标程序错误处理语法分析语义分析目标代码生成前端后端中间代码优化中间代码生成2.编译和解释程序目标程序源程序编译程序初始数据计算结果源程序解释程序初始数据计算结果功能
2、工作结果实现技术上解释程序源程序的一个执行系统源程序的执行结果执行中间代码编译程序源程序的一个转换系统源程序的目标代码把中间代码转换成目标程序解释程序和编译程序的区别解释程序和编译程序的根本区别:是否生成目标代码3.正则表达式设文法G[A]:A→[BB→X]
3、BAX→Xa
4、Xb
5、a
6、b试求出文法G[A]产生的语言对应的正则式。3.设文法G[A]:A→[BB→X]
7、BAX→Xa
8、Xb
9、a
10、b试求出文法G[A]产生的语言对应的正则式。解:[(a
11、b)(a
12、b)*]([(a
13、b)(a
14、b)*])
15、*4.请构造与正则式R=(a*b)*ba(a
16、b)*等价的状态最少的DFA(确定有限自动机)。解:(1)NFA(2)NFA→DFA(3)DFA最小化5.有文法G[E]:ET
17、E+T
18、E-TTF
19、T*F
20、T/FFi/(E)请判断(E+T)*i+F是G的一句型吗?如果是,请画出它的推导的语法树。并写出语法树的短语、简单短语、句柄。有文法G[E]:ET
21、E+T
22、E-TTF
23、T*F
24、T/FFi/(E)(E+T)*i+F是G的一句型)E(+ETE+ETTFF*TiF每棵子树的叶组成短语(E+
25、T)*i+F(E+T)*I(E+T)E+TiF每棵简单子树的叶组成简单短语E+TiF最左简单子树的叶组成句柄E+T6.(1)设有文法G[S]=({b},{S,B},S,{S→b
26、bB,B→bS}),该文法所描述的语言是_________。(2)已知语言L={anbbn
27、n≥1},则_______文法可以产生语言L。(3)设有文法G[I]:I→I1
28、I0
29、Ic
30、a
31、b
32、c该文法的句子有________①ab0②a0c01③aaa④bc106.(1)设有文法G[S]=({b},{S,B
33、},S,{S→b
34、bB,B→bS}),该文法所描述的语言是L(G[S]={b2i+1
35、i≥0}(2)已知语言L={anbbn
36、n≥1},则Z→aAbA→aAb
37、b上述文法可以产生语言L。(3)设有文法G[I]:I→I1
38、I0
39、Ic
40、a
41、b
42、c该文法的句子有②③④。①ab0②a0c01③aaa④bc107.设有文法G[S]:S→EE→Aa
43、bBA→cA
44、dB→cB
45、d构造其LR(0)分析表并利用分析表判断acccd是否为文法G[S]的句子。7.设有文法G[S]:S→EE→Aa
46、bBA→c
47、A
48、dB→cB
49、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⑤
50、④③②①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
51、--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)解答:LOADA,R1ADDB,R1