Compiler construction AST树语义分析器

Compiler construction AST树语义分析器,compiler-construction,tree,abstract-syntax-tree,semantic-analysis,Compiler Construction,Tree,Abstract Syntax Tree,Semantic Analysis,AST树的最后一个节点必须包含语义分析器的转换信息,或者非最后一个节点也可以包含此信息?如果我正确理解您的问题,在AST中,内部节点也可以包含语义信息以及叶节点。您的问题似乎格式不太好 假设您的意思是“叶节点”,您在其中编写了“最后的节点”,是的,您不仅可以将语义信息与叶关联,还可以将语义信息与内部节点关联 一个简单的例子是“这个表达式的类型”。很明显,包含文本TRUE的叶节点将有一个与之关联的表达式类型“boolean”。表达式“if e then 2.7 else 9.3 endif”具有相

AST树的最后一个节点必须包含语义分析器的转换信息,或者非最后一个节点也可以包含此信息?

如果我正确理解您的问题,在AST中,内部节点也可以包含语义信息以及叶节点。

您的问题似乎格式不太好

假设您的意思是“叶节点”,您在其中编写了“最后的节点”,是的,您不仅可以将语义信息与叶关联,还可以将语义信息与内部节点关联

一个简单的例子是“这个表达式的类型”。很明显,包含文本TRUE的叶节点将有一个与之关联的表达式类型“boolean”。表达式“if e then 2.7 else 9.3 endif”具有相应的AST,而与if表达式对应的内部节点将具有关联的“float”类型


我们可以提出许多“语义”属性:“使用变量X、Y、Z”、“无副作用”、“分叉并行子流程”等。其中任何一个都可能应用于内部树节点。

所有AST树都必须存储语义信息

但是,“叶节点”(引用变量、值、操作数的节点)确实可以存储比“分支节点”或“非叶节点”更多或不同的信息