Для индивидуальных задач заказчика был необходим легковесный аналог существующих решений (лист таблицы Microsoft Excel \ Google Sheets) полностью реализованный на C++ с упором на формульную часть.
- Реализовал парсинг формул и вычислительную логику с использованием ANTLR (лексер, парсер, обход AST на C++).
- Реализовал поиск циклических зависимостей с оптимизацией, обеспечивающей проход по каждой ячейке только один раз через DFS.
- Оптимизация инвалидации кэша с проходом по ячейкам только один раз реализована через BFS.
- Сборка - CMake.
Разработал эффективный, легковесный и нетребовательный к ресурсам вариант электронной таблицы, поддерживающий избранные заказчиком функции:
- Парсинг текста и формул;
- Добавление новой ячейки, гарантирующее консистентное состояние таблицы
- Оптимизация таблицы при помощи кэша формульных ячеек.
- Создание ссылок, исключая возникновение циклических зависимостей.
- Интерпретация текстовых ячеек для использования в формулах.
- Визуализация возникших исключений, а также данных ячейки \ результата вычислений в виде текста.