言語によって定義されたソース コードをアセンブリに変換する非常に単純なトランスレータを作成したいと考えています。AST を生成するレクサーとパーサーは既に作成しています。ツリーをトラバースし、動的スコープを使用して宣言された変数などを追跡するツリー文法を作成しました。
問題は、複数のパスでツリーをトラバースする必要があるため、1 つのツリー文法を使用して単純にトランスレータを作成できないことです。最初のパスは意味解析で、2 番目のパスはアセンブリへの変換です。各パスは異なるツリー文法になります。
私の質問は、意味解析パスからのノード固有の情報をツリーに保存して、翻訳パスにアクセスできるようにするにはどうすればよいですか? ツリーに注釈を付けるにはどうすればよいですか? ツリー内の個々のノードに情報を割り当てる方法はありますか? このためにカスタム ツリー ノード クラスを作成する必要がありますか?