编译原理期末试题(8套含答案+大题集) 下载本文

内容发布更新时间 : 2024/11/8 23:53:24星期一 下面是文章的全部内容请认真阅读。

(3) ( ) a S S →(L) S → ’ SS’→S S’→ε S’→S ’ L L→’ L→’ L’→ε L’

11.(1) (j>, X, 0, (5))

(2) (j, _, _, (3)) (3) (j<, Y, 0, (5)) (4) (j, _, _, (11)) (5) (j>0, X, 0, (7)) (6) (j, _, _, (7)) (7) (*, A, 3, T1) (8) (, T1, _, N) (9) (j, _, _, (5)) (10) (j, _, _, (13)) (11) (+, B, 3, T2) (12) (, T2, _, Y)

12.(1) >>>T*>F*>(E)*>()*>()* =>()*>()*>()*>()*>()* =>()*>()*

(2) 短语 i, F, , (), ()*i, ()* 素短语 i,

最左素短语

13.(1) (S)={∨, ∧, i, - } (T)={∧, i, -} (U)={i, -}

(S)={∨, ∧, i, - }

(T)={∧, i, -}

(U)={i, -} (2) i ∨ ∧ S .> .> ∨ <. .> <. ∧ <. .> .> - <. .> .>

, # S’→ε S’→ε L’→’ - <. <. <. 21 / 81

《编译原理》期末试题(二)

1、描述由正规式b*(*)*( 的最简。

2、证明文法E E + | 是(1)文法。

3、下面是表达式和赋值语句的文法,其中的类型是 的类型是 ,=的类型是

,+

)定义的语言,并画出接受该语言

, 要求 和E的类型都

是或者都是。为该文法写一个语法制导定义或翻译方案,它完成类型检查。

S E

E

E E | E + E | E = E

4、对于下面C语言文件 f1( x) { x; x = 1; }

22 / 81

f2( x) { { x; x = 1; } }

某编译器编译时报错如下: : ‘f1’: :3: : ‘x’ a

请回答,对函数f2为什么没有类似的警告错误。

5、下面C语言程序经非优化编译后,若运行时输入2,则结果是

12.566360, 1073743076

经优化编译后,若运行时输入2,则结果是 12.566360, 1073743068 请解释为什么输出结果有区别。

() {

s, , r;

23 / 81

3.14159; (\

(\

}

6、描述由正规式ba(a)b定义的语言,并画出接受该语言的最简。

7、下面的文法产生代表正二进制数的0和1的串集: B B 0 | B 1 | 1

下面的翻译方案计算这种正二进制数的十进制值: B B1 0 { B1 2 } | B1 1 { B1 2 +1} | 1 { 1 }

请消除该基础文法的左递归,再重写一个翻译方案,它仍然计算这种正二进制数的十进制值。

8、 在C语言中,如果变量i和j都是类型,请写出表达式和表达式的类型表达式。为帮助你回答问题,下面给出一个程序作为提示,它运行时输出1。 () { i, j; (“\\n”, ); }

9、一个C语言的函数如下:

24 / 81