编译原理——求后缀表达式、三元式、四元式

编译原理——求后缀表达式、三元式、四元式多了一个运算结果 其实就是个变量 所以他叫四元式 然后三元式引用的 x 换成 Tx 可能就是一填空题 考试应该也不会太复杂 要会 掌握着由外到内求解思想即可 间接三元式其实就是对三元式做一个小

大家好,欢迎来到IT知识分享网。

一、求后缀表达式

在这里插入图片描述

二、求三元式

三元式的拆分求解顺序和后缀表达式相反,由内到外
三元式的形式(运算符,参数1,参数2)
在这里插入图片描述

1.三元式:

  1. 三元式的求解过程是由内到外,然后右左向右,可以发现先拆小括号里面,然后再按顺序向右求解;
  2. 盯着三元式的形式去填(运算符,参数1,参数2),参数当然也可以是一个三元式,比如(2)的第一个参数就是(1);变负数有点特殊,操作符是@,然后第一个参数就是想变负数的参数,第三个参数为空,画一条线即可;
    在这里插入图片描述

2.间接三元式:

间接三元式其实就是对三元式做一个小改动,通过上图可以发现 (1)、(5)其实是一样的,所以可以把(5)删去,下面用到(5)的可以替换为(1)

在这里插入图片描述

三、求四元式

四元式的形式(运算符,参数1,参数2,运算结果(临时变量名))

1. 根据表达式写四元式

2. 根据代码写四元式(重点)

普通四元式的形式(运算符,参数1,参数2,下一步跳转的地址编号),对于赋值操作的四元式形式:(运算符,参数1,参数2,临时变量);每个四元式的前面有一个地址编号,用于跳转用;
考试要考,要会做!

例题1

在这里插入图片描述

  1. 赋值操作比较特殊,有三步,第一步是进行运算结果存入T,第二步是把运算结果T赋值给想赋值的变量C,第三步就是下一步跳转的地址编号;
  2. 和上面表达式写的四元式有点不同的是,运算符前面加了个 jj就是跳转指令;然后第四列的表示含义不同:赋值操作时(运算符为±*/、:=)第四列和上面的四元式一样,表示变量;其他操作时第四列表示下一步跳转的地址编号
  3. 可以发现,四元式对于每一个条件都是成对出现的,当满足某个条件,进行操作后,第四列存储执行完当前操作后的,下一步跳转的地址编号;
  4. 这里看的答案解析给的是0,默认当做程序跳出;下面一道题,用一种新的写法,对加一个四元式当做程序出口;
    在这里插入图片描述
例题2

在这里插入图片描述

  1. 地址为109的表示程序出口,上题默认用的0,感觉还是这种写法比较好;
  2. 需要注意当while后面的C>0没满足时,直接结束程序,而不是再跳到if(A<X),按照正常的程序执行流程来想就可以;上一题是因为,开头就是个While,所以下面的if、else执行完还要跳到程序开始;
  3. 视频讲解参考:编译原理程序段翻译成四元式序列
    在这里插入图片描述
例题3

在这里插入图片描述
可参考:【编译原理】:如何将控制语句翻译成四元式
在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/116577.html

(0)
上一篇 2025-11-27 22:33
下一篇 2025-11-28 07:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信