编译原理学习笔记14——属性文法与语法制导翻译1

news2024/11/28 9:36:42

编译原理学习笔记14——属性文法与语法制导翻译1

  • 14.1 属性文法
  • 14.2 属性计算

14.1 属性文法

属性文法
在这里插入图片描述
在这里插入图片描述

综合属性

  • 自下而上传递信息
  • 语法规则:根据右 部候选式中的符号 的属性计算左部被 定义符号的综合属性
  • 语法树:根据子结 点的属性和父结点 自身的属性计算父 节点的综合属性
    在这里插入图片描述

继承属性

  • 自上而下传递信息
  • 语法规则:根据右部 候选式中的符号的属 性和左部被定义符号 的属性计算右部候选 式中的符号的继承属 性
  • 语法树:根据父结点 和兄弟节点的属性计 算子结点的继承属性
    在这里插入图片描述
    在这里插入图片描述

属性依赖
在这里插入图片描述
属性依赖
在这里插入图片描述
语义规则
在这里插入图片描述
在这里插入图片描述

测试:语义规则

  • 考虑非终结符A,B和C,其中,A有一个继承 属性a和一个综合属性b,B有综合属性c,C有 继承属性d。产生式A→BC不可能有规则
  • A. C.d:=B.c+1
  • B. A.b:=B.c +C.d
  • C. B.c := A.a
    答案:C
    带注释的语法树
    在这里插入图片描述
  • 在语法树中,一个结点的综合属性的值由其子 结点和它本身的属性值确定
  • 使用自底向上的方法在每一个结点处使用语义 规则计算综合属性的值
  • 仅使用综合属性的属性文法称S-属性文法
    在这里插入图片描述
  • 在语法树中,一个结点的继承属性由其父结点、 其兄弟结点和其本身的某些属性确定
  • 用继承属性来表示程序设计语言结构中的上下 文依赖关系很方便
    在这里插入图片描述
    在这里插入图片描述

14.2 属性计算

基于属性文法的处理方法

  • 语义规则的计算
    • 产生代码
    • 在符号表中存放信息
    • 给出错误信息
    • 执行任何其它动作
  • 对输入串的翻译就是根据语义规则进行计算

基于属性文法的处理方法

  • 由源程序的语法结构所驱动的处理办法就是语 法制导翻译法
  • 输入串-》 语法树 -》按照语义规则计算属性

基于属性文法的处理方法

  • 依赖图
  • 树遍历
  • 一遍扫描

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

依赖图的构建算法
在这里插入图片描述
依赖图示例
在这里插入图片描述

良定义的属性文法

  • 如果一属性文法不存在属性之间的循环依赖关 系,则称该文法为良定义的
  • 一个依赖图的任何拓扑排序都给出一个语法树 中结点的语义规则计算的有效顺序

属性的计算次序
在这里插入图片描述
在这里插入图片描述
树遍历的属性计算方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一遍扫描的处理方法
在这里插入图片描述
抽象语法树
在这里插入图片描述
建立表达式的抽象语法树
在这里插入图片描述
建立抽象语法树的语义规则
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【日常系列】LeetCode《30·动态规划总结》

动态规划总结 线性动态规划问题总结 打家劫舍总结 最大子数组和总结 dp[i] 依赖于前面一个或者两个状态 dp[i] 依赖于前面多个状态 注意:子序列可以不连续 dp[i] 带有一个或者多个维度 输入为两个数组或者两个字符串 lc 10【剑指 19】【top100】:正…

【LeetCode每日一题:2309. 兼具大小写的最好英文字母~~~模拟+Hash表+贪心】

题目描述 给你一个由英文字母组成的字符串 s ,请你找出并返回 s 中的 最好 英文字母。返回的字母必须为大写形式。如果不存在满足条件的字母,则返回一个空字符串。 最好 英文字母的大写和小写形式必须 都 在 s 中出现。 英文字母 b 比另一个英文字母 …

Java生成微信小程序二维码,5种实现方式,一个比一个简单

文章目录前言先看官网一、JDK自带的URLConnection方式二、Apache的HttpClient方式三、okhttp3方式四、Unirest方式五、RestTemplate方式其它细节getAccessToken构建参数mapbyte[]数组源码下载前言 先介绍一下项目场景,主要是通过微信小程序二维码裂变分享&#xff…

一时重构一时爽,一直重构一直爽

