The syntax does not seem to produce the expression “S (3, 4)” in the context of the declaration “type w = S of int * int”.
The rule: expr ::= constr expr might suggest that expr could be a tuple, but then “let u = 4, 8 in S u” should be legal but ocaml 4.00.1 rejects it.
One might argue that the syntax does produce “S (3, 4)” and that is all that required.
There is a broadly followed pattern of attaching semantics to BNF productions and the OCaml manual follows this pattern, except here.
Bug ID = 0005883