AST ツリーの最後のノードにはセマンティック アナライザーの翻訳の情報が必要ですか、それとも最後以外のノードにもこの情報を含めることができますか?
3 に答える
3
あなたの質問は十分に形成されていないようです。
「最後のノード」と書いた「葉のノード」を意味すると仮定すると、意味情報を葉だけでなく内部のノードにも関連付けることができます。
簡単な例は、「この式の型」です。リテラル TRUE を含むリーフ ノードには、それに関連付けられた式タイプ「boolean」があることは明らかです。「if e then 2.7 else 9.3 endif」という式には対応する AST があり、if 式に対応する内部ノードには「float」の関連型があります。
提案できる「セマンティック」プロパティはたくさんあります。「変数 X、Y、Z を使用する」、「副作用がない」、「並列サブプロセスをフォークする」などです。いずれも内部ツリー ノードに適用される可能性があります。
于 2011-08-31T05:22:25.027 に答える
0
すべての AST ツリーはセマンティック情報を格納する必要があります。
しかし、「リーフ ノード」(変数、値、オペランドを参照するノード) が、「ブランチ ノード」または「非リーフ ノード」よりも追加の情報または異なる情報を格納する可能性があることは事実です。
于 2011-09-02T16:28:26.673 に答える
0
私があなたの質問を正しく理解していれば、AST では、リーフ ノードだけでなく、内部ノードもセマンティック情報を運ぶことができます。
于 2011-08-31T05:18:26.143 に答える