编译原理—语法制导翻译、S属性、L属性、自上而下、自下而上计算

news2024/9/22 5:36:27

编译原理—语法制导翻译、S属性、L属性、自上而下、自下而上计算

  • 1.语法制导翻译
    • 1.1属性文法
    • 1.2算术表达式的计数器
    • 1.3属性的分类
    • 1.4属性依赖图
      • 继承属性的计算
    • 1.5语义规则的计算方法
    • 1.6属性计算次序
  • 2. S属性定义
    • 2.1 语法树与分析树
    • 2.2 语法树与DAG
      • 2.2.1构造表达式的语法树(DAG)
      • 2.2.2属性结构树
      • 2.2.3表达式的语法树
  • 3.L-属性定义
    • 3.1深度优先次序
    • 3.2非L-属性定义的语法制导定义
    • 3.3翻译方案中的动作
    • 3.4翻译方案的书写
    • 3.5类型说明的语法制导定义
      • 3.5.1属性传递
    • 3.6翻译方案的计算次序
  • 4. S-属性定义的自底向上计算
    • 4.1 属性栈与分析栈
    • 4.2计算表达式的(栈)代码
    • 4.3自底向上计算继承属性
  • 5. C声明的翻译方案
    • 5.1C声明的“代码段”
  • 6. 模拟继承属性的计算
    • 6.1引入标记非终结符
    • 6.2 文字排版的语法制导定义
    • 6.3文字排版的翻译方案
  • 7. (L-属性定义)自顶向下翻译
    • 7.1删除翻译方案中的左递归
    • 7.2(递归下降)预测翻译器的设计
    • 7.3递归翻译函数

1.语法制导翻译

在这里插入图片描述

1.1属性文法

在这里插入图片描述在这里插入图片描述

1.2算术表达式的计数器

在这里插入图片描述
在这里插入图片描述

1.3属性的分类

在这里插入图片描述

1.4属性依赖图

继承属性的计算

在这里插入图片描述
在这里插入图片描述

1.5语义规则的计算方法

在这里插入图片描述

1.6属性计算次序

在这里插入图片描述

2. S属性定义

在这里插入图片描述

2.1 语法树与分析树

在这里插入图片描述
在这里插入图片描述

2.2 语法树与DAG

在这里插入图片描述

2.2.1构造表达式的语法树(DAG)

在这里插入图片描述
在这里插入图片描述

2.2.2属性结构树

在这里插入图片描述

2.2.3表达式的语法树

在这里插入图片描述

3.L-属性定义

在这里插入图片描述

3.1深度优先次序

在这里插入图片描述

3.2非L-属性定义的语法制导定义

在这里插入图片描述

3.3翻译方案中的动作

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

3.4翻译方案的书写

在这里插入图片描述

3.5类型说明的语法制导定义

在这里插入图片描述

3.5.1属性传递

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3.6翻译方案的计算次序

在这里插入图片描述

4. S-属性定义的自底向上计算

在这里插入图片描述

4.1 属性栈与分析栈

在这里插入图片描述
在这里插入图片描述

4.2计算表达式的(栈)代码

在这里插入图片描述
黄色表示该属性就位于栈顶,省略栈代码

4.3自底向上计算继承属性

在这里插入图片描述
在这里插入图片描述

5. C声明的翻译方案

在这里插入图片描述
在这里插入图片描述

5.1C声明的“代码段”

在这里插入图片描述

6. 模拟继承属性的计算

在这里插入图片描述

6.1引入标记非终结符

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2 文字排版的语法制导定义

在这里插入图片描述
在这里插入图片描述

6.3文字排版的翻译方案

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

7. (L-属性定义)自顶向下翻译

在这里插入图片描述
在这里插入图片描述

7.1删除翻译方案中的左递归

在这里插入图片描述
在这里插入图片描述

7.2(递归下降)预测翻译器的设计

在这里插入图片描述
在这里插入图片描述

7.3递归翻译函数

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Android中常见的那些内存泄漏——【问题分析+方案】

