我知道什么是Parse Tree以及什么是抽象树但是在阅读了一些关于Annotated Parse Tree之后(因为我们绘制了与Parse Tree相同的详细树),我觉得它们与Parse Tree相同。 / p>
任何人都可以详细解释这三者之间的差异吗?
感谢。
答案 0 :(得分:2)
AN ANNOTATED PARSE TREE是一个解析树,显示每个节点的属性值。在节点处计算属性值的过程称为注释或装饰解析树。
例如:参考下面的链接,它是3 * 5 + 4n
的带注释的解析树答案 1 :(得分:1)
解析树表示(程序的)源文本如何被分解以证明它与语言的语法相匹配。树中的内部节点是语言语法非终结符(BNF规则左手侧令牌),而树的叶子是语法规则所需顺序的语法终端(所有其他令牌)。
带注释的解析树是一种关于程序的各种事实已附加到解析树节点的解析树。例如,可以计算每个子树提到的标识符集,并将该集附加到子树。编制者必须在某处存储他们收集的有关该计划的信息;这是一个存储信息的便利位置,可以从树中派生出来。
activation tree is conceptual snapshot of the result of a set of procedures calling one another at runtime。这种树中的节点代表已经运行的程序;儿童代表其父母所称的程序。
因此,(注释的)解析树和激活树之间的关键区别在于它们用来表示:编译时属性与运行时属性。
答案 2 :(得分:0)
带注释的解析树允许您将整个编译集成到解析树结构中。如果我没有弄错的话,CM Modula-3会这样做。
要构建APT,只需声明节点的抽象基类,将每个生成子类化为子类,并将子节点声明为字段变量。