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.
Comment #1 by smjg — 2007-04-20T20:47:46Z
Created attachment 141
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.)