是否有一种在LR(1)解析器中实现合成属性或继承属性的自然机制?

时间:2016-06-07 18:40:10

标签: compiler-construction

我认为在LR(1)解析器中实现合成属性很简单。因为它也是自下而上。

但是如何在LR(1)解析器中实现继承属性?

用于比较LR(1)中的这两个东西。对于LR(1)中的合成属性和继承属性。你能举个例子吗?

1 个答案:

答案 0 :(得分:0)

要进行任意属性语法,您需要构建一个完整的树,因为来自“正确”子节点的合成属性可以被节点的“左”子节点用作继承属性。

因此您无法在解析时进行评估;你需要完整的AST。 (如果您愿意仅将继承的属性限制为“正确”的子项,则可以在解析时评估属性。)

一旦你决定在运行评估之前捕获完整的AST,只要它产生AST,你的解析技术是什么并不重要。

您可以查看使用AG结果的生产程序转换工具的attibute grammars look like。解析器是一个GLR解析器,它是LR解析的推广。