There are a few errors and inconsistencies in how the BNF in the spec is formatted, which are noticeable on the Statements page. 1. British and American spellings are mixed, even in multiple occurrences of the same syntactic element. This instance should suffice to illustrate: NonEmptyStatement: LabeledStatement [...] LabelledStatement: Identifier ':' NoScopeStatement 2. While still on the subject of Label(l)edStatement, no other bit of BNF in the D spec (that I've found) has a token delimited by single quotes. They shouldn't be here either. 3. DefaultStatement: default: Statement There should be a space between "default" and ":" to reflect that they are two separate tokens. More trivial are instances in ForStatement, where the omitted spaces separate a token from a nonterminal: ForStatement: for (Initialize Test; Increment) ScopeStatement versus for ( Initialize Test ; Increment ) ScopeStatement 4. ForeachStatement: Foreach (ForeachTypeList; Aggregate) NoScopeNonEmptyStatement has, in addition to the same imperfection as the above, the open parenthesis in italics instead of bold. 5. Many of the link targets are malformed, for example: <pre class="bnf"><a name=#Statement><i>Statement</i></a>: Firstly, this is syntactically invalid HTML - '#' isn't one of the characters that may be included in an attribute value without quotes. But that's an aside - target names shouldn't have the '#' at all. The '#' comes into play only in URLs and hrefs. Consequently, several of the links between parts of the page don't work.
Created attachment 141 [details] Patch to fix points 1-4 Point 5 has been fixed (either that or gone away by itself). This patch fixes what remains. (There may be a discrepancy in the file sizes - this is because TextPad removed whitespace from blank lines, which hasn't been included in the patch.)
Why is it taking forever to fold in this fix???
Because it was overlooked. Sorry about that.
Fixed dmd 1.047 and 2.032