Coarse per-physical-line classification used by the code-ownership attribution pass in
sloc-core. Deliberately three-way (blame is physical-line based, and the ownership view
only needs code / comment / blank) so that per-author tallies sum exactly to a file’s
physical line count. This is not the IEEE policy classifier — it does not collapse
continuation lines or split the fine-grained mixed/docstring buckets.
Classify every physical line of text (for language) into exactly one LineCategory,
returning one entry per physical line in source order. Reuses the same lexical scanner as
analyze_text so block-comment / string state is tracked identically, but assigns a
category to each physical line without continuation collapsing — keeping the result aligned
one-to-one with git blame’s per-line output. Blank lines inside a block comment are
reported as Comment, matching the IEEE default.