## lab2主要分为3个阶段: 1. [sema](/To_do_list/Sema.md)。 检查语义约束。通过修改[sem文件夹](/src/sem/Sema.cpp)中的SemaVisitor实现。具体来说,SemaVisitor继承自SysYBaseVisitor类。而antlr4依据SysY.g4生成的这个SysYBaseVisitor类里面已经对各种规则(比如,规则compUnit)实现了visitor方法(比如visitCompUnit)。为了达到我们的目的,即检查各种语义约束,我们需要利用虚函数的多态,重写这个方法。具体来说,这一阶段需要实现的各种约束见[SysY语义约束](/To_do_list/Sema.md)。 2. [ir](/To_do_list/ir.md)。 3. [irgen](/To_do_list/irgen.md)。