1.静态Activity(Activity上下文Context)和View 静态变量Activity和View会导致内存泄漏,在下面代码中对Activity的Context和TextView设置为静态对象,从而产生内存泄漏; public class MemoryTestActivity extends AppCompatActivity {private…

[附源码]SSM计算机毕业设计健身健康规划系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

noexcept说明符/运算符

一、noexcept说明符 1、语法 (1)noexcept 与 noexcept(true) 相同 (2)noexcept(表达式) 如果 表达式 求值为 true,那么声明函数不会抛出任何异常。 (3)throw() //c1…

Ubuntu配置FTP服务

参考目录1.安装FTP服务器软件2.配置FTP服务3.Ubuntud登录ftp服务器4.windows下通过cuteFTPlianjei1.安装FTP服务器软件 (1) FTP文件传送协议(File Transfer Protocol,简称FTP),是一个用于从一台主机到另一台主机传输文件的协议。 (2)Linux下有…

Jetpack 之 LiveData 实现事件总线

事件总线相信大家很多时候都会用到,那大家常用的也就是常青树 EventBus,以及 RxJava 流行起来的后起之秀 RxBus。它们的使用方式都差不多,思想也都是基于观察者模式,正好 LiveData 的核心思想也是观察者模式,因此我们完…

做Android 开发这么久,还不明白 Android Framework 知识重要性?

Framework作为Android的框架层,为App提供了很多API调用,但很多机制都是Framework包装好后直接给App用的,如果不懂这些机制的原理,就很难在这基础上进行优化。 从做Android的第一天起,你一定听过无数次关于Framework的…

计算机音乐-乐理知识(1)

一、节拍 节拍(Beat/Meter),是一个衡量节奏的单位,在音乐中,有一定强弱分别的一系列拍子在每隔一定时间重复出现。如 2 / 4 、 4 / 4 、 3 / 4 拍等。节拍,乐曲中表示固定单位时值和强弱规律的组织形式。 …

测试员工作三年后的工资对比,没达到这个数的都属于拖后腿了

“毕业三年的薪资是职场阶段的一个分水岭。” 不知什么时候开始,这句话深刻的引入了所有打工人的心中,程序员们自然也不例外。 事实上,这句话说的并不无道理,毕业的三年,不仅是学生到职场人身份上的一个转变&#xf…

初阶数据结构学习记录——아홉 二叉树和堆(2)

接着上一篇 之前写过一些关于堆的代码,向下调整,向上调整算法,以及常用的几个函数。这一篇继续完善堆,难度也会有所上升。先来看上一篇文末提到的创建堆算法。 首先要有空间,要有数据,之后再形成堆。我们…

9.5 利用可执行内存挑战DEP

目录 一、实验环境 二、实验思路 三、实验代码 四、实验步骤 1、寻找memcpy函数的地址 2、查看内存中可读可写可执行的内存 3、修复EBP 4、保证memcpy的源地址位于shellcode之前 一、实验环境 操作系统:windows 2000 软件:原版OD、VC6.0 二、实…

删除的数据如何恢复?误删了文件怎么恢复

文件的误删除,相信大部分人都经历过。不过因为很多人删除的文件都不算是很重要,所以有与没有并没有太大的区别。但是一旦你删除的文件正是你最近急需的,删除的数据如何恢复?别着急,可以试试以下的几种方法:…

STM32串口详解

实验一:简单的利用串口接收中断回调函数实现数据的返回 关于串口调试助手,还应知道: 发送英文字符需要用一个字符即8位,发送汉字需要两个字符即16位,如上图,发送汉字“姜”实际是发送“BD AA”而发送英文字…

外卖项目06---套餐管理业务开发(移动端的后台代码编辑开发)

菜品展示、购物车、下单 目录 一、导入用户地址簿相关功能代码 90 1.1需求分析 90 1.2数据模型 90 1.3导入功能代码 90 二、菜品展示 91 2.1需求分析 91 2.2商品展示---代码开发---梳理交互过程 92 2.3菜品展示---代码开发---修改DishController的list方法并测试 93 2…

OpenGL原理与实践——核心模式(二):Shader变量、Shader类的封装以及EBO

目录 Shader内的一些关键字 向量 举例:shader之间的数据传输,并实现渐变颜色 举例:C向shader传输数据的过程 代码整理——shader类的封装 加入颜色信息 索引绘制——EBO 整体代码以及渲染结果 Shader内的一些关键字 in:上…

网站被劫持勒索怎么办

互联网出现后的几十年时间里,世界便由一张张网串联了起来,给我们的生活带来了无限的便利。但在互联网飞速发展的同时,恶意网络攻击也随之而来,近年来,互联网攻击事件频发,不法分子利用常见的DDoS攻击、CC攻…

【生成式网络】入门篇(二):GAN的 代码和结果记录

GAN非常经典,我就不介绍具体原理了,直接上代码。 感兴趣的可以阅读,里面有更多变体。 https://github.com/rasbt/deeplearning-models/tree/master/pytorch_ipynb/gan GAN 在 MINIST上的代码和效果 import os # os.chdir(os.path.dirname(_…

springBoot集成websocket实现消息实时推送提醒

在浏览某些网页的时候,例如 WebQQ、京东在线客服服务、CSDN私信消息等类似的情况下,我们可以在网页上进行在线聊天,或者即时消息的收取与回复,可见,这种功能的需求由来已久,并且应用广泛,和pc端web系统待办…

新建anaconda使用jupyter出现的一系列问题

1,运行一段机器学习代码,报缺少h5py的错误. 使用conda install h5py1.8.0 安装无法安装,因为当前环境的python版本是3.9,只能用3.7及以下的版本。无奈只能新建一个conda 环境。 2,新建一个 python3.7的conda 环境。运行…

「风控算法服务平台」高性能在线推理服务设计与实现

本文作者:郁昌存 来自京东科技-风险管理中心 一、背景/目标 1) 风控智能化体系建设依赖大量深度学习/机器学习模型进行实时在线的风险识别、智能决策。要求可以将算法模型快速部署为在线服务,供决策引擎调用。 2) 风控决策引擎…

文献 | 教师主观幸福感变迁:横断历史研究的视角

Hello,大家好! 这里是壹脑云科研圈,我是莹~ 疫情带来的社会经济变化正在改变着我们的求职意向,越来越多的人参与到考公考编的大军中。其中,教师这一职业的稳定性和社会认同度吸引了越来越多的年轻人参加教资考试。 教…