These functions turn a tree of ParseTokens (a scanned and parsed expression) into a list
of CompareNodes that are wired together through their pass/fail jump labels.
When a child node finishes its processing it can either have passed or
failed and needs a destination to jump to (another compare-node or the
pass/fail blocks).