Twig is a mature, feature-rich template engine for PHP that compiles templates to optimized PHP code. It employs a lexer-parser-compiler pipeline to transform template source into an abstract syntax tree (AST), which is then compiled to executable PHP. The engine emphasizes security through automatic escaping and a sandboxing system, and extensibility via a robust extension system that allows adding custom functions, filters, tests, and token parsers. Twig supports template inheritance, macros, and expressive syntax with features like null-safe operators and arrow functions. The architecture is modular and follows several well-established patterns: a plugin-based expression parser, a decorator-pattern caching system, a visitor pattern for AST manipulation, and an attribute-driven extension registration mechanism (using PHP 8+ attributes). The codebase demonstrates careful attention to extensibility, security, and performance, with comprehensive test coverage and active maintenance. While the project manages significant backward compatibility (notably preparing for Twig 4.0), it maintains a clean separation of concerns and provides reusable components that could be adapted for other projects, such as its chainable cache, expression parser registry, and sandbox security policy.
ExprTk is a header-only C++ library for runtime mathematical expression parsing and evaluation. It provides a complete system for defining mathematical expressions as strings, compiling them into an internal AST representation, and evaluating them with variable values. The library supports scalar, vector, and string types, arithmetic operations, trigonometric functions, logarithms, control structures (if, for, while, switch), user-defined functions, and assignment operations within expressions. It employs sophisticated parsing techniques including constant folding, strength reduction optimizations, and runtime safety checks for vector bounds and loop execution time. The architecture consists of three main components: symbol table (for variables/constants/functions), expression (holding the parsed AST), and parser (compiling expression strings).
Algebrite is a symbolic mathematics library (Computer Algebra System) written in TypeScript. It provides a comprehensive set of operations including symbolic differentiation, integration, polynomial factorization, root finding, matrix/tensor algebra, arbitrary-precision arithmetic, and expression simplification. Internally, it uses an S-expression representation (Cons cells) and a recursive-descent parser to convert string expressions into algebraic trees. The library exposes both a string-based `run()` API for evaluating expressions and direct method calls (e.g., `Algebrite.factor`). It was originally forked from EigenMath and retains some CoffeeScript legacy in test files and debug logging. The codebase is large and monolithic, with many modules tightly coupled through shared global state (the `defs` object). Despite this, the implementation is functional and covers a wide range of mathematical operations, making it suitable for embedding in interactive notebooks or computational tools.