2 Syntax Model
The syntax of a Rhombus program is defined by
A read pass converts characters to an intermediate abstract represented as a syntax object. This surface syntax is shrubbery notation as defined in Shrubbery Notation.
A parse pass processes a syntax object to produce one that is fully parsed and ready for evaluation. This parsing, in turn, interleaves expansion to trigger macro rewrites and enforestation to detect and resolve precedence among operators. The expansion and enforestation processes are extensible within Rhombus itself, so that the syntax of a Rhombus program can be customized. Binding information in a syntax object drives parsing, and when the expansion step encounters a binding form, it extends syntax objects for subexpressions with new binding information.