# DECISIONS (append-only, shared) ## D-001: Token representation Token is a dataclass with `kind: str` and `value` (int | float | None). NUMBER tokens carry their parsed numeric value; operator/paren tokens carry None. EOF carries None value. Rationale: parser phases can pattern-match on kind and directly use value without re-parsing. ## D-002: Integer vs float distinction If a number string contains '.' it is parsed as float, otherwise int. Edge cases: '.5' → float(0.5), '10.' → float(10.0), '42' → int(42).