产生式 语义规则 L→En print(E.val) E→E1+T E.val :E.val+T.val E→T E.val =T.val T→T1*F T.val :=T.val*F.val T→F T.val :=F.val F→(E) F.val :=E.val F→digit F.val :=digit.lexval 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 产 生 式 L→En E→E1+T E→T T→T1 *F T→F F→ (E) F→digit 语 义 规 则 print(E.val) E.val := E1 .val+T.val E.val :=T.val T.val :=T1 .val* F.val T.val :=F.val F.val :=E.val F.val :=digit.lexval
■综合属性 口在语法树中,一个结点的综合属性的值由其 子结点的属性值确定。 口使用自底向上的方法在每一个结点处使用语 义规则计算综合属性的值 ■仅仅使用综合属性的属性文法称S一属性 文法 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 ◼ 综合属性 在语法树中,一个结点的综合属性的值由其 子结点的属性值确定。 使用自底向上的方法在每一个结点处使用语 义规则计算综合属性的值 ◼ 仅仅使用综合属性的属性文法称S-属性 文法
产生式 语义规则 L→En print(E.val) E→E1+T E.val :E.val+T.val E-T E.val :=T.val T→T1*F T.val :=T.val*F.val T→F T.val :=F.val F→(E) F.val :=E.val F→digit F.val :=digit.lexval 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 产 生 式 L→En E→E1+T E→T T→T1 *F T→F F→ (E) F→digit 语 义 规 则 print(E.val) E.val := E1 .val+T.val E.val :=T.val T.val :=T1 .val* F.val T.val :=F.val F.val :=E.val F.val :=digit.lexval
产生式 语义规则 LEn print(E.val) 3*5+4n的带注释的语法树 E→E1+T E.val :E.val+T.val E-T E.val :=T.val T→T*F T.val :=T1.val*F.val T→F T.val :=F.val F→(E) F.val :=E.val E.val-=19 n F→digit I F.val :=digit.lexval E.val-15 T.val=4 T.val=15 F.val=4 T.val=3 F.val=5 digit.lexval=4 / F.val-3 digit.lexval=5 digit.lexval=3 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 3*5+4n的带注释的语法树 digit.lexval=3 F.val=3 T.val=3 * digit.lexval=5 F.val=5 T.val=15 E.val=15 + digit.lexval=4 F.val=4 T.val=4 E.val=19 n L 产 生 式 语 义 规 则 L→En 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→digit F.val :=digit.lexval
■继承属性 口在语法树中,一个结点的继承属性由此结点 的父结点和/或兄弟结点的某些属性确定 口用继承属性来表示程序设计语言结构中的上 下文依赖关系很方便 国防科技大学计算机系602教研室
国防科技大学计算机系602教研室 ◼ 继承属性 在语法树中,一个结点的继承属性由此结点 的父结点和/或兄弟结点的某些属性确定 用继承属性来表示程序设计语言结构中的上 下文依赖关系很方便