为表达式 -(a + b) * (c + d) - (a + b + c) 构造四元组、三元组和间接三元组

解决方案

首先,该语句将转换为三个地址代码为 -

t1 = a + b

t2 = -t1

t3 = c + d

t4 = t2 * t3

t5 = t1 + c

t6 = t4 - t5

四人间

地点运算符参数 1参数 2结果
(0)+abt1
(1)-t1
t2
(2)+cdt3
(3)*t2t3t4
(4)+t1Ct5
(5)-t4t5t6

                                                                                            三倍

地点运算符arg 1参数 2
(0)+ab
(1)-(0)
(2)+cd
(3)*(1)(2)
(4)+(0)C
(5)-(3)(4)

数组表示

Quadruple 是一种结构,最多包含四个字段,即 operator、Argument 1、Argument 2 和 Result。三元组有三个字段来表示三个地址代码。三元组的字段包括运算符的名称、第一个源操作数和第二个源操作数。

这种三地址代码表示包含三(3)个字段,即,一个用于运算符,两个用于参数(即,参数 1 和参数 2)。在此表示中,不使用临时变量。我们不使用临时变量,而是使用括号中的数字来表示指向符号表特定记录的指针。

四倍和三倍会导致一些内存浪费,因为某些字段没有被占用。为了防止浪费空间,表达式可以用一个数组表示。

示例- 考虑一个语句

a = -b + c * d

它的三个地址代码将是

t1 = -b

t2 = c * d

t3 = t1 + t2

a = t3

四倍将是

Location运算符arg 1参数 2Result
(0)-b
t1
(1)*cdt2
(2)+t1t2t3
(3)=t3
A

由于 Quadruple 中存在空间浪费,因此可以将其转换为 Array Representation 为

-t1*Cdt2+t1t2t3=t3一种

优势

  • 它节省了内存空间。

坏处

  • 它不能识别一个词,即它是一个运算符还是一个操作数。在 Quadruple 中,它可以快速完成,因为运算符和操作数都写在相应的字段中。

以上是 为表达式 -(a + b) * (c + d) - (a + b + c) 构造四元组、三元组和间接三元组 的全部内容, 来源链接: utcz.com/z/363440.html

回到顶部