内容发布更新时间 : 2024/11/9 2:53:08星期一 下面是文章的全部内容请认真阅读。
(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