After carefully reviewing the markup for reStructuredText, Textile and Google Talk, I've come to the conclusion that characters which precede inline markup are not symmetric to characters which follow it. To illustrate:
1. Google Talk:
I've initially tried to model ESME's simplified markup after Google Talk. Considering it hardly has any characters preceding inline markup, I'm OK with having none for ESME and letting markup end with any punctuation.
One way to solve the trailing space problem is to make punctuation a part of the inline markup, in which case it will appear before the closing space. What do you think, should I commit my current implementation?
In the meantime, I will experiment with a couple of different variants.