497 B
497 B
JOURNAL — phase eval
Implementation notes
evaluate()walks the AST recursively using isinstance checks on Num/BinOp/Unary._coerce()converts whole-valued floats to int (e.g.4/2 → 2).- Division by zero raises
EvalError(not the bareZeroDivisionError). calc.pyCLI catchesLexError,ParseError,EvalErrorand prints to stderr with exit 1.- Test suite has 49 total tests (lex + parse + eval); CLI tests use subprocess to exercise the full pipeline end-to-end.