Таблицы символов

В проекте таблица символов разделена на таблицу переменных и таблицу функций.

Таблица функций

struct Function {
    TypeId returnType;
    std::vector<TypeId> argumentsTypes;
    unsigned useCount = 0;
};

using FunctionsTable = std::map<std::string, Function>;

Сама таблица функций представляет ассоциативный контейнер, где ключом служит имя функции, а значением структура типа Function. Поля класса:

  • returnType – тип значения, возвращаемого функцией;

  • argumentsTypes – вектор, содержащий в себе типы параметров;

  • useCount – счетчик, контролирующий количество использований функции.

Таблица переменных

struct Variable {
    TypeId type;
    struct {
        bool modified = false;
    } attributes;

};

using VariablesTable = std::map<std::string, Variable>; 

Сама таблица переменных представляет ассоциативный контейнер, где ключом служит имя переменной, а значением структура типа Variable. Поля класса:

  • type – тип переменной;

  • attributes – структура, содержащая в себе атрибуты переменных.

Назад