Standalone zero-dependency Markdown block tokenizer that splits source into 11 typed token dataclasses with line numbers for rendering and lint analysis.
Splits Markdown source into a flat list of typed block tokens. Each token carries 1-based start and end line numbers so the caller knows exactly which source lines produced it.
No imports from selfdoc -- this module is designed for reuse outside the project.