例:利用表达式的文法制导定义解释执行表达式的值。 生式 语义规则 S→E print(E. val) E→E1+T E. val: =E, val+Tval E→T E. val: =Tval T→T Tval: =T,, val val T→F Tval: F val F.val: =E. val F. val: =i.lexval 下图是分析5+7*3时属性传递的注解分析树,其中5,7,3分 别是i的显示值,即i|exal 显然语义规则的属性val为均为综合属性,该语法制导定乂为 S-属性
例:利用表达式的文法制导定义解释执行表达式的值。 产生式 语义规则 S'→E print(E.val) E→E1+T E.val:=E1 .val+T.val E→T E.val:=T.val T→T1 *F T.val:=T1 .val*F.val T→F T.val:= F.val F→(E) F.val:=E.val F→i F.val:=i.lexval 下图是分析5+7*3时属性传递的注解分析树,其中5,7,3分 别是i的显示值,即i.lexval。 显然语义规则的属性val为均为综合属性,该语法制导定义为 S-属性
S’出[w1) 表示国性传递的方向 I T.val T Ival T FF. val val lervel=s LennI:7 i, iral=5 图6-3语法分析时的属性传递愫兄
例:描述说眀语句中各种变量的类型信息的语义规则 产生式 语义规则 L. in: =T type T→int T type =integer T→real Ttype: -real L1. in:=L in addtype(. entry, L in) addtype(ientry, L in) 下图为句子reai1i2,3的注解分析树 显然语乂规则的属性in为继承属性
例:描述说明语句中各种变量的类型信息的语义规则 产生式 语义规则 D→TL L.in:=T.type T→int T.type:=integer T→real T.type:=real L→L1 ,i L1 .in:=L.in addtype(i.entry,L.in) L→i addtype(i.entry,L.in) 下图为句子real i1 ,i2 ,i3的注解分析树 显然语义规则的属性in为继承属性
T T type 表示国世传递的方向 L工.in I lg. entry LL lz Iz. entr i;1e丑t 图6-4具有继承属性的传递情况
在语法分析过程中,随着分析的进行,每当每个产生式 完成时(即在自顶向下的分析技术中全部推导出产生式右部 的符号串;在自底向上的分析技术已用产生式归约相应的非 终结符号)就执行相应的语义子程序。这种思想也就是所谓 的语法制导翻译。但对某一产生式究竞要完成哪些动作,这 不仅与要产生的代码有关,而且与编译程序的设计者的风格 有关。 例:设有文法G[S] (0)SE(1)EE+E(2)E(3)E→(E (4)E 其中规定符号+与*的优先级为*大于+,且*与+都是左结合的 则有SLR(1)分析表:
在语法分析过程中,随着分析的进行,每当每个产生式 完成时(即在自顶向下的分析技术中全部推导出产生式右部 的符号串;在自底向上的分析技术已用产生式归约相应的非 终结符号)就执行相应的语义子程序。这种思想也就是所谓 的语法制导翻译。但对某一产生式究竟要完成哪些动作,这 不仅与要产生的代码有关,而且与编译程序的设计者的风格 有关。 例:设有文法G[S]: (0)S→E (1)E→E+E (2)E→E*E (3)E→(E) (4) E→i 其中规定符号+与*的优先级为*大于+,且*与+都是左结合的 则有SLR(1)分析表: