Контекст для анализатора

Для реализации модуля создан класс, содержащий вспомогательные структуры данных:

struct OptimizerContext {
    std::forward_list<VariablesTable *> variables;
    std::forward_list<std::unordered_map<std::string, VariableValue>> values;
    FunctionsTable &functions;
    Node::Ptr root;
};

using VariableValue = std::variant<long int, double>;

Поля класса:

  • variables – односвязный список, содержащий в себе указатели на таблицы переменных;

  • values – односвязный список, содержащий в себе ассоциативные контейнеры, где ключом является имя переменной, а значением объединение с безопасным типом;

  • functions – ссылка на таблицу функций;

  • root – умный указатель, содержащий в себе корень синтактического дерева.

Назад