The direct conversion from fmt3 to HTML has a number of annoying limitations. Instead of trying to hack everything into the fmt3 code, it makes more sense to start with a more robust parser that generates an abstract representation of the post before converting it into HTML.
Some (but not all goals):
- allow commands to have more varied number of required and optional arguments
- allow commands to interpret different arguments in different ways (e.g., \link should interpret the URL as a raw-ish string but the optional label as fmt4 markup)
- allow proper begin/end matching of environments
- generate inline error/warning boxes about syntax and other errors when looking at post previews