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