语法制导定义SDD是对于 上下文无关语法CFG 的一个推广:

  • 将每个产生式和一组语义规则相关联,用来计算该文法产生式中每个文法符号的属性值。
  • 将每个文法符号和一个语义属性集合相关联。

也就是说,SDD为CFG的每个文法符号设置了一个语义属性,对于给定的输入串x,SDD可以分析出语法分析树中每一个节点的属性值。

问法符号的属性包括:综合属性和继承属性。

所谓综合属性,指的是:分析数节点N上的非终结符A的综合属性只能通过N的子节点或者N本身的属性决定。

比如说这里面的产生式E -> E1 +T. 对于这个产生式的语法分析树我们看出来,这里面E的val属性值只由他的子节点E1和T的属性值val决定。所以E的val就是一个综合属性。

所谓继承属性,指的是N上的非终结符A的继承属性只能由N的父节点,N的兄弟节点和N本身的属性决定。

比如上面的例子中,在产生式的语法分析树中我们能够看出,L的inh属性是由T的type属性决定的,而T是L的兄弟节点,所以这个是继承属性。

我举一个例子:

上图中表示每一个产生式对应的语义规则,可以看出这是一个加法和乘法的语义规则。通过上面的sdd就可以根据语义规则来计算语法分析树上各个节点的属性值了,以算术表达式求值 3*5+4n为例:

从上面语法分析树中的最下面的叶节点可以看出,数字的值lexval分别是3,5和4,那么一步一步向上,由语义规则中的F.val = digit.lexval可知,每个因子的值由数字的值决定,所以可以向上构建上层节点的值F.val分别是3,5,4. 在往上看,由T.val = F.val可知,终结符的val由因子的val决定,所以计算再上层的T.val也分别是3,5,4。再计算乘法和加法的终结符属性值,最终算出来E.val = 19 以及n。L为打印输出,最终输出了结果,语法分析树的各个节点的值就是这么自底向上算出来的。

语法制导定义 SDD相关推荐

  1. 【编译原理笔记08】语法制导翻译:语法制导定义,SSD的求值顺序,S属性定义与L属性定义

    本次笔记内容: 5-1 语法制导翻译概述 5-2 语法制导定义 5-3 SSD的求值顺序 5-4 S属性定义与L属性定义 本节课幻灯片,见于我的 GitHub 仓库:第8讲 语法制导翻译_1 文章目录 ...

  2. 【编译原理】第五章 语法制导翻译

    第五章 语法制导翻译 5.1 语法制导翻译概述 将语义分析和中间代码生成统称为语义翻译,而语义翻译和语法分析统称为语法制导翻译 语法制导翻译使用CFG来引导对语言的翻译, 是一种面向文法的翻译技术. ...

  3. 编译原理(5):语法制导翻译

    声明:本系列文章,是根据中国大学MOOC网 哈工大的编译原理 这门课学习而成的学习笔记. 一.语法制导翻译概述 什么是语法制导翻译 语法制导翻译的基本思想 两个概念 语法制导定义(SDD) 语法制导翻 ...

  4. 编译原理-语法制导翻译

    文章目录 概念 语法制导翻译的基本思想 SDD && SDT 语义规则 文法属性(S,L) SDD 注释分析树(注释语法树) 副作用 抽象语法树( AST ) SDD的实现方法 SDT ...

  5. 编译原理(十)语法制导翻译

    语法制导定义 Syntax-Driect Definition SDD 语法制导的翻译方案Syntax-driected translation scheme SDT,可以看作SDD的具体实现方案,S ...

  6. 语法制导翻译(Syntax-Directed Translation)

    语法制导翻译(Syntax-Directed Translation) 语法制导翻译概述 语法制导定义(SDD) 文法符号的属性 SDD 求值顺序 S-SDD 和 L-SDD 语法制导翻译方案(SDT ...

  7. 编译原理--语法制导的翻译

    前言 把一些属性附加到代表语言构造的文法符号上, 以把信息和一个语言的构造联系起来. 通过语义规则来说明文法符号的属性值如何确定. 产生式 语义规则 E -> E_{1} + T E.code ...

  8. 编译原理:语法制导翻译

    一,语法制导定义 属性文法 是在上下文无关文法的基础上为每个文法符号(终结符或非终结符)配备若干个相关的"值"(称为属性) 文法表示 三元组:A=(G,V,F) G:是一个上下文无 ...

  9. 【编译原理复习】第六章---- 属性文法和语法制导翻译

    第六章 属性文法和语法制导翻译 本章主要掌握下面一些内容. 1.语义规则的两种描述方法:语法制导的定义和翻译方案.语法制导的定义没有指明语义规则的计算次序,而翻译方案显式给出语义规则( 或叫语义动作) ...

最新文章

  1. 国行版HomePod售价2799元,本周五发售
  2. 关于LateX的应用
  3. 数字vlsi芯片设计_【数字逻辑 | 数字逻辑导论】课程导论
  4. 详解Windows消息分类以及WM_COMMAND与WM_NOTIFY的区别,以及模拟发送控件通知消息
  5. 岗位推荐 | 微软AI Research Group招募自然语言处理AI算法研究实习生
  6. php测试插入,php – 使用Symfony测试数据库插入
  7. Sharepoint学习笔记—ECM系列--根据位置设置的默认元数据值(Location-Based Metadata Defaults)...
  8. paper reading:[第一代GCN] Spectral Networks and Deep Locally Connected Networks on Graphs
  9. 有时间属性,有过程的是软件,有空间属性,有结构的是硬件
  10. 三、VueJs 填坑日记之项目文件认识
  11. 拓端tecdat|R语言时变向量自回归(TV-VAR)模型分析时间序列和可视化
  12. win11系统项目启动报java.lang.IllegalStateException: Unmapped relationship: 7错误的解决
  13. 2016年蓝桥杯B组C/C++省赛试题-漏网之渔
  14. npm i 安装依赖 报错 npm ERR! code EINTEGRITY npm ERR! sha512-*****==.(12008 bytes) 问题处理
  15. 文明与征服萨拉丁怎么搭配阵容?
  16. VBA 为什么你redim() 动态二维数组总出错?因为 redim 动态数组不太适合和循环搭配
  17. request.setAttribute理解
  18. #个人日记-《扫黑·决战》电影观后感-20210511
  19. 2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛(baseline)
  20. sqli-labs靶场(1-22关)

热门文章

  1. python3.6安装步骤-python3.6、opencv安装环境搭建过程(图文教程)
  2. python免费课程400节-少儿编程网-Scratch_Python_教程_免费儿童编程学习平台
  3. python爬虫-python爬虫是什么?为什么把python叫做爬虫?
  4. python画简便的图-python 实现在一张图中绘制一个小的子图方法
  5. 零基础学python pdf-Python pdf(零基础入门学习Python)V1.0 最新版
  6. python必备入门代码-python基础入门这一篇就够
  7. 远场语音识别套件评测
  8. Win7中语音识别功能的详细介绍
  9. 高职考计算机基础知识,高职计算机基础及应用教程
  10. 在虚拟DOM和Diff算法中为什么不建议使用index作为key值?