【问题标题】:AST trees semantic analyzerAST 树语义分析器
【发布时间】:2011-08-31 05:05:55
【问题描述】:

AST树的最后节点必须有语义分析器的翻译信息,或者非最后节点也可以有这个信息?

【问题讨论】:

    标签: compiler-construction tree abstract-syntax-tree semantic-analysis


    【解决方案1】:

    您的问题似乎不是很好。

    假设您在写“最后一个节点”的地方指的是“叶子节点”,是的,您不仅可以将语义信息与叶子相关联,还可以将语义信息与内部节点相关联。

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        但是,“叶节点”(引用变量、值、操作数的节点)确实可能存储一些与“分支节点”或“非叶节点”不同的信息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-08-23
          • 1970-01-01
          • 1970-01-01
          • 2011-12-16
          • 1970-01-01
          • 2017-07-13
          相关资源
          最近更新 更多