Skip to content

Compiler v1.7

Compare
Choose a tag to compare
@Victor-Y-Fadeev Victor-Y-Fadeev released this 21 Jan 03:15
· 2834 commits to master since this release

Созданы и интегрированы изолированные интерфейсы взаимодействия со следующими таблицами:

  • Таблица памяти mem
  • Таблица процессов инициализации iniprocs
  • Таблица функций functions
  • Таблица идентификаторов identab
  • Таблица режимов modetab
  • Таблица представлений reprtab

Добавлен новый интерфейс взаимодействия с деревом (в режиме обратной совместимости):

node node_get_root(syntax *const sx);
node node_get_child(node *const nd, const size_t index);
node node_get_next(node *const nd);

size_t node_get_amount(const node *const nd);
int node_get_type(const node *const nd);
int node_get_arg(const node *const nd, const size_t index);

int node_set_type(node *const nd, const int type);
int node_add_arg(node *const nd, const int arg);
int node_set_arg(node *const nd, const size_t index, const int arg);
node node_set_child(node *const nd);

int node_is_correct(const node *const nd);

Проведен рефакторинг сканера:

  • Считыватель лексем разбит на более мелкие функции
  • Добавлено распознавание новых ошибок и "восстановление" после них
  • Вынесены общие для компилятора и препроцессора функции:
    • utf8_is_letter
    • utf8_is_digit
    • utf8_is_power
  • Исправлены множественные ошибки сегментации
  • Исключено использование exit функции (полный переход на статус коды)

Системные улучшения:

  • Удалены все использования оператора goto из кода
  • Добавлена поддержка кодировки CP866 для ОС Windows
  • Добавлено тестирование Debug сборок и обработка полного спектра статус кодов
  • Обновлена система сборки CMake:
    • Добавлен -s флаг для удаления информации об исходном коде из исполняемого файла
    • Включены оптимизации 2 уровня для Release сборок (скорость исполнения)
    • Отключена работа assert для Release
    • Отключены все оптимизации для Debug сборок
    • Исправлена линковка для Linux и macOS
      • Добавлен поиск динамических библиотек в той же папке