静态语义分析
采用语法制导翻译生成中间代码
1. 语法制导翻译简介
(1)语法与语义的关系
语法是指语言的结构、即语言的“样子”;
语义是指附着于语言结构上的实际含意,即语言的“意义”.
一个语法上正确的句子,它所代表的意义并不一定正确.
☆ 语义分析的作用
• 检查结构正确的句子所表示的意思是否合法;
• 执行规定的语义动作,如:表达式求值、符号表的查询/填写、中间代码生成等
☆ 应用最广的语义分析方法是语法制导翻译,他的基本思想是将语言结构的语义以属性的形式赋予代表此结构的文法符号,而属性的计算以语义规则的形式赋予由文法符号组成的产生式.
(2)属性/语义规则的定义
定义4.1 对于产生式A→α,其中α是由文法符号X1X2...Xn组成的序列,它的语义规则可以表示为(4.1)所示关于属性的函数f:
b := f(c1, c2, ..., ck) (4.1)
语义规则中的属性存在下述性质与关系:
(1) 称(4.1)中属性b依赖于属性c1, c2, ..., ck。
(2) 若b是A的属性,c1, c2, ..., ck是α中文法符号的属性,或者A的其它属性,则称b是A的综合属性。
(3) 若b是α中某文法符号Xi的属性,c1, c2, ..., ck是A的属性,或者是α中其它文法符号的属性,则称b是Xi的继承属性。
(4) 若语义规则的形式如下述(4.2),则可将其想像为产生式左部文法符号A的一个虚拟属性。属性之间的依赖关系,在虚拟属性上依然存在。
f(c1, c2, ..., ck) (4.2) ■
☆ 继承属性从前辈和兄弟的属性计算得到,综合属性从子孙和自身的其他属性计算得到.
即,继承属性"自上而下,包括兄弟",综合属性"自下而上,包括自身".
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
添加我为好友,拉您入交流群!
请使用微信扫一扫!