985 B
985 B
JOURNAL-eval.md
Session 1
Implementation
Created three files:
calc/evaluator.py—evaluate(node)walks Num/BinOp/Unary nodes. Division uses Python/(true division). After division, normalizes whole-valued floats to int viaint(result).calc/test_evaluator.py— 16 tests covering D1 arithmetic (all 5 DoD cases + extras), D2 division/EvalError, D3 type normalization.calc.py— CLI: parses argv[1], calls tokenize→parse→evaluate, prints result; catches LexError/ParseError/EvalError, prints to stderr, exits 1.
Verification run
$ python -m unittest -q
Ran 65 tests in 0.001s
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" 2>&1; echo "exit: $?"
error: division by zero
exit: 1
$ python calc.py "1 +" 2>&1; echo "exit: $?"
error: unexpected end of input
exit: 1
All outputs match DoD specs. 65 tests (lex + parse + eval) pass, zero failures.