An open API service indexing awesome lists of open source software.

https://github.com/gleor/cpp-spreadsheet

Электронная таблица
https://github.com/gleor/cpp-spreadsheet

antlr4 cmake cpp

Last synced: 11 months ago
JSON representation

Электронная таблица

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