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

news2024/11/25 16:52:26

一、求后缀表达式

可能就是一填空题,考试应该也不会太复杂,要会,掌握着由外到内求解思想即可;
在这里插入图片描述
其实就是二叉树的后序遍历,左右根;拆分的顺序就是由左到右顺序进行,小括号内的最后拆(由外到内);
在这里插入图片描述
在这里插入图片描述
后面三道的具体步骤就不写了;
在这里插入图片描述

在这里插入图片描述

二、求三元式

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

1.三元式:

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

2.间接三元式:

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

在这里插入图片描述

三、求四元式

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

1. 根据表达式写四元式

以上题的表达式为例,写出其四元式
在这里插入图片描述
同理也是盯着四元式的形式(运算符,参数1,参数2,运算结果(临时变量名))去写,和三元式不一样的就是多一列,多了一个运算结果,其实就是个变量,所以他叫四元式;然后三元式引用的(x)换成Tx;别的都一样,
在这里插入图片描述

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116193.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4线触摸屏控制器ET2046介绍

4线触摸屏控制器ET2046简介 ET2046是4线触摸屏控制器&#xff0c;支持1.5V&#xff5e;5.5V的低压I/O 接口。ET2046具有内置2.5V电压源&#xff0c;可用于辅助输入、电池监测和温度检测模式的测量。在不使用时&#xff0c;也可将内置电压源关闭以节约电力。内置电压源最低可工作…

JS 执行机制

1、JS 是单线程 JavaScript 语言的一大特点就是单线程&#xff0c;也就是说&#xff0c;同一个时间只能做一件事。这是因为 Javascript 这门脚本语言诞生的使命所致——JavaScript 是为处理页面中用户的交互&#xff0c;以及操作 DOM 而诞生的。比如我们对某个 DOM 元素进行添加…

建议使用这些方法来优化Mac,运行速度直线上升

Mac系统的稳定性和流畅性一直备受大家称赞&#xff0c;这也是大多数人选择Mac的原因&#xff0c;尽管如此&#xff0c;我们仍不时地对Mac进行优化、调整&#xff0c;以使其比以前更快、更流畅地运行。以下是小编分享给各位的Mac优化方法&#xff0c;记得保存哦~ 一、释放被过度…

Groovy安全高效的执行(死循环,休眠,危险方法)

背景 在很多场景下有需要执行异步任务&#xff0c;或者执行用户的自定义任务时&#xff0c;通常我们会使用Groovy脚本能力来完成任务。通过groovy动态脚本能力&#xff0c;在业务执行过程中动态执行不同业务线或者用户的脚本&#xff0c;来满足不同需求。 这样可以非常方便的进…

关于CSS选择器优先级的规则说明

简单规则&#xff1a; !important > 行内样式 > id选择器 > 类选择器 > 元素选择器 > 通配选择器 选择器举例说明&#xff1a; !important&#xff1a; <h1 id"title">好好学习&#xff0c;天天向上</h1> <style type"text/…

ArcGIS基础实验操作100例--实验1绘制自定义线、垂线、平行线

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a; 通过百度网盘分享的文件&#xff1a;地理信息系统基础实验100例 链接:https://pan.baidu.com/s/1sprJ2eyDAkYWiLwyuTIf1g 提取码:gb7y 复制这段内容…

Doris(一)

1、Doris简介 Doris是由百度大数据研发&#xff0c;是一个现代化的MPP&#xff08;Massively Parallel Processing&#xff09;大规模并行处理的分析型数据库产品。仅需亚秒级响应时间即可获得查询结果&#xff0c;有效地支持实时数据分析。 Apache Doris 的分布式架构非常简洁…

北上广深杭房价高压下,这也许是软件测试员扎根的唯一出路...

简单算一笔账&#xff0c;目前小公司软件测试员工资一般是1万出头&#xff0c;年薪普遍在20万以下。在不考虑通胀和工资增长的情况下&#xff0c;除去吃喝需要攒30年才能攒出一线城市房子的首付&#xff0c;以这样的收入水平&#xff0c;基本上没法扎根。 想拿高薪最好的途径就…

API文档、技术文档工具 - ShowDoc - 使用

1.应用场景 主要用于使用适合IT团队的 API文档、技术文档工具 进行项目文档书写以及进行开发。 2.学习/操作 1.文档阅读 ShowDoc ShowDoc - demo 安装/升级手册 GitHub - star7th/showdoc: ShowDoc is a tool greatly applicable for an IT team to share documents online一…

LeetCode Hot 100~Day3

