语法制导翻译
属性文法 语法制导翻译概论
计算语义规则 S-属性文法和自下而上翻译 L-属性文法和自上而下翻译 L-属性文法和自下而上翻译
属性文法
属性文法的形式化定义 属性文法是一个三元组:A=(G,V,F),其中 G:是一个上下文无关文法。 V:有穷的属性集,每个属性与文法的一个终结 符或非终结符相连。 F:关于属性的断言或谓词集。每个断言与一个 产生式相联。
综合属性
将属性附着在分析树对应文法符号上,形成注释分 析树。(属性作为分析树的注释) 8+5*2的分析树 L E
E
T F
+
T
T F digit F
digit
digit
综合属性
将属性附着在分析树对应文法符号上,形成注释分 析树。(属性作为分析树的注释) 8+5*2的注释分析树 L E.val E.val + T.val F.val T.val F.val digit.lexval
属性文法
属性的抽象表示 例如:E.val(值) E.type(类型) E.code(代码序列) E.place(存储空间)
属性文法
E
T
文法G:
+
T
ET1+T2|T1 or T2 Tnum|true|false
3
4
ET1+T2 {T1.t=int AND T2.t=int} ET1orT2{ T1.t=bool AND T2.t=bool} E{T1.t=T2.t} Tnum {T.t=int} T{T1.t=int} + Ttrue {T.t=bool} T{T2.t=int} Tfalse {T.t=bool}