中间代码表示的类型是什么?

将源代码翻译成目标机器的目标代码,编译器可以生成中间级语言代码,称为中间代码或中间文本。有三种类型的中间代码表示如下 -

后缀符号

在后缀表示法中,操作符在操作数之后,即操作符在操作数之后。

例子

  • 表达式 (a+b) * (c+d) 的后缀符号是 ab + cd +*

  • 表达式 (a*b) - (c+d) 的后缀符号是 ab* + cd + - 。

语法树

一棵树,其中每个叶节点描述一个操作数,每个内部节点一个运算符。语法树是 Parse Tree 的缩写形式。

示例- 为字符串 a + b ∗ c - d 绘制语法树。

三地址码

三地址代码是 A−=B op C 形式的语句序列,其中 A、B、C 是程序员定义的名称、常量或编译器生成的临时名称,op 表示可以是固定或浮点算术运算符或布尔值数据或逻辑运算符。之所以叫“三地址码”,是因为每条语句一般都包含三个地址,两个用于操作数,一个用于结果。

三地址代码语句共有三种类型,如下所示 -

四重表示- 具有运算符和操作数字段的记录可以定义三个地址语句。可以使用带有字段的记录结构,首先保存运算符'op',接下来的两个分别保存操作数1和2,最后一个保存结果。这种三个地址的表示称为四元组表示。

三元组表示- 操作数 1、操作数 2 和结果字段的内容通常是指向这些字段描述的名称的符号记录的指针。因此,在生成符号表时将临时名称引入符号表中很重要。

这可以通过使用声明的位置定义临时值来防止。如果这完成了,一个具有三个字段的记录结构就足以定义三个地址语句——第一个包含运算符,接下来的两个分别保存操作数 1 和操作数 2 的值。这种表示称为三元组表示。

间接三元组表示 - 间接三元组表示使用一个额外的数组来列出指向所需序列中的三元组的指针。这称为间接三元组表示。

语句 x− = (a + b)*-c 的三重表示如下 -

陈述陈述地点运算符操作数 1操作数 2
(0)(1)(1)+a
(1)(2)(2)-c
(2)(3)(3)*(0)(1)
(3)(4)(4)/(2)d
(4)(5)(5):=)(3)