$ show sheetsync/NCalc
NCalc is a .NET library for parsing and evaluating mathematical expressions, written in C# and targeting .NET Framework 3.5. It uses ANTLR 3.3 to generate a lexer and parser from a custom grammar, producing an abstract syntax tree (AST) of logical expressions. The library supports arithmetic, logical, bitwise, comparison, and ternary operators, as well as built-in functions (Abs, Sin, Round, etc.) and user-defined functions and parameters via event handlers. It also includes expression caching, error detection, and serialization. The codebase is well-structured for its era, with a clear separation between grammar, domain model, and evaluation logic. However, it is explicitly unmaintained and superseded by a newer version (ncalc/ncalc). The project uses outdated dependencies (ANTLR 3.3, .NET 3.5) and includes binary DLLs, making it unsuitable for modern .NET projects without significant migration effort. The primary value is as a historical reference or for understanding expression evaluator design patterns.
The LLM identified 1 files worth highlighting for reuse:
Implements the Visitor pattern to evaluate parsed expressions. It recursively visits each node type (Binary, Unary, Ternary, Value, Function, Identifier) and computes the result. Demonstrates clean separation of traversal logic from expression structure, and includes lazy evaluation for short-circuiting boolean operators. The visitor also handles type promotion via a helper class (Numbers) and supports custom function/parameter callbacks. This component is a textbook example of the Visitor pattern applied to expression trees and could be extracted as a reference implementation for similar evaluators.