编译原理学习笔记16——语义分析和中间代码生成1

news2025/1/10 5:45:03

编译原理学习笔记16——语义分析和中间代码生成1

  • 16.1 中间语言
  • 16.2 常用的中间语言形式

16.1 中间语言

中间语言的特点和作用

  • 特点
    • 独立于机器
    • 复杂性界于源语言和目标语言之间
  • 引入中间语言的优点
    • 使编译程序的结构在逻辑上更为简单明确
    • 便于进行与机器无关的代码优化工作
    • 易于移植

在这里插入图片描述
常用的中间语言

  • 后缀式,逆波兰表示
  • 图表示: 抽象语法树(AST)、有向无环图(DAG)
  • 三地址代码 视频区域
    • 三元式
    • 四元式
    • 间接三元式

16.2 常用的中间语言形式

后缀式
在这里插入图片描述

  • 后缀式表示法不用括号
    • 只要知道每个算符的目数,对于后缀式,不论从哪 一端进行扫描,都能对它进行无歧义地分解。
  • 后缀式的计算
    • 用一个栈实现
    • 自左至右扫描后缀式,每碰到运算量就把它推进栈。 每碰到k目运算符就把它作用于栈顶的k个项,并用 运算结果代替这k个项。

将表达式翻译成后缀式的属性文法
在这里插入图片描述
中缀表达式翻译成后缀式的翻译模式
在这里插入图片描述

图表示法

  • 抽象语法树(AST)
  • 有向无环图(DAG)

有向无环图(DAG)

  • 有向无环图(Directed Acyclic Graph,简称 DAG)
    • 对表达式中的每个子表达式,DAG中都有一个结点
    • 一个内部结点代表一个操作符,它的孩子代表操作 视频区域 数
    • 在一个DAG中代表公共子表达式的结点具有多个父 结点

抽象语法树 vs. 有向无环图
在这里插入图片描述

赋值语句翻译成抽象语法树的属性文法
在这里插入图片描述

三地址代码
在这里插入图片描述

抽象语法树 vs. 三地址代码
在这里插入图片描述

有向无环图 vs. 三地址代码
在这里插入图片描述

三地址语句的种类
在这里插入图片描述

三地址语句——四元式
在这里插入图片描述
三地址语句——三元式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三地址语句——间接三元式
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

力扣刷题|110.平衡二叉树、257. 二叉树的所有路径、404.左叶子之和

LeetCode 110.平衡二叉树 题目链接🔗 LeetCode 110.平衡二叉树 思路 递归三部曲分析: 明确函数的形参和返回值 参数:当前传入结点 返回值:以当前传入结点为根节点的树的高度 那么如何标记左右子树是否差值大于1呢&#xff…

3、SpringJdbcTemplate声明式事务

JdbcTemplate基本使用 01-JdbcTemplate基本使用-概述(了解) JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的JdbcTemplate和HibernateTemplate&…

在Anaconda中安装pytorch的详细步骤+PyCharm环境配置

前言 深度学习小白一枚,自己的笔记本配置如下: 显卡:NVIDIA GeForce MX150(非常垃圾的笔记本显卡)固态硬盘 256GCPU:lntel Core™i7-8550UWindows:Windows 11家庭中文版 其他配置:…

代驾app开发开发搭建,代驾系统软件源码

在当下移动互联网发展的今天,大家对于生活的追求更加的趋向于其便捷性,这使得各种各样app被开发出来,出现在我们的生活之中。现在就把近期比较火的代驾app开发开发搭建的一些方案介绍一下。 代驾app产生的原因 代驾行业的快速发展&#xf…

<Java EE 进阶> Spring 创建和使用

目录 1.创建Spring项目 (1)创建一个Maven项目 (2)添加 Spring 框架支持(spring-context、spring-beans) (3)添加启动类 2.存储 Bean 对象 (1)创建 Bean …

计算几何知识(其一)

前提 最近闲着没事就看了计算几何的一些知识 构建凸包 Incremental Construction 复杂度为O(n2)原理就是不停蚕食下一个合适的点。判断原理是,第X个极点和前n个极点构成的多边形会有切点S,T。 和这两个点的连线,把原先多边形分成两个区域…

【软件测试】翻了下招聘APP只会点点点,很慌......测试业务?技术?

目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 我猜想大伙的职业生…

从0到0.1学习 maven(二:坐标、依赖和仓库)

该文章为maven系列学习的第二篇 第一篇快速入口:从0到0.1学习 maven(一:概述及简单入门) 第二节:坐标、依赖与仓库坐标依赖依赖范围传递性依赖依赖调解可选依赖依赖排除归类依赖优化依赖仓库路径生成仓库分类本地仓库远程仓库快照部署至远程仓…

