- Turned one-field structs into enum fields, shedding ~80 loc
- rustfmt tweaks
Remove unused imports.
Lexer:
- Rewritten with peekable iterators
- Simplifed further
- Split tests into a separate file
Seven new comparison operators:
>
<
!
==
!=
>=
<=
- Lexer - simplify parsing of operators with equality
- Removed unused import
- New built-in functions
log(base, x)
log_10(x)
ln(x)
floor(x)
ceil(x)
- Implemented new constants
PI
E
(Euler's number)INFINITY
NEG_INFINITY
- Support for word variables
- e.g. a var named
"quantity"
- e.g. a var named
- Breaking: parsing now requires scope for disambiguation
- Added
scope!
macro for easier variable setup - Implemented Error types and messages
- Fixed errors when evaluating expr with multiple scopes
- Cleaned up macros
- Nuked
unwrap()
across codebase - Improved error handling
- Added support for custom functions
- Set up CI
- Fixed implicit multiplication edge-cases
- Implemented unary negative number support, like
-x
- Added eight builtin functions