https://github.com/gleor/cpp-spreadsheet
Электронная таблица
https://github.com/gleor/cpp-spreadsheet
antlr4 cmake cpp
Last synced: 11 months ago
JSON representation
Электронная таблица
- Host: GitHub
- URL: https://github.com/gleor/cpp-spreadsheet
- Owner: Gleor
- Created: 2023-11-05T13:42:00.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-02-19T16:15:05.000Z (over 2 years ago)
- Last Synced: 2025-01-05T23:11:48.615Z (over 1 year ago)
- Topics: antlr4, cmake, cpp
- Language: C++
- Homepage:
- Size: 24.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# **Spreadsheet**
## **Описание**
Данный проект представляет собой упрощённую реализацию электронной таблицы (наподобие MS Excel). Она состоит из ячеек, которые могут содержать в себе числовые значения, текст, формулы. Формулы могут содержать не только простые арифметические операции, но и ссылки на другие ячейки. Формулы разбираются при помощи специальной программы ANTLR, которая генерирует код лексического и синтаксического анализаторов, а также код для обхода дерева разбора, на основе которого производятся вычисления. Присутствует возможность вывести значения непустых ячеек (в минимальной печатной области). Предусмотрена проверка ячеек на синтаксические, математические ошибки, а также на наличие циклических зависимостей.
### **Пример использования**
```
auto sheet = CreateSheet();
sheet->SetCell("A1"_pos, "5");
sheet->SetCell("B1"_pos, "9");
sheet->SetCell("A3"_pos, "=A1+B1");
sheet->SetCell("C2"_pos, "=A3*6");
sheet->SetCell("A2"_pos, "=C2-A1*B1/A3");
sheet->PrintValues(std::cout);
```
## **Сборка проекта**
*Установить Java
*Установить ANTLR, выполнив все пункты в разделе Quick Start.
*В файлах FindANTLR.cmake и CMakeLists.txt проверить совпадение версий ANTLR у файла antlr-X.X.X-complete.jar
*Создайть папку с названием "antlr4_runtime" и распаковать в неё скачаный архив.
*Создать папку для сборки и запустить в ней команду cmake --build с CMakeLists.txt.
## **Системные требования**
* C++ 17
* Java
* ANTLR4