Основной класс Semantizer

В программной реализации семантический анализатор представлен в виде класса Semantizer. Содержательная часть объявления класса выглядит следующим образом:

class Semantizer {
  public:
    Semantizer() = delete;
    Semantizer(const Semantizer &) = delete;
    Semantizer(Semantizer &&) = delete;
    ~Semantizer() = delete;

    static void process(const Program &program);
};

Точкой входа является метод process. Он выполняет следующее:

  1. Вызывает метод verify<ModuleOp> на корневом узле входного дерева операций. Далее аналогичным образом осуществляется рекурсивная проверка инвариантов на всех дочерних узлах.

  2. Создает дерево доминирования от корневого узла дерева операций, инстанцируя DominanceTree. С помощью него проводится проверка доминирования всех операций в дереве.

Назад