is there a name for a parsing stage that's not quite lexing but also not quite tree building? so 1+(2+3) becomes neither Add(Literal(1), Add(Literal(2), Literal(3)) nor [Literal(1), Operator(+), OpenParen, Literal(2), Operator(+), Literal(3), CloseParen] but [Literal(1), Operator(+), Parens([Literal(2), Operator(+), Literal(3)])]?
@RubenVerg Not off the top of my head, but it does remind me of the TokenStreams used by Rust's procedural macros (and therefore presumably within the Rust compiler one way or another)
as in those represent the exact same thing your mystery-name parsing stage also outputs
according to the post, the stage's name would be "Reading": turning tokens into trees (checking that "things match up and nest properly"), before Parsing those trees into the actual syntax tree (also, macros are processed here)
also, from reading about Rhombus, I now remember the term "shrubbery" for the representation produced by reading