《编译技术编译原理 (32).pdf》由会员分享,可在线阅读,更多相关《编译技术编译原理 (32).pdf(8页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、编译技术语 法 制 导 的 翻 译问题:L 属 性 定 义 的 自 上 而 下 计 算S属性定义的计算边分析边计算分析完毕,属性也计算完毕继承属性是否可以采用边分析边计算的方式进行?边分析边计算,使得语法和语义的计算都在一遍处理边分析边计算,使得语法和语义的计算都在一遍处理完毕,而不需要为语义分析而单独进行一遍编译分析完毕,而不需要为语义分析而单独进行一遍编译分析所以,仅当属性信息是自左向右流动时,才有可能在分析的同时完成属性计算。L 属 性 定 义 的 自 上 而 下 计 算属性计算与分析方法之间的关系分析树的结点是自左向右生成。属性的计算次序受分析方法所限定的分析树结点建立次序的限制。预测
2、翻译器的设计L 属 性 定 义 的 自 上 而 下 计 算L属性定义翻译方案用综合属性代替继承属性如果每个产生式A X1 X2 Xn 的每条语义规则计算的属性是A的综合属性;或者是Xj 的继承属性,1 j n,但它仅依赖:L属性定义 该产生式中Xj左边符号X1,X2,Xj-1的属性;A的继承属性。S属性定义属于L属性定义。例非 L 属 性文法符号Q的继承属性依赖于它右边文法符号R的属性。产生式 语义规则 AL M AQ R L.i:=l(A.i)M.i:=m(L.s)A.s:=f(M.s)R.i:=r(A.i)Q.i:=q(R.s)A.s:=f(Q.s)L 属 性 定 义 的 自 上 而 下 计 算L属性定义的例子:变量类型声明的语法制导定义语义规则的执行时刻很重要L 属 性 定 义 的 自 上 而 下 计 算对于L属性定义,与S属性的一个最本质区别在于对于L属性定义,与S属性的一个最本质区别在于S属性定义中,只要将产生式作为一个整体看待即可,语义规则可以视为是附着在整个产生式上L属性定义则不一样,它跟属性所属的符号在产生式中的位置有关系翻译方案