artifacts: add calculators/ — the 30 built calculators (5/variant) + machine-docs + git logs
This commit is contained in:
@ -0,0 +1,33 @@
|
||||
# JOURNAL — phase eval
|
||||
|
||||
## 2026-06-15 — Initial implementation
|
||||
|
||||
### What I built
|
||||
- `calc/evaluator.py`: `evaluate(node)` walks Num/BinOp/Unary AST nodes recursively. SLASH branch guards `right == 0` and raises `EvalError("division by zero")`.
|
||||
- `calc.py`: CLI entry point. `fmt(value)` converts whole-valued floats to int string. Catches `LexError|ParseError|EvalError`, prints to stderr, exits 1.
|
||||
- `calc/test_evaluator.py`: 11 tests across 3 classes covering D1–D3.
|
||||
|
||||
### Local verification
|
||||
|
||||
```
|
||||
$ python -m unittest -q
|
||||
----------------------------------------------------------------------
|
||||
Ran 50 tests in 0.003s
|
||||
|
||||
OK
|
||||
|
||||
$ python calc.py "2+3*4"
|
||||
14
|
||||
$ python calc.py "(2+3)*4"
|
||||
20
|
||||
$ python calc.py "7/2"
|
||||
3.5
|
||||
$ python calc.py "4/2"
|
||||
2
|
||||
$ python calc.py "1/0"
|
||||
error: division by zero (stderr, exit 1)
|
||||
$ python calc.py "1 +"
|
||||
error: unexpected token 'EOF' (stderr, exit 1)
|
||||
```
|
||||
|
||||
All D1–D5 verified locally.
|
||||
Reference in New Issue
Block a user