Make sub-expression linear-recursive

It's less efficient in the long run, but it's the only way I can
currently think of to recursively handle operator precedence without
getting into some really nasty string manipulation.
Add a debug macro