编译原理习题 下载本文

内容发布更新时间 : 2024/11/16 20:29:59星期一 下面是文章的全部内容请认真阅读。

语法分析部分 一、判断题:

1、 LL(1)文法是无左递归、无二义性文法。 2、 无左递归的文法是LL(1)文法。

3、 在高级语言编译程序常用的语法分析方法中,预测分析法属于自上而下的语法分析方

法。

4、 在高级语言编译程序常用的语法分析方法中,算符优先分析法属于自上而下的语法分析

方法。

5、 算符优先分析法是一种规范规约分析法。 6、 算符优先分析法是最适合于分析算术表达式。 7、 设有一个LR(0)项目集

I={X->α.Bβ,A->α.},该项目集含有“移进—归约”冲突。 8、 LR分析法是一种规范规约分析法。 9、 设有一个LR(1)项目集

I={[X->α.bβ, α],[A->α. ,α]},该项目集含有“移进—归约”冲突。 10、 SLR(1)文法是二义性文法。

二、选择题(从四个答案中选择一个或多个正确答案写在横线上) 1、 编译程序中语法分析常用的方法__________________.

A. 自上而下分析法 B.自下而上分析法 C.自左向右分析法 D.自右向左分析法

2、 编译程序的语法分析器接受以_________________为单位的输入,并产生有关信息供以

后各阶段使用。

A. 表达式 B.字符串 C.单词 D.语句 3、在高级语言编译程序常用的语法分析方法中,递归下降分析法属于_____________分析法。

A. 自左向右分析法 B.自上而下分析法 C.自下而上分析法 D.自右向左分析法

4、递归分析法和预测分析法要求描述的文法是_____________。

A. 正规文法 B. LR(1)文法 C. LL(1)文法 D. 右线性文法 5、设有文法G[E]: E–>TE’

E’–> +TE’| ε T –> FT’

T? –> *FT? | ε F –> (E)|id

FIRST(T?)=__________________, FOLLOW(F)=______________________. A. {(, id ) B. {*,ε} C. {*,+,},#} D. {+,),#}

6、自下而上语法分析法的原理是__________________.

A. “移进-推导法” B. “移进-归约法” C.“最左推导法” D. “推导-归约法”

7、设有文法G,如果文法G中没有形如A->…BC…的规则,其中A,B,C为非终结符,则称文法G为_____________.

A. 算符优先文法 B. LL(1)文法 C. LR(1)文法 D. 算符文法 9、设有文法G[E]: E->E+T|T T->T*F|F F->(E)|a

句型T+T*F+a的素短语是_______________. A. a B. T*F C.T D.T+T*F 10、设有文法G[S]:

S->a|∧|(T) T->T,S|S

其中FIRSTVT(T)=______________________, LASTVT(T)=_________________________. A. {a ,(,)} B. {a ,(, ∧)

C. {a ,(,?,?) D. {a ,(,?,?, ∧) E. {$,}} F. {$,},a}

G.{a,},?,?} H. {?,?,),a, ∧} 11、 LR(0)项目集规范族的项目类型可分为__________________.

A. 移进项目 B. 归约项目 C 待约项目 D. 接受项目 12、 LR(0)分析器的核心部分是一张分析表,这张分析表包括两部分,它们是_________.

A. LL(1)分析表 B. 分析动作表 C 状态转换表 D. 移进分析表 13、 设有LR(0)项目集

I={X->α. bβ, A->α.,B->α.},该项目集含有冲突项目,它们是__________________. A、“移进—归约”冲突 B.“移进—接受”冲突 C “移进—待约”冲突D. “归约—归约”冲突 第五章 自测练习题 判断题:

1、 对任何一个编译程序来说,产生中间代码是不可缺少的一部分。

2、 目前多数编译程序进行语义分析的方法采用语法制导翻译法,这是因为语法制导翻

译法是一种形式化系统。

3、 一个属性文法包括一个上下文无关文法和一系列规则。

4、 文法符号的属性有两种,一种称为继承属性,另一种称为综合属性。

5、 自下而上语法制导翻译法的特点是语法分析栈与语义分析栈不需同时操作。

6、 自下而上语法制导翻译法的特点是在栈顶形成句柄,在归约之前执行相应的语义动

作。

7、 逆波兰表达式ab+cd+*所代表的中缀形式的表达式是a+b*c+d. 8、 赋值语句A=A+B*C^(D/E)/F的逆波兰表示是AABCDE/^*F/+= 9、 表达式-(a+b)*(c+d)-(a+b+c)的四元式表示是:

(1) (T1=a+b) (2) (T2=-T1) (3) (T3=c+d) (4) (T4=T2*T3) (5) (T5=a+b)

(6) (T6=T5+c) (7) (T7=T4-T6)

选择题:

(1) 编译程序的语义处理有两个任务:一个是( ),另一个是( )。

A.静态语义审查 B。审查语法结构 C.执行真正的翻译 D。审查语义结构

(2)在编译程序中安排中间代码生成的目的是( )。

A. 便于进行存储空间的组织 B. 利于目标代码优化 C. 利于提高目标代码的质量 D. 利于编译程序的移植

(3)编译过程中比较常见的中间语言有( )。

A.逆波兰式 B。三元式 C.四元式 D。树形表示

(4)中缀表达式-a+b*(-c+d)的逆波兰表式是( )。

A.a@bc@d+*+ B。abc@d+8+@ C.a@bcd+@*+ D。abcd+@*+@

(5) 后缀式iiii-/^的中缀表达式是

A.I^(i/(I-I)) B。(I-I)/I^i C.I^(I-I)/i D。(I-I)^i/i 自测练习题4 选择题:

(1)在编译过程中符号表的主要作用是( )。 A.帮助错误处理 B. 辅助语法错误检查

C. 辅助上下文语义正确性检查 D. 辅助目标代码生成 (2) 符号表的查找一般可以使用( )

A.顺序查找 B.折半查找 C. 杂凑查找 D. 排序查找

(3)编译程序中安排优化的目的是为得到( )的目标代码。 A.结构清晰 B. 较短 C. 高效率 D.使用存储空间最小 (4)根据所涉及程序的范围,优化可分为( )。 A. 局部优化 B.函数优化 C. 全局优化D. 循环优化

(5)局部优化是局限与一个( )范围内的优化。 A.循环 B. 函数 C.基本块 D.整个程序

(6)所谓基本块是指程序中一个顺序执行的语句序列,其中只有( A. 一个子程序

B.一个入口语句和多个出口语句 C. 一个出口语句和多个入口语句 D. 一个入口语句和一个出口语句

(7) 在编译程序采用优化的方法中,( )是在基本块范围内进行的。)。

A. 删除无用赋值 B.删除归纳变量 C. 删除多余运算 D. 合并已知量

8)循环优化是指对( )中的代码进行优化。 A.循环 B. 函数 C.基本块 D.整个程序

(9) 在编译程序采用优化的方法中,( )是在循环语句范围内进行的。 A.删除多余运算 B.删除归纳变量 C.代码外提 D. 强度消弱

判断题:

1、 优化的编译是指编译速度快的编译程序。

2、 对任何一个编译程序来说,代码优化是不可缺少的一部分。 3、 DAG是一个可带环路的有向图。 4、 转移语句是基本块的入口语句。

5、 紧跟在条件转移语句后面的语句是基本块的入口语句。