Day 16 Enable注解

Springboot中提供了很多Enable开头的注解,这些注解是冬天开启某些功能的,而其底层使用Import注解导入一些配置类,实现Bean的动态加载1 EnableAutoConfigurationTarget(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Documented Inhe…

京东十年T8架构师手撕MySQL:手写666页核心知识,超85%问题全解

MySQL是开放源码的关系数据库管理系统,由于 性能高、成本低、可靠性好,成为现在最流行的开源数据库。 MySQL学习指南 笔记包含了3个大章节,13个小章节: 基础篇 MySQL数据类型MySQL运算符MySQL函数MySQL数据库查询语句 核心篇 …

​力扣解法汇总2319. 判断矩阵是否是一个 X 矩阵

目录链接: 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 如果一个正方形矩阵满足下述 全部 条件,则称之为一个 X 矩阵 &#…

自动化设备ERP系统对企业管理有什么好处?

随着自动化设备制造企业的快速发展,规模和产能的不断扩大;设备也不断增加、品种越来越多;企业信息化建设也不断发展和完善, 自动化设备ERP系统已经成为企业信息化建设的一个有机组成部分。自动化设备管理已进入信息化、数字化时代。自动化设备…

机器学习之求解无约束最优化问题方法(手推公式版)

文章目录前言1. 基础知识1.1 方向导数1.2 梯度1.3 方向导数与梯度的关系1.4 泰勒展开公式1.5 Jacobian矩阵与Hessian矩阵1.6 正定矩阵2. 梯度下降法3. 牛顿法4. 拟牛顿法5. 代码实现结束语前言 本篇博文主要介绍了机器学习里面的常见的求解无约束最优化问题的方法,包…

LeetCode——1664. 生成平衡数组的方案数

一、题目 给你一个整数数组 nums。你需要选择恰好一个下标(下标从0开始)并删除对应的元素。请注意剩下元素的下标可能会因为删除操作而发生改变。 比方说,如果 nums [6,1,7,4,1] ,那么: 选择删除下标 1 &#xff0…

在CentOS-6.9部署apache服务

文章目录一 系统环境二 部署服务2.1 yum安装软件2.2 修改主配置文件2.3 修改防火墙规则2.4 访问测试三 主配置文件参数3.1 主配置文件常规语句3.2 主配置文件日志控制语句3.3 主配置文件的性能控制语句一 系统环境 参数值主机IP10.0.0.100主机名test操作系统版本CentOS releas…

css 过渡动画

目录过渡动画1 css 属性1.1 transform 变换&#xff08;平移旋转缩放&#xff09;1.2 animation 动画1.2.1 keyframes1.3 transition 过渡1.4 比较2 方式2.1 css 伪类2.2 vue <Transition> 组件2.2.1 默认名称2.2.2 自定义名称2.2.3 自定义 class2.2.4 配合 animation2.2…

sqlserver存储过程简单游标示例

test数据库有表如下&#xff1b; 创建一个存储过程&#xff0c;输出姓名和电话&#xff1b; CREATE PROCEDURE printname AS BEGINDECLARE sName varchar(20), phone varchar(20)DECLARE cursor1 CURSOR FOR --定义游标SELECT name,phonenumber from t_student OPEN cursor1 …

OpenStack的“神秘组件” 裸金属(Ironic)管理使用

OpenStack是目前全球部署最广泛的开源云基础架构&#xff0c;在OpenStack中提供的裸金属服务的项目是Ironic。OpenStack的官网主要介绍裸金属的用途在如下5方面&#xff1a; &#xff08;1&#xff09;高性能计算&#xff1b; &#xff08;2&#xff09;无法虚拟化的硬件设备的…

DSVW通关教程

DSVW通关教程 首先整体浏览网站 Blind SQL Injection (boolean) 基于布尔型的盲注: HTTP请求的响应体中不会明确的返回SQL的错误信息, 当把参数送入程序查询时&#xff0c;并且在查询条件为真的情况下返回正常页面&#xff0c;条件为假时程序会重定向到或者返回一个自定义的错…

GICv3 基本规则

目录 1.中断类型 1.1中断标识符 1.2中断如何发送给中断控制器 二、中断状态机 2.1 电平触发 2.2 边沿触发 三、亲和性路由 四、安全模型 4.1 对软件的影响 4.2 对单一安全状态的支持 五、编程模型 本章介绍了符合GICv3架构的中断控制器的基本操作。它还描述了不同…