#!/usr/bin/env python3 """Top-level CLI: python calc.py "" Prints the result to stdout and exits 0 on success. Prints an error message to stderr and exits 1 on any parse / eval error. """ import sys from calc.lexer import tokenize, LexError from calc.parser import parse, ParseError from calc.evaluator import evaluate, EvalError def main() -> None: if len(sys.argv) != 2: print("usage: calc.py ", file=sys.stderr) sys.exit(1) expr = sys.argv[1] try: result = evaluate(parse(tokenize(expr))) print(result) except (LexError, ParseError, EvalError) as exc: print(f"error: {exc}", file=sys.stderr) sys.exit(1) if __name__ == "__main__": main()