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

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

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 属性计算

基于属性文法的处理方法

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

基于属性文法的处理方法

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

基于属性文法的处理方法

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

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

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

良定义的属性文法

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值