I don't know where it is written that a parser must be single staged. This may be common. This may be good practice. I agree this keeps the parser implementation simpler, esp, the buffer managment since you need not recurse. It does not IMHO simplfy anything conceptually however.
Recursion is no great conceptual cost and often adds great power.
Trees are evrywhere as your first cut at YML during the start of the SML-DEV showed. None of these is perfect for every situation. Obviously one must have a rule to deal with the exemplary situation. All rights reserved.