With nested Bb Codes, this system would be no difficult to elaborate. But it would be easy to check if the XenForo default Bb Codes have a content. If not => don't parse. For the Custom Bb Codes, this should be let to the Bb Code creator. Some might need to create BbCode without content, but just using options (don't ask me why, it's just a eventuality).