cpp-spreadsheet is a Yandex.Practicum C++ course project implementing an electronic spreadsheet with parsed formulas, cell dependencies, cycle detection, caching, and recalculation.
- Cell Management: Handle data and formula cells with dynamic updates.
- Formulas: Support for mathematical expressions and cell references using custom parsing and Abstract Syntax Trees (ASTs).
- Dependency Resolution: Handles cyclic dependencies with detailed error handling.
- Optimized Recalculation: Efficient recalculation of dependent cells.
- Design Documentation: Includes PDFs on cache invalidation, cyclic dependencies, and formula evaluation.
sheetowns cells and coordinates updates.cellstores text or formula state and manages cached values.formulaand the generated ANTLR parser build and evaluate formula expressions.- Dependency tracking invalidates affected caches and rejects circular references.
- Requires a C++17-compatible compiler, CMake, Java, and ANTLR 4.10.1.
- The included CMake configuration expects
ANTLR_DIRto point toantlr-4.10.1-complete.jarand a localantlr4_runtimesource directory. - Compiler paths in
spreadsheet/CMakeLists.txtare environment-specific and may need adjustment before building.