|
考试科目:《编译原理》第8章至第10章(总分100分) 时间:90分钟 一、选择与填充(30) 1. 下列哪种不是代码生成技术?( ) A. 基于多元式 B. 基于树结构 C. 基于LR(0) D. 基于DAG 2. 基本块内的优化为( )。 A.代码外提,删除归纳变量 B.删除多余运算,删除无用赋值 C.强度削弱,代码外提 D.循环展开,循环合并 3. 表达式-a+b*(-c+d)的逆波兰式是( )。 A. ab+-cd+-* B. a-b+c-d+* C. a-b+c-d+* D. a-bc-d+*+ 4. 设A→X1X2…Xi…XN是属性文法AG中的任一产生式,如果它满足下面条件,则称AG 为L-属性文法: Xi的_________________只依赖于A的__________________和X1,X2…,Xi-1的属性; A的__________________只依赖于A的__________________和产生式右部符号的属性。 5.下面哪种不是中间代码?( ) A. 三元式 B. 四元式 C. 二元式 D. 后缀式 6.在使用高级语言编程时,可通过编译程序发现源程序的全部_________错误和部分_______错误。 二、何谓优化?按所涉及的程序范围可分为哪几级优化?(15) 三、设当前层为L,可用偏移量Offset值为101,且有下面程序,写出本层符号表 的内容。(15) consti=100; type ar=array [1..20] of real; var x:real;y:integer;a1,a2:ar; 四、按照三种基本控制结构文法将下面的语句翻译成四元式序列:(15) while (A<C ∧ B<D) { if (A ≥ 1) C=C+1; else while (A ≤ D) A=A+2; }。 五、某语言的拓广文法G为: (25) (1) S → Db|B
(2) D → d|ε
(3) B → Ba|ε
证明G不是LR(0)文法而是SLR(1)文法,请给出SLR(1)分析表。
|