parsing - 综合和继承属性

标签 parsing compiler-construction abstract-syntax-tree context-free-grammar semantic-analysis

如何确定属性是从语法的产生式合成还是继承?

我猜想该属性必须在问题中预定义——如果它的值取决于子节点或父节点。但是有没有办法分析一个属性是从语法产生式继承还是合成的。

最佳答案

综合属性:从附加到其非终结符子级的属性中获取其值的属性。

继承属性:从附加到其非终结符的父级(或同级)的属性获取其值的属性。

         **PRODUCTION**                             **SEMANTIC RULES**

             T->FT’                                    T’.inh=F.val
                                                       T.val=T’.syn

           T’->*FT1’                              T1’.inh=T’.inh*F.val
                                                      T’.syn=T1’.syn

             T’->Ɛ                                    T’.syn=T’.inh

             F->id                                   F.val=id.lexval

从给定的语法规则(产生式)可以看出,inh 是继承属性,syn 是合成属性

<小时/>

进一步阅读:Attribute Grammars .

关于parsing - 综合和继承属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29576896/

相关文章:

Java:在 E4X 中解析 XML 的方法?

.net - 警告 : "Using the iteration variable in a lambda expression may have unexpected results"

c - 使用 clang AST 将表达式替换为宏

regex - 什么是用于删除换行符的跨平台正则表达式?

c - K&R - 递归下降解析器 - strcat

python - python 中的通用行语法解析器

c# - Visual Studio 编译器可以编译,但 ReSharper 显示编译错误

C# 编译器错误?用于 Expression 中只写属性的对象初始值设定项语法使 csc 崩溃

c# - 有没有办法直接受益于 Roslyn C# 编译器的 AST?

groovy - 寻找 Groovy @Mixin 不破坏封装的解决方案