我正在重写编译器的IR,其中IR类和算法都在不断变化。当前编译器至少有2个当前IR,它们用于我要合并的不同阶段。首先,我们有一个AST层次结构,它基于一个Node抽象基类和一个与之关联的访问者模式。接下来,我们有一个单独的语义层次结构,它使用各种类(我可能可以全部rebase,这样Node也是所有类的最低级别)。随着我们认识到更多的特化,语义层次可能会增长。这些类有一个单独的访问者模式。为执行生成的程序创建了2个“可执行”IR。我的目标是合并AST和语义层次结构,并合并它们生成的可执行形式。这将减少由于两种形式的不一致而导致的错误数量。但是,正如我所指出的,语义层次结构很可能会添加新的