Wikitext is impossible to formulate in EBNF (and therefor BNF too). That's because BNF can only handle languages falling under certain constraints, and Wikitext fails these contraints. To prove this:
The operating constraints are:
1. there are a limited number of basic syntax constructs 2. all valid syntax is either basic syntax, or complex syntax built from basic syntax which it can be broken down into
It's clear that BNF can't formulate outside these constraints because if (1) was false, you'd never get to the end of the specification, and (2) can't be false simply because it restates (1) but also allows for languages with nested syntax. If it were false that the nested/complex syntax could be broken down into basic syntax, then that complex syntax would simply BE basic syntax, and you are left with just rule (1).
Wikitext fails these constraints because the construct:
**bullet 1 **bullet 2
which are two successive level 2 bullet points, can't be broken down into less complex syntax. Therefore the "**" construct for a level 2 bullet point must be BASIC syntax, not complex syntax. But seen as Wikitext, just like XHTML etc., allows for bulleted lists with infinite nesting levels, there would be an infinite number of basic constructs (for level 2 list items, level 3, 4, 5, 17, 234, etc). We thus fail constraint number (1).
To prove that the above Wikitext can't be broken down, observe the following. If there is to be any breaking down of a level 2 bullet point, it will be comprised in some way of two syntax constructs for level 1 bullet points. For instance, the XHTML version of a level 2 bullet, "<ul><li><ul><li>level 2 bullet</li></ul></li></ul>", involves two sets of "<li>...</li>" pairs, each of which is the syntax for a level 1 bullet point. Now, whilst the Wikitext version, "**bullet" can similarly be broken down into a level 1 bullet containing a second level 1 bullet (*[*..]), this doesn't hold for the case where we have two successive level 2 bullets. "**bullet <newline> **bullet" means "ONE level 1 bullet, containing TWO level 2 bullets". But our previous breakdown of the "**" construct would have to interpret this as "one level 1 bullet containing ONE level 2 bullet, followed by ANOTHER level 1 bullet, containing a level 2 bullet." This is wrong. Our problem is simply that the syntax for adding a bullet at the SAME level has changed now that we're dealing with another level of bullets - at level 1, another bullet at the same level is "*", but at level 2, another bullet at the same level is "**" - but this means that each level of bullets has its own syntax, meaning each bullet level construct is a basic construct, and therefore that there are an infinite number of constructs.
This is the only major problem that makes Wikitext beyond BNF. To express Wikitext in BNF, we'd have to introduce a limitation on the number of levels of bullet points you could use - this might, of course, not be a problem. However, we would still be stuck on the yet trickier problem of expressing in BNF nested lists of different types. Thus if we wish to have an unordered bullet containing an ordered bullet containing an unordered bullet ("*#*"), the syntax for a further unordered bullet at the same level changes AGAIN to "*#*" rather than the expected "***". There is thus no hope of defining Wikitext in BNF unless we exhaustively specify every combination of bulleting constructs as basic constructs, but this would quickly become too long a specification to be useful as a markup validator. We have 4 list types (definition, ordered, unordered, and mere indentation) that can be combined - going up to just ten levels, we have 1,048,576 basic constructs.
What this means is that we can't use a basic EBNF parser in all the usual useful ways. We need new solutions.