编译原理课后习题答案
更新时间:2024-01-29 16:48:01 阅读量: 教育文库 文档下载
- 编译原理第三版课后答案推荐度:
- 相关推荐
第一章
1.典型的编译程序在逻辑功能上由哪几部分组成?
答:编译程序主要由以下几个部分组成:词法分析、语法分析、语义分析、中间代码生成、中间代码优化、目标代码生成、错误处理、表格管理。 2. 实现编译程序的主要方法有哪些?
答:主要有:转换法、移植法、自展法、自动生成法。
3. 将用户使用高级语言编写的程序翻译为可直接执行的机器语言程序有哪几种主要的方式?
答:编译法、解释法。
4. 编译方式和解释方式的根本区别是什么?
答:编译方式:是将源程序经编译得到可执行文件后,就可脱离源程序和编译程序单独执行,所以编译方式的效率高,执行速度快;
解释方式:在执行时,必须源程序和解释程序同时参与才能运行,其不产生可执行程序文件,效率低,执行速度慢。
1
第二章
1. 乔姆斯基文法体系中将文法分为哪几类?文法的分类同程序设计语言的设计与实现关
系如何?
答:1)0型文法、1型文法、2型文法、3型文法。
2)
2. 写一个文法,使其语言是偶整数的集合,每个偶整数不以0为前导。 答:
Z?SME | B
S?1|2|3|4|5|6|7|8|9 M?? | D | MD D?0|S B?2|4|6|8 E?0|B N? D|ND
D? 0|1|2|3|4|5|6|7|8|9
请给出句子123、301和75431的最右推导和最左推导。 答:N?ND?N3?ND3?N23?D23?123
N?ND?NDD?DDD?1DD?12D?123 N?ND?N1?ND1?N01?D01?301 N?ND?NDD?DDD?3DD?30D?301
N?ND?N1?ND1?N31?ND31?N431?ND431?N5431?D5431?75431
N?ND?NDD?NDDD?NDDDD?DDDDD?7DDDD?75DDD?754DD?7543D?75431
3. 设文法G为:
4. 证明文法 S?iSeS|iS| i是二义性文法。 答:对于句型iiSeS存在两个不同的最左推导:
S?iSeS?iiSes S?iS?iiSeS
所以该文法是二义性文法。 (1) L1={anbnci |n>=1,i>=0 } (2) L2={aibj|j>=i>=1} (3) L3={anbmcmdn |m,n>=0} 答:
(1) S?AB
A?aAb | ab B?cB | ?
(2) S?ASb |ab
2
5. 给出描述下面语言的上下文无关文法。
A?a | ?
(3) S?aSd | A | ?
A?bAc | ?
6. 设计一个最简的DFA M,使其能够识别所有的被3整除的无符号十进制整数。 答:
2|5|80|3|6|91|4|70|3|6|9011|4|720|3|6|92|5|82|5|81|4|7
7. 设计一个DFA,使其能够接受被4整除的二进制数。 答:
001110102103
8. 写出表达下列各项的正则表达式。
(1)二进制数且为5的倍数。
(2)Σ={a,b,c},第一个a位于第一个b之前的字符串。 (3)Σ={a,b,c},包含偶数个a的字符串。
(4)Σ={0,1},不包含11子串的字符串。 答: (1) 可以先画出相应的有限自动机: 101101AB10CD00E
添加新的开始状态S和终止状态T: 3
101101S?A?B10CD00ET 根据以上自动机,列出以下方程: ① S=A ② A=0A+1B+T ③ B=0C+1D ④ C=0E+1A ⑤ D=0B+1C ⑥ E=0D+1E 解以上方程组: ⑥? E=1*0D ②? A=0*1B+0*T ⑥代入④? C=01*0D+1A **⑤代入④? C=0100B+0101C+1A ? C=xB+yA 其中x=(01*01)*01*00 y=(01*01)*1 ⑤代入③? B=0C+10B+11C ? B=(0|11)C+10B ? B=(10)*(0|11)C 将C=xB+yA代入上式? B=uB+vA ? B=u*vA 其中u=(10)*(0|11)x v=(10)*(0|11)y 将B=u*vA代入②? A=0*1u*vA+0*T **** ? A=(01uv)0T 将A代入①? S=(0*1u*v)*0*T 串(0*1u*v)*0*即为所求。 (2)该题目理解为:至少有一个a和一个b,且a出现在b的前面(可以有间隔),则答案为: c*a(a|c)*b(a|b|c)* (3)((b|c)*a(b|c)*a)*(b|c)* (a(b|c)*a | b | c)* (4)(0|10)*(1|?) 4
第三章
1. 词法分析器的功能是什么?
答:读源程序的字符序列,逐个拼出单词,并构造相应的内部表示TOKEN;同时检查源程序中的词法错误。
2. 试分析分隔符(空格、跳格及回车等)对词法分析的影响。
答:空格、跳格、回车等分隔符号对词法分析不起作用,可以删除。但是回车符号可以用于错误定位,所以在删除回车符号前需要统计回车的个数。 3. 给出识别C语言全部实型常数的自动机。
答:(+|-|?)([1-9][0-9]*|0)(.[0-9][0-9]*|?) (E(+|-|?)[0-9][0-9]*) 4. 写出识别C语言中所有单词的LEX程序。
答: L=[A-Z] | [a-z] D=[0-9] D1=[1-9] %% (L|_)(L|D|_)* {return (1);} D1D* {return (2);} + {return (3);} ……
5
第四章
1. 设有如下文法G[S]:
S?aABbcd | ? A?ASd | ? B?SAh | eC | ? C?Sf | Cg | ?
(1) 求每个产生式的Predict集。 (2) 该文法是否为LL(1)文法?为什么? 答:(1)
Predict(S?aABbcd)={a} Predict(S? ?)={#,d,f,a,h } Predict(A?ASd)={a,d} Predict(A? ?)={h,a,d,b,e} Predict(B?SAh)={a,d,h} Predict(B? eC)={e} Predict(B? ?)={b} Predict(C?Sf)={a,f} Predict(C? Cg)={a,f,g} Predict(C? ?)={g,b}
(2)由于Predict(A?ASd)? Predict(A? ?)??,所以该文法不是LL(1)文法。 (1) S?(SS’ | ?
S’ ?) | ? (2) S?(S)S | ? (3) S?S(S)S | ? (4) S?(S | S’
S’?(S’) | ?
答:(1)不是,(2)是,(3)不是,(4)不是 3. 已知文法G[E]:
E?E+T | T T?T*F | F F?i | (E)
请按递归下降法构造该文法的语法分析程序。 答:求产生式的predict集合:
2. 下列描述括号匹配的文法中,哪些是LL(1)文法?
predict(E?E+T)={i,(} predict(E?T)={i,(} predict(T?T*F)={i,(} predict(T?F)={i,(}
6
由于文法中非终极符号E和T对应的产生式的predict集合的交集都不为空,所以该文E?TE’ E’?+TE’ | ? T?FT’ T’?*FT’ | ? F?i F?(E)
求新文法的predict集合: Predict(E?TE’)=,(,i- Predict(E’?+TE’)=,+- Predict(E’??)={#,)} Predict(T?FT’)=,i,(- Predict(T’?*FT’)=,*- Predict(T’??)={+,),#} Predict(F?i)={i} Predict(F?(E))={(}
由于以上文法中任意非终极符号对应的产生式的predict集合的交集都为空,所以满足Void E()
{ if(token?{(,i-) ,T();E’();- else Error();} void E’()
{ if(token?{+-) ,Match(‘+’);T();E’();- else if(token?{#,)}) {;} else Error();} void T()
{ if(token?{i,(-) ,F();T’();- else Error();} void T’()
{ if(token?{*-) ,Match(‘*’);F();T’();- else if(token?{+,),#}) {;} else Error();} void F()
{ if(token?{i-) ,Match(‘i’);-
else if(token?{(-) ,Match(‘(‘);E();Match(‘)’);- else Error();}
L={? | ?为字母表?上不包括两个相邻的1的非空串},其中?={0,1}。
法不满足自顶向下分析的条件,现对文法进行等价变换得到如下文法:
自顶向下分析的条件,所以可以写出如下的递归下降语法分析伪代码:
4. 构造一个LL(1)文法G,它能识别语言L: 并证明你所构造的文法是LL(1)文法。
7
答:A?0E | 1F
B?0E | 1F C?0E E?B | ? F?C | ?
Predict(A?0E)={0} Predict(A?1F)={1} Predict(B?0E)={0} Predict(B?1F)={1} Predict(E?B)={0,1} Predict(E??)={#} Predict(F?C)={0} Predict(F??)={#}
对任意非终极符号对应的产生式的predict集合的交集都为空,所以该文法是LL(1)文
法。
5. 已知文法G[A]为:
A?aABe | a B?Bb | d
(1) 试给出与G[A]等价的LL(1)文法G’*A+。
(2) 构造G’*A+的LL(1)分析表并给出输入串aade#的分析过程。 答:(1)所求G’*A+为:
A?aA’ A’?ABe A’? ?
B?dB’ B’?bB’ B’? ?
(1) (2) (3) (4) (5) (6)
Predict(A?aA’)=,a- Predict(A’?ABe)={a} Predict(A’??)={#,d} Predict(B?dB’)=,d- Predict(B’?bB’)=,b- Predict(B’??)={e}
对任意非终极符号对应的产生式的predict集合的交集都为空,所以该文法是LL(1)文(3) 分析表如下: 法。 A A’ a (1) (2) b d (3) e # (3) 8
B B’
(5) (4) (6) aade#的分析过程如下 分析栈 A# aA’ # A’ # ABe# aA’Be# A’Be# Be# dB’e# B’e# e# #
输入流 aade# aade# ade# ade# ade# de# de# de# e# e# # 动作 替换(1) 匹配 替换(2) 替换(1) 匹配 替换(3) 替换(4) 匹配 替换 匹配 成功 9
第五章(这章答案是错的) 1. 设有下列文法:
(1) S?aA
A?Ab A?b S?aSSS S?c S?b A?SA A?a S?ccB B?ccB B?b A?cA A?a
(2) S?aSSb
(3) S?AS
(4) S?cA
构造上述文法的LR(0)归约活前缀状态机,并给出LR(0)分析表。 答:
(1)
Ch05-1-(1)0Z→.SS→.aAA→.AbA→.b3A→b.
(2)
有移入、规约冲突1SaZ→S.2S→a.AA→.AbA→.bbA4S→aA.A→A.bb5A→Ab.
10
Ch05-1-(2)1Z→S.S0Z→.SS→.aSSbS→.aSSSS→.cc5S→c.c2S→a.SSbS→a.SSSS→.cS→.aSSbS→.aSSSacaS3S→aS.SbS→aS.SSS→.cS→.aSSbS→.aSSSa4S→aSS.bS→aSS.SS→.cS→.aSSbS→.aSSScbS6S→aSSb.7S→aSSS.aS
actionaS0Z→.S (1)S→.aSSb (2)S→.aSSS (3)S→.c (4)S1S2S3S4S5S6S7
(3)
gotocs5Accs5s5#S1347R4R2R3
bs2s2s2s2R4R2R3s6R4R2R3s5R4R2R3 11
Ch05-1-(3)有移入、规约冲突2A→SA.1Z→S.A→S.AA→.SAA→.aSa4aA→a.5bS→b.bS7S→AS.AS3A→S.AA→.aA→.SAS→.ASS→.bb8A→SA.S→A.SS→.ASS→.bA9SS→AS.S10AS→.ASS→A.SS→.bASbb0Z→.SS→.ASS→.bA→.SAA→.aA6S→A.SS→.ba
(4)
Ch05-1-(4)0Z→.SS→.cAS→.ccB2Z→S.S4S→cA.A1S→c.AcS→c.cBcA→.cAA→.aaa3A→a.6S→ccB.B5S→cc.BB→.ccBB→.bA→c.AA→.cAA→.a8B→c.cBA→c.AA→.cAA→.acA7AA→cA.b9B→b.cc11B→ccB.B10B→cc.BB→.ccBB→.bA→c.AA→.cAA→.aAbaa
12
Z→S (1)S→cA (2)S→ccB (3)B→ccB (4)B→b (5)A→cA (6)A→a (7)aS0S1S2S3S4S5S6S7S8S9S10S11s3R7R6s3R3R2s3R5s3R4actionbcs1s5R7R6s8R3R2s10R5s8R4#A4gotoBS2R7R6s9R3R2R5s9R4AccR7R67R3R27R57R411
62. 设有下列文法:
(1) S?SaS | b (2) S?bSb | cSc | b | c (3) S?bSb | bSc | d (4) S?aSb | bSa | ab (5) S?Sab | bR
R?S | a B?b A?aA | B B?? A?? B?dB | ? (6) S?SAB | BA
(7) S?AaAb | BbBa
(8) A?aABe | Ba
说明上述文法是否为SLR(1)文法。若是,请构造SLR(1)分析表;若不是,请说明理由。 答:
(1)
Ch05-2-(1)不是SLR(1)Follow(S)={#,a}0Z→.SS→.SaSS→.bb1S→b.2SZ→S.S→S.aS3S→Sa.SaS→.SaSS→.bbSa4S→SaS.S→S.aS
13
(2)
Ch05-2-(2)不是SLR(1)Follow(S)={#,b,c}01S→b.SbS→b.S→.bSbS→.cScS→.bS→.cZ→.SS→.bSbS→.cScS→.bS→.c
(3)
b
Ch05-2-(3)Z→.SS→.bSbS→.bScS→.dS1Z→S.0是SLR(1)3dS→d.5S→bSb.b4S→bS.bS→bS.cc6S→bSc.d2S→b.SbbS→b.ScS→.bSbbS→.bScS→.dS
Z→.S (1)S→.bSb (2) S→.bSc (3)S→.d (4) S0S1S2S3S4S5S6bs2s2R4s5R2R3actioncds3s3#gotoS1R4s6R2R3AccCh05-2-74R4R2R3
(4)
14
Ch05-2-(4)不是SLR(1)Follow(S)={#,a,b}2S→a.SbS→a.bS→.aSbS→.bSaS→.ab4S→b.SaS→.aSbS→.bSaS→.ab3S→aS.b5S→ab.S→b.SaS→.aSbS→.bSaS→.abb4S→aSb.Sb0Z→.SS→.aSbS→.bSaS→.abS1Z→S.ab
(5)
Ch05-2-(5)不是SLR(1)Follow(R)={#,a}1Z→S.S→S.abS0Z→.SS→.SabS→.bRb4S→b.RR→.SR→.aS→.SabS→.bRRS5S→bR.4R→S.S→S.aba2S→Sa.bb3S→Sab.
(6)
Ch05-2-(6)是SLR(1)20bB→b.Z→.SS→.SABbS→.BA3BS→B.AB→.bA→.aASA→.B1B→.bZ→S.aS→S.ABb2A→.aAA→.BB5B→.bA8S→SA.B9BB→.bS→SAB.ABa4S→BA.A→B.5B6A→a.AA→.aAA→.BB→.b2bAaB7A→aA.b
15
actionaZ→S (1)S→SAB (2)S→BA (3)A→aA (4)A→B (5) B→b (6)S0S1S2S3S4S5S6S7S8S9s6R6s6R3R5s6R4R2bs2s2R6s2R3R5s2R4s2R2#AccR6R3R5gotoAB385Ch05-2-745S17R459R2
(7)
Ch05-2-(7)不是SLR(1)Follow(A)={a,b} Follow(B)={a,b}0Z→.SS→.AaAbS→.BbBaA→.B→.SAB1Z→S.2S→A.aAb3S→B.bBa4S→Aa.AbaA→.b5S→Bb.BaB→.A6S→AaA.b7S→BbB.a8bS→AaAb.9aS→BbBa.B
(8) Ch05-2-(8)不是SLR(1) Follow(B)={a,e}a3A→a.ABeA→.aABeA→.BaB→.dBB→.B4A→B.a5B→d.BB→.dBB→.6A→aA.BeB→.dBB→.7A→aAB.ee8A→aABe.d1Z→A.A0Z→.AA→.aABeA→.BaB→.dBB→.ABaBdadB9A→Ba.d10B→dB.
3. 设有下列文法:
S?aAd | bBd | aBe | bAe A?g B?g
说明该文法是LR(1)文法,但不是LALR(1)文法。 答:
16
Ch05-3 是LR(1)文法2S→a.AdS→a.BeA→.gaB→.g##de4AS→aA.d5BS→aB.e6gA→g.B→g.9AS→bA.e10BS→bB.d11gA→g.B→g.##de12eS→bAe.13dS→bBd.7dS→aAd.8eS→aBe.##Z→.SS→.aAdS→.bBdS→.aBeS→.bAe0#####SbZ→S.1#3S→b.BdS→b.AeA→.gB→.g##ed##ed##
Ch05-3 不是LALR(1)文法2S→a.AdS→a.BeA→.gaB→.g##de4AS→aA.d5BS→aB.egA→g.B→g.##ed##7dS→aAd.8eS→aBe.##Z→.SS→.aAdS→.bBdS→.aBeS→.bAe0#####S6bZ→S.1#3S→b.BdS→b.AeA→.gB→.ggd,ee,d##12eS→bAe.13dS→bBd.##9AS→bA.e10BS→bB.d
4. 设有下列文法:
(1) E?E+T | T
T?TF | T F?(E) | F* | a | b A?d
(2) S?Aa | bAc | dc | bda
说明上述文法是否为SLR(1)文法?是否为LALR(1)文法?并构造相应的分析表。 答:(1)
17
Ch05-4-(1) 不是SLR(1)文法Follow(T)={#,(,a,b,+,)}3E→E+T.T→T.F6T→T.aF→a.F→.(E)T7bF→.F*F→b.F→.a11F→.b(E→T.8T→T.FF→(.E)(T→T.E→.E+TF→.(E)EE→.TF→.F*T→.TFTF→.aT→.TF→.b4FT→TF.F→F.*5*F→F*.0Z→.EE→.E+TE→.TT→.TFT→.T1Z→E.EE→E.+T2E→E+.T+T→.TFT→.T+Fab46710F→(E).9)F→(E.)E→E.+T
F→F*.54#+(ab**Ch05-4-(1) 不是LALR(1)文法3E→E+T.T→T.FT→T.2F→.(E)E→E+.T#+(ab*)F→.F*TT→.TF#+(abF→.a+T→.T#+(abF→.b(+89F→(.E)F→(E.)#+(ab*)E→.E+TE→E.+T#+(ab*)EE→.T(T→.TF10T→.TF→(E).#+(ab*)1Z→E.#E→E.+T#+E0Z→.E#E→.E+T#+E→.T#+T→.TF#+(abT→.T#+(ab#+#+(abFT→TF.#+(ab#+(ab*F→F.*#+(ab6#+(ab*aF→a.#+(ab*#+(ab*7#+(ab*bF→b.#+(ab*#+(ab*#+(ab*)#+(ab*)#+(ab*)#+(ab*)#+(ab*)E→T.(T→T.FT→T.F→.(E)TF→.F*F→.aF→.b11#+(ab*)#+(ab*)#+(ab*)#+(ab*)#+(ab*)#+(ab*)#+(ab*)
(2)
Ch05-4-(2) 不是SLR(1)文法Follow(A)={a,c}0Z→.SS→.AaS→.bAcS→.dcS→.bdaA→.dS1Z→S.2AS→A.a4dS→d.cA→d.6bS→b.AcS→b.daA→.d3aS→Aa.5cS→dc.Ad7S→bA.c9S→bd.aA→d.cc8S→bAc.10S→bda.
18
Ch05-4-(2) 是LALR(1)文法Z→S.1S0#S→Aa.AS→A.ab5a4####c9AS→bA.cc10S→bAc.#Z→.SS→.AaS→.bAcS→.dcS→.bdaA→.dS→d.cA→d.#####a#ad2cS→dc.3#6S→b.AcS→b.daA→.dd7S→bd.aA→d.a8S→bda.##c#
aactionbcs6s3R4s5R2s7s8R6R5s10R39gotods2#AccR6A4S1Z→.S (1)S→.Aa (2)S→.bAc (3)S→.dc (4)S→.bda (5)A→.d (6)S0S1S2S3S4S5S6S7S8S9S10
5. 设有下列文法:
L?MLb | a
M??
说明上述文法是否为LR(1)文法,若不是,请说明理由。 答:
Ch05-5 是LR(1)文法5L→a.a0Z→.LL→.MLbL→.aM→.L1Z→L.#L→a.10b###a2ML→M.LbL→.MLbL→.aM→.#bba3LL→ML.bM4bbba#7bL→MLb.L8L→ML.b#9bL→MLb.bL→M.LbL→.MLbL→.aaM→.bbM
19
第六章
1.试写出下列类型的内部表示: a.integer
b.ARRAY [1..5] of RECORD i:integer; b:boolean END
c.ARRAY [1..5] of RECORD a:ARRAY [1..10]; r:RECORD i,j:integer END END d. RECORD r: RECORD x,y:real END;a: ARRAY [1..10] of integer END 2. 设当前层数为l,可用区距为101,且有下列程序段: CONST mm=333;nn=444; TYPE atype = ARRAY[1..10] OF real; rtype = RECORD i,j:integer END; VAR a,b:atype; x,y:real
试写出各标识符的内部表示。
3. 设当前层数和区距分别为l和off,且有函数说明首部: FUNCTION f(A:atype;VAR B:atype;VAR X:real):integer 其中atype的定义见题5,试写出f的内部表示。 4. 要求在下面括号中写上相应?(层数)和区距(off)。 ()()PROCEDURE g(A:atype;()()
VAR B:atype;()() VAR X:real()())()().
5. 给出下面C程序扫描到语句c=a+b+x时相应的全局符号表(采用顺序表结构)。
main()
{
int a=0; float c=1.0; {
float a=3.0; {
float x=1.3; float b=0.3; } {
int b=10; c=a+b+x; } } }
6. 给出题1中程序扫描到语句c=a+b+x时相应的全局符号表(采用外拉链的散列表结构)。
20
7. 根据标识符的作用域规则,分别给出图6.5的程序中,过程P、Q、R、S中有效的标识符。
21
第七章
1. 将算术表达式 (a+b)*(c+d)-(a+b+c) 翻译成四元式序列。 2. 将下列语句翻译成四元式序列:
a. IF x>0 THEN x:=0 ELSE x:=1 b. WHILE x>0 DO x:=x-1 c. IF x>0 THEN x:=x+1 ELSE
IF x <0 THEN x:=x+1 ELSE x:=x+1 d. WHILE x > 0 DO
WHILE y > 0 DO BEGIN y:=y-x; x:=x-1 END
3. 给出如下程序段的四元式序列。(四元式的操作符可用自身代替)。其中A:Array of [1..10]
of integer。 a:=1;
while a<=10 do begin if a<>b then
A[a]:=A[b]+2;
else a:=a+1; b:=b+1; end
4. 试将FOR语句翻译成四元式序列。 5. 试将UNTIL语句翻译成四元式序列。 6. 试将CASE语句翻译成四元式序列。
7. 试给出4、5、6题中翻译过程的语法制导程序。
22
第八章
1. 将下面的程序段划分为基本块并画出其程序流图。
read(A); read(B); F:=1; C:=A*A; D:=B*B; if C
L1: E:=B*B;
L2: F:=F-1; L3: write(E);
2. 假设有如下语句序列,写出常表达式优化前和优化后的四元式中间代码。
(1) i:=1;
(2) a:=20; b:=a*(a+10);
c:=a*b;
j:=i*(i+1); k:=2*(i+j);
3. 假设有如下语句序列或表达式,写出公共表达式优化前和优化后的四元式中间代码。
(1) x:=x*y+z; y:=x*y+z; z:=x*y+z; (2) (a*b+c)/(a*b-c)+(c*b+a-d)/(a*b+c) while i<=100 do
begin end
u:=A*B; m:=u*u; S:=S+m*m; i:=i+1;
4. 写出如下循环语句不变式外提后的四元式中间代码。
5. 写出下面循环语句不变式外提后的四元式中间代码,其中数组各下标的类型为1..10。
while i<=100 do
begin
j:=1;
while j<=100 do
23
end
begin end
k:=1;
while k<=100 do
A[i][j][k]:=0;
24
第九章
1.过程活动记录包含哪些信息?各信息的作用?何时填写它们?
2.下面是一个调用递归函数的Pascal程序
program PP(input,output) VAR k:integer;
FUNCTION F(n:integer):integer begin
if n<=0 then F:=1 else F:=n*F(n-1); end; begin
k:=F(10); … end.
当第二次(递归地)进入F后,DISPLAY的内容是什么?当时整个运行栈的内容是什么? 3.对于下面的程序:
procedure P(X,Y,Z); begin
Y:=Y+1; Z:=Z+X; end P; begin A:=2; B:=3;
P(A+B,A,A); print A end
当参数传递的办法分别为(1)传值;(2)传地址;(3)值-结果;(4)传名时,程序执行时输出的A分别是什么?
4.应用Pascal语言的作用域规则,说明下面程序中的名字a和b的每一次出现所应用的声明。
program a(input,output);
procedure b(u,v,x,y:integer); var a:record a,b:integer end; b:reocrd b,a:integer end; begin
with a do begin a:=u;b:=v end; with b do begin a:=x;b:=y end; writeln(a.a,a.b,b.a,b.b) end; begin
b(1,2,3,4) end.
5.为下面的C程序构造一个可能的运行时环境。
int a[10];
char *a=”hello”; int f(int i,int b[]) { int j=1; A: { int i=j;
char c=b[I]; … } }
25
void g(char *s) { char c[10]; B: { int a[5]; ... } }
main() { int x=1; x=f(x,a); g(s);
return 0; }
(1)在进入函数f中的块A之后。 (2)在进入函数g中的块B之后。
6.Display表和静态链的作用是什么?试举一个程序例子,并考察其Display表和静态链的内容。
7.过程参数的传递方式有几种?简述\传地址\和\传值\的实现原理。
26
第十章 1. 2. 3. 4.
什么叫指令的执行代价? 寄存器分配的原则是什么?
在剥夺寄存器的时候,应考虑哪些因素?什么时候一个变量可以主动释放它所占 试写出程序段
IF x > 0 THEN y:=y+1 ELSE IF x < 0 THEN y:=y-1
的目标代码,其中的变量均为非形参实型变量。 5.
试写出程序段
WHILE x < y DO BEGIN y :=y + 1;
IF y > 0 THEN y :=y-x ELSE WHILE y < 0 DO y := y + x END
的目标代码,其中变量均为非形参实型变量。 6. 7. 8.
试为FOR循环语句设计目标代码。 试为REPEAT循环语句设计目标代码。 试为CASE语句设计目标代码。
用的寄存器?
27
28
正在阅读:
编译原理课后习题答案01-29
人类起源-七年级上册第六单元作文指导12-13
学前儿童音乐与美术考试资料 204-20
监理文件档案资料整编、管理细则04-30
2012年全国各地高考语文分类 - 病句01-29
糖尿病足溃疡的中医治疗近况04-24
宏观经济学第八章习题及答案01-10
个人总结下一步打算03-16
口腔医学生见习报告医学生暑期见习报告04-25
让应聘简历脱颖而出 人事经理吐血专供04-24
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 课后
- 习题
- 编译
- 原理
- 答案
- 中国财政收入和经济增长关系的实证分析
- 软件项目管理大作业
- RJP工法与普通三重管高压旋喷法区别与联系
- 对新版高中英语的Reading for Fun 使用初探
- 深圳职业技术学院2006-2007学年度
- oracle - EBS中英词汇对照表
- 印刷厂突发环境事件应急预案
- 基于excle情境下的数学教学实验与研究
- 中石油18年8月《建筑施工》第三阶段在线作业
- 证券营业部项目可行性研究报告 - 图文
- EDA技术实验书
- 实验五 接口与包
- 酒店服务语言技巧案例培训教案
- 西北工业大学深入学习实践科学发展观活动整改实施方案
- 危险性较大工程施工安全管理制度
- 山区土地流转面临的困境与出路
- 数字信号处理大作业
- 2013-2014学年人教版一年级上数学期末模拟测试卷
- 教师学习传统文化心得体会
- 2018年社区关工委工作总结