笔者(后台技术汇)恭祝各位大佬:2023年春节快乐,兔年祥瑞。距离上次更新,已经过去5个月有余了,有小伙伴疑惑笔者是不是删库跑路了..其实不是,这段时间是在参加一次比较大的项目重构(目…

学习笔记 —— python代码耗时及内存占用测试方法

1、手写耗时测试 先看结果; 主要有三种方法,各自的时钟间隔如下: time.time() timeit time.time_ns() ( time is outputted in ns!). 可见方法2,即timeit 的时钟间隔最短。 注:最后一个是以ns为单位的,前两个是…

二叉树的概念与结构

文章目录前言一、树的概念及结构1.树的概念2.树的相关概念3.树的表示4. 树在实际中的运用二、二叉树概念及结构1.概念2.特殊的二叉树5.二叉树的性质6.二叉树的存储结构(1).顺序存储(2).链式存储结语前言 因为二叉树的知识点太多,一篇文章讲不…

《真象还原》读书笔记——第一章 部署工作环境

环境: 由于平时使用 windows 系统 所以 linux 环境 使用了 linux子系统。 $ cat /proc/version Linux version 4.4.0-22000-Microsoft (MicrosoftMicrosoft.com) (gcc version 5.4.0 (GCC) )1.1 工欲善其事 必先利其器 操作环境很重要呀。 1.2 编译器 GCC: gc…

Java 23种设计模式(8.结构型模式-桥接模式)

结构型模式-桥接模式 代码分析 类图 代码 public interface Implementor {void operation(); }public class ConcreteImplementorA implements Implementor{Overridepublic void operation() {System.out.println("A");} }public class ConcreteImplementorB imple…

(Java高级教程)第四章必备前端基础知识-第二节3:CSS盒模型和浮动

文章目录一:盒模型(1)border(2)padding(3)margin二:flex布局一:盒模型 盒模型:在HTML中,每个标签(或元素)相当于是一个盒…

DaVinci:色彩匹配

z调色页面:色彩匹配Color:Color Match色彩匹配 Color Match调板是专业的一级调色工具,专门用于对视频图像进行精准的校色还原。色彩匹配时,先定位到视频中持有色卡的画面。在检视器左下角快捷菜单中选择“色卡” Color Chart工具&…

C 语言零基础入门教程(十二)

C enum(枚举) 枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。 枚举语法定义格式为: enum 枚举名 {枚举元素1,枚举元素2,……};接下来我们举个例子,比如:一星期有 7 天,如果不用枚举&…

【Linux】vim编辑器的使用

文章目录vim的基本概念vim指令集复制粘贴撤销、剪切光标定位vim的基本概念 vim是一款多模式的编辑器,在我们常用的模式有3~5种。分别是命令模式(command mode)、插入模式(Insert mode)和底行模式( last lin…

【PHP 随记】—— ThinkPHP 配置数据库

👉总目录👈\large\colorbox{skyblue}{👉总目录👈}👉总目录👈​ 文章目录1、数据库连接及导入① 数据库连接② 数据库导入2、配置 ThinkPHP 数据库连接信息① 配置连接信息1、数据库连接及导入 ① 数据库连…

大数据分析案例-基于随机森林算法构建人口普查分析模型

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

Datawhale 202301 设计模式 | 人工智能 现代方法 习题

Exercise 1 绪论 Q:用您自己的话来定义:(a)智能,(b)人工智能,(c)智能体,(d)理性,(e)逻…

【大数据趋势】1月24日 流动、固定汇率和货币政策独立性三者的三者选二,A股持续的会上涨。

前言:昨天写的被朋友看到,认为我写的太水,故意不提日常讨论的那个关键指标,所以下午重新修改了一下。 确定欧美大势市场形态1 - 美元指数 关键位置大概率不会一次就破,有较强反弹可能,带动美股反弹 作为长…

MH-100X微波运动传感器介绍

MH-100X微波运动传感器简介微波运动传感器是利用多普勒雷达原理设计的微波移动物体探测器。不同于一般的红外探测器,微波传感器通过通过检测物体反射的微波来探测物体的运动状况,检测对象将并不会局限于人体,还有很多其他的事物。微波传感器不…

java基础语法——条件判断与循环语句

目录 一、流程控制语句 流程控制语句分类 二、顺序结构 顺序结构概述 顺序结构图 三、选择结构 选择结构概述 选择结构(if语句1) 选择执行图1 选择结构(if语句2) 选择执行图2 选择结构(if语句3) 选择执行图3 选择结构(switch语句) switch语句执行流程图 四、 循环…

剪映电脑版超简单使用教程Mac

相机 我主要用到的两个键 点击开始创作导入本地视频 导入本地视频 将素材拖拽到时间线上 时间线面板操作 撤销、恢复、分割 撤销上一次操作也可以用快捷键 command z 定格、倒放、镜像、裁剪 剃刀 点击菜单的分割可以出来一个剃刀,分割更方便 选择模式 …

代码随想录算法训练营第十二天|239. 滑动窗口最大值| ● 347.前 K 个高频元素

239 滑动窗口最大值 看完题后的思路 这是一道典型的单调队列的题,如果不是之前刷过一遍,对这道题没有一点头绪。即使刷过,也只是留了个印象。 解题思路 对于本道题来说,到窗口右移,如果一个新元素a进入窗口&#x…