I think I incidentally found a parser defect that is caused by intereferences of ParserFunctions, table syntax and {{!}}.
{{#if:{{{1|}}}|{{{!}}
{{!}} {{{1|}}}
{{!}}}}}prints } while it should print nothing. Without an if it works. If I add an else part or remove a curly bracket, it works as well, for example
{{#if:{{{1|}}}|{{{!}}
{{!}} {{{1|}}}
{{!}}}|}}or
{{#if:{{{1|}}}|{{{!}}
{{!}} {{{1|}}}
{{!}}}}, which is actually wrong.
If I replace {{!}}} by an template {{!)}} with the content |}, everything works as expected.