目录 字母异位词分组 最大子数组和 跳跃游戏 合并区间 不同路径 最小路径和 爬楼梯 颜色分类 子集 单词搜索 二叉树的中序遍历 不同的二叉搜索树 字母异位词分组 题目链接&#xff1a;49. 字母异位词分组 示例 输入: strs ["eat", "tea&quo…

[DonkeyCar][树莓派]基础01 - 首次配置 - WIFI

2022年圣诞节到来啦&#xff0c;疫情把刚刚起来的工作似乎又慢了下来&#xff0c;在冲刺决赛圈的同时&#xff0c;也许开一个新的领域&#xff0c;写一个博客是比较好的方式。 一、前言 拿到树莓派开发板的时候&#xff0c;一般&#xff0c;供应商都会配合烧录的镜像。但是&am…

《图解TCP/IP》阅读笔记(第七章 7.6)—— BGP 边界网关协议

7.6 BGP BGP&#xff08;Border Gateway Protocol&#xff09;&#xff0c;边界网关协议&#xff0c;是用于连接不同组织机构&#xff08;或者说不同自治系统&#xff09;的一种协议&#xff0c;其属于EGP&#xff08;外部网关协议&#xff09;&#xff0c;我们在7.2节中了解过…

01)FastDFS文件服务器安装和测试可用性

FastDFS简介 ​ FastDFS是一个轻量级的开源分布式文件系统。2008年4月份开始启动。类似google FS的一个轻量级分布式文件系统,纯C实现,支持Linux、FreeBSD、AIX等UNIX系统。 ​ 主要解决了大容量的文件存储和高并发访问的问题,文件存取时实现了负载均衡。实现了软件方式的…

PicoRV32 笔记 06 压缩指令集

PicoRV32 中实现压缩指令集选项 COMPRESSED_ISA&#xff0c;当设置COMPRESSED_ISA1开启支持16位指令集。压缩指令有很多优点&#xff0c;当我们在FPGA中实现PicoRV32的时候&#xff0c;使用RISCV的C扩展能有效的增大代码密度&#xff0c;原本32位1条指令变为16位一条指令&#…

synchronized 和 ReentrantLock 的区别

&#x1f388;专栏链接:多线程相关知识详解 synchronized和ReentrantLock的 区别 缺点 优势 synchronized和ReentrantLock两者都是可重入锁 ReentrantLock的三个核心方法: Ⅰ.lock(加锁) Ⅱ.unlock(解锁) Ⅲ.tryLock(尝试加锁) import java.util.concurrent.locks.Reentrant…

Android并发编程里的线程原理

1.进程和线程的概念 抛开那些官方的概念&#xff0c;我们可以大致理解为:进程就是手机里运行的一个个应用&#xff0c;他们都是一个个的进程&#xff08;当然&#xff0c;有些App是多进程的&#xff0c;这个先不谈&#xff09;。线程则是进程中对应的一个任务的执行控制流。如果…

广播机制-案例

广播机制-案例 1.静态注册案例-接收开机广播 1.案例&#xff1a;接收开机的广播 创建自定义的BroadcastReceiver用于处理监听到的系统广播。//接收系统开机的广播事件 public class BootCompleteReceiver extends BroadcastReceiver {Overridepublic void onReceive(Context co…

2023跨境出海指南:马来西亚网红营销白皮书

当前的东南亚市场可谓是是企业出海的大热门&#xff0c;马来西亚作为东南亚地区的第三大经济体&#xff0c;其发展形势也是一片大好。疫情出现后&#xff0c;马来西亚的娱乐和消费转移到线上&#xff0c;对社媒的依赖也催发了网红经济的发展。本文Nox聚星就和大家探讨一下&…

海康威视人脸识别设备对接(一)环境搭建

需要对接海康威视人脸识别设备&#xff0c;这里选择明眸门禁&#xff0c;还有其他的没研究过 打开海康威视开放平台 https://open.hikvision.com/ 选择开放体系&#xff0c;一直选择到设备集成SDK 这里我选择设备网络SDK 点击查看详情 选择对应的版本&#xff0c;我用笔记…

AD入门学习—原理图的绘制3

目录 2.4 CAN&24C02及DS18B20温度传感单元的绘制 2.5 USB单元的绘制 2.6 SD卡及TFT单元的绘制 2.7 NRF24L01单元的绘制 2.8 COM口及PS/2接口的绘制 2.9 DCDC电源输入单元的绘制 2.10 原理图的统一编号及编译检查 学习目录 2.4 CAN&24C02及DS18B20温度传感单元的绘制…