语义分析基础知识

语法制导定义SDD

在这里插入图片描述

综合属性(合成属性)

这一部分比较好理解,直接看图就可以明白,简单点说,就是右部候选式的符号的属性计算左部被定义的符号。而对于终结符的综合属性,已经做出了具体的规定,因此SDD中是没有计算终结符属性值的语义规则的。

一般是自下而上传递语义信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zV1LugzX-1655533340895)(C:\Users\86135\AppData\Roaming\Typora\typora-user-images\1655524031964.png)]

继承属性

可以简单的理解,如果一个属性不是合成的,则可以称作继承属性。(书本原话)

对于继承属性需要清楚终结符是没有继承属性的。

继承属性就是通过右部候选式的符号的属性和左部被定义符号的属性,计算出右部候选是中的符号。

一般是自上而下的传递信息。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zdcgO0dU-1655533340896)(C:\Users\86135\AppData\Roaming\Typora\typora-user-images\1655524114699.png)]

语义规则通常是以表达式的形式来描述的。

示例

注释分析树:每个节点都带有属性值的分析树。
在这里插入图片描述

在这里插入图片描述

属性文法

也称为属性翻译文法,基于上下文无关文法。

产生式(上下文无关文法+语义规则) = 属性文法

为每个文法符号(终结符或非终结符)都配备若干相关的值,也就是属性,表示文法符号的相关信息,如:类型、值、代码序列、符号表内容等。
对于文法的每个产生式都会有一组(若干条)属性的语义规则,对属性进行计算或者传递。

注意下图的例子中,n作为终结符,属性已经由词法分析器给出,不需要SDD计算,所以没有列出。

在这里插入图片描述

S属性文法

一个属性文法都是合成属性,则称为 S 属性文法 。

在这里插入图片描述

符号表

符号表用杂凑表这种数据结构实现,其实就是哈希表。

注意:桶的个数,也就是数组的大小,选择一个素数,可以让杂凑函数更好的运行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值