Я смотрю в файл OCaml, и я подозреваю, что это должно быть полиморфный тип переменной (я не знаю, OCaml, так что, может быть, очень выключен):синтаксис полиморфного типа переменной в OCaml
type loc = Loc.t
and meta_bool =
[ BTrue
| BFalse
| BAnt of string ]
and rec_flag =
[ ReRecursive
| ReNil
| ReAnt of string ]
Однако , в соответствии с синтаксисом OCaml
polymorphic-variant-type
::= [ [ | ] tag-spec { | tag-spec } ]
∣ [> [ tag-spec ] { | tag-spec } ]
∣ [< [ | ] tag-spec-full { | tag-spec-full } [ > { `tag-name }+ ] ]
Внутри []
если мы не будет использовать обратные одиночные кавычки, мы не можем использовать прописной идентификатор. tag-spec
не может быть ничем, что начинается с верхнего регистра.
Я смотрю правильное правило грамматики или что-то еще происходит в этом файле?