assemble tag expression into binary tree, respecting precedence