Compiler construction 解析树求值期间的s属性vs L属性语法

Compiler construction 解析树求值期间的s属性vs L属性语法,compiler-construction,Compiler Construction,如果语法既不是S属性也不是L属性,那么在解析树属性的计算中会出现什么样的问题?S属性和L属性的语法特别容易处理,例如,属性计算可以直接沿自顶向下的解析执行。(自底向上解析时,只有S属性语法很容易实现。) 一旦我们使用了更通用的属性语法,属性语法系统就必须做更多的内务处理,比如显式地维护带有属性的CST,并预先执行依赖性分析,以便在解析之后执行属性评估 此外,解析器生成器(如ANTLR 3)可以使用属性进行语义消歧。显然,当(自上而下)解析器尝试规则时,相应的属性需要及时可用。这适用于L属性语法,

如果语法既不是S属性也不是L属性,那么在解析树属性的计算中会出现什么样的问题?

S属性和L属性的语法特别容易处理,例如,属性计算可以直接沿自顶向下的解析执行。(自底向上解析时,只有S属性语法很容易实现。) 一旦我们使用了更通用的属性语法,属性语法系统就必须做更多的内务处理,比如显式地维护带有属性的CST,并预先执行依赖性分析,以便在解析之后执行属性评估

此外,解析器生成器(如ANTLR 3)可以使用属性进行语义消歧。显然,当(自上而下)解析器尝试规则时,相应的属性需要及时可用。这适用于L属性语法,但不适用于一般AGs