我想创建一个非常简单的翻译器,将语言定义的一些源代码翻译成汇编。我已经创建了生成 AST 的词法分析器和解析器。我创建了一个树语法,它遍历树并使用动态范围跟踪诸如声明的变量之类的东西。
问题是我不能简单地使用一种树语法创建翻译器,因为我需要多次遍历树。第一遍是语义分析,第二遍是翻译成汇编。每遍都是不同的树语法。
我的问题是,如何从树中的语义分析传递中保留特定于节点的信息,以便我可以访问它以进行翻译传递?如何注释树?有没有办法可以将信息分配给树中的各个节点?我需要为此创建一个自定义树节点类吗?