Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cpp-spreadsheet

cpp-spreadsheet is a Yandex.Practicum C++ course project implementing an electronic spreadsheet with parsed formulas, cell dependencies, cycle detection, caching, and recalculation.


Features

  • 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.

Architecture

  • sheet owns cells and coordinates updates.
  • cell stores text or formula state and manages cached values.
  • formula and the generated ANTLR parser build and evaluate formula expressions.
  • Dependency tracking invalidates affected caches and rejects circular references.

Build notes

  • Requires a C++17-compatible compiler, CMake, Java, and ANTLR 4.10.1.
  • The included CMake configuration expects ANTLR_DIR to point to antlr-4.10.1-complete.jar and a local antlr4_runtime source directory.
  • Compiler paths in spreadsheet/CMakeLists.txt are environment-specific and may need adjustment before building.

About

Yandex.Practicum C++ course project: spreadsheet engine with parsed formulas, dependency tracking, cycle detection, caching, and recalculation.

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages