2015-03-05 2 views
0

Я смотрю в файл 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 не может быть ничем, что начинается с верхнего регистра.

Я смотрю правильное правило грамматики или что-то еще происходит в этом файле?

ответ

2

В исходном синтаксисе OCaml должен быть обратный ход. Похоже, что ваш пример приведен в синтаксисе OCaml revised.

Смежные вопросы