正在加载图片...
China-pub.com 下载 第6京语义分析203 表6-2例6.2的属性文法 文法规则 语义规则 exp,→ep:+ierm ep一exp-lerm ep→lerm exp.val-term.val term,→ierl,*factor term,val -term,val factor.val term→factor term.val -factor.val factor→(exp) factoryal exp val factor→number factor.val =number.val 这些等式表示了表达式的语法和它所进行的算术运算的语义之间的关系。注意,在文法 规则 xp,一ep,+term 中语义符号+(记号)和等式 exp,val exp,val term.val 中执行的算术加运算符+的不同。还要注意aumber.val不会在等式的左边。就像在下一节将看 到的,这意味着必须在任意一个使用这个属性文法(例如扫描器)的语义分析之前计算 number.val。换句话说,如果想在属性文法中明确这个值,就必须在属性文法中加进文法规 则和属性等式(例如,例6.1中的等式)。 如例6.1一样,也可以通过在语法树的节点上附加等式来表示属性文法包含的计算。例如, 给定表达式(34-3)*42,可以用在其语法树上值的语义来表达,如图6-2所示。 0al3302 0al=3到2=130z 3) () facte 31) a5 (d 331) () 234 036 图6-2(34-3)*42的语法树,显示例6,2中属性文法的val属性计算 表6-2 例6 . 2的属性文法 文 法 规 则 语 义 规 则 e x p1 → e x p2 + t e r m e x p1 .val = e x p2 .val + t e r m.v a l e x p1 → e x p2 - t e r m e x p1 .val = e x p2 .v a l - t e r m.v a l exp → t e r m e x p.v a l = t e r m.v a l t e r m1 → t e r m2 * f a c t o r t e r m1 .val = t e r m2 .val * f a c t o r.v a l t e r m → f a c t o r term.val = f a c t o r.v a l f a c t o r → (e x p) f a c t o r.val = exp.val f a c t o r → n u m b e r f a c t o r.val = n u m b e r.val 这些等式表示了表达式的语法和它所进行的算术运算的语义之间的关系。注意,在文法 规则 e x p1→ e x p2 + t e r m 中语义符号 +(记号)和等式 e x p1 .val = e x p2 .val + t e r m.v a l 中执行的算术加运算符 + 的不同。还要注意n u m b e r. v a l不会在等式的左边。就像在下一节将看 到的,这意味着必须在任意一个使用这个属性文法 (例如扫描器 )的语义分析之前计算 n u m b e r. v a l。换句话说,如果想在属性文法中明确这个值,就必须在属性文法中加进文法规 则和属性等式(例如,例6 . 1中的等式)。 如例6 . 1一样,也可以通过在语法树的节点上附加等式来表示属性文法包含的计算。例如, 给定表达式( 3 4 - 3 ) * 4 2,可以用在其语法树上值的语义来表达,如图 6 - 2所示。 图6-2 ( 3 4 - 3 ) * 4 2 的语法树,显示例6 . 2中属性文法的v a l属性计算 第 6章 语 义 分 析 2 0 3 下载
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有