OCaml中多态变量类型的语法

时间:2015-03-05 02:02:44

标签: syntax 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不能是以大写字母开头的任何内容。

我是否正在查看正确的语法规则或此文件中还有其他内容?

1 个答案:

答案 0 :(得分:2)

在最初的OCaml具体语法中,必须有一个反引号。看起来您的示例采用OCaml revised语法。