编译原理第十四周作业四元式
第十四周作业
第一题:写出下列代码段的四元式形式:
while (a
{
if (c>d) x=y+z;
else x=y+z*w;
z=z+x;
}
解: 1 (j
2 (j, , , 14 )
3 (j>, c, d, 5)
4 (j, , , 8)
5 (+, y, z, t1)
6 (= ,t1, , x)
7 (j, , , 11)
8 (*, z, w, t2)
9 (+, y, t2, t3)
10 (=, t3 , , x)
11 (+, z, x, t4)
12 (=, t4, , z)
13 (j, , , 1)
第二题:写出下列代码段的四元式形式:
while ( a
if (a==b) c=c+1;
else while (a
解:1 (i
2 (j , , , 15 )
3 (j
4 (j , , , 15 )
5 (j=, a, b, 7 )
6 (j , , , 10 )
7 ( + , c, 1, t1)
8 ( = , t1, , c)
9 ( j , , , 1 )
10 ( j
11 ( j , , , 1 )
12 ( + , a , 2 ,t2)
13 (= , t2, , a)
14 ( j , , , 10 )
15
第三题:写出下列代码段的四元式形式:
if ( ( (a+bb) && k a+b)
if (a>b) c=c+b;
else while (a
解:
1 (+, a , b , t1 )
2 (j
3 ( j , , , 4 )
4 (j>, a , b , 6 )
5 ( j , , , 8 )
6 (j
7 ( j , , , 8 )
8 ( * , y ,z ,t2)
9 ( + , x , t2, t3)
10 (+ , a , b, t4)
11 (j>, t3, t4, 13 )
12 ( j , , , 23 )
13 (j> , a , b, 15 )
14 ( j , , , 18)
15 (+ , c , b ,t5)
16 ( = , t5 , , c)
17 ( j , , , 23)
18 (j
19 ( j , , , 23)
20 ( + , a ,2 ,t6)
21 ( = , t6, , a)
22 ( j , , , 18)
23
感想:四元式这块还是比较简单,上课能听懂,预习能看懂。感觉写四元式就像写汇编程序一样,得一步一步来,很细~~~~本次作业是在老师讲相关知识点前做得,应该还可以,如果有哪里有问题也是粗心大意造成的,但是我还稍稍检查了哩~~~~