合成属性和继承属性都是语言语义的一部分,该语言为其构造提供含义,例如标记和语法结构。语义有助于解释符号,符号的类型及其相互之间的关系,其分析可判断源程序中构造的语法结构是否衍生出任何含义。现在,基于属性的特征,我们可以区分综合属性和继承属性
以下是合成属性和继承属性之间的重要区别。
序号 | 键 | 综合属性 | 继承的属性 | 1 | 定义 | 合成属性是一个属性,其解析树节点的值由子节点上的属性值确定。为说明起见,假设以下生产S→ABC,如果S从其子节点(A,B,C)获取值,则为称为合成属性,因为ABC的值合成为S。 | 另一方面,如果某个属性的解析树节点值由父级和/或同级节点上的属性值确定,则该属性称为“继承的”属性。在S→ABC的情况下,如果A可以从S,B和C中获取值。B可以从S,A和C中获取值。同样,C可以从S,A和B中获取值,那么S被称为继承属性。 |
2 | 设计 | 如上,在“合成”属性的情况下,产品必须以非终端为首。 | 另一方面,在“继承”属性的情况下,生产主体中的符号必须具有非终结符。 |
3 | 评价 | 可以在分析树的单个自底向上遍历期间评估合成属性。 | 另一方面,可以在分析树的单个自顶向下和横向遍历期间评估Inherited属性。 |
4 | 终奌站 | 终端和非终端都可以包含“合成”属性。 | 另一方面,只有非终端可以包含Inherited属性。 |
5 | 用法 | S属性SDT和L属性STD都使用Syntherated属性。 | 另一方面,仅L所属的SDT使用Inherited属性。 |