|
|
| type-definition | ::= | type typedef { and typedef } |
| typedef | ::= | [type-params] typeconstr-name [type-information] |
| type-information | ::= | [type-equation] [type-representation] { type-constraint } |
| type-equation | ::= | = typexpr |
| type-representation | ::= | = constr-decl { | constr-decl } |
| | | = { field-decl { ; field-decl } } | |
| type-params | ::= | type-param |
| | | ( type-param { , type-param } ) | |
| type-param | ::= | ' ident |
| | | + ' ident | |
| | | - ' ident | |
| constr-decl | ::= | constr-name |
| | | constr-name of typexpr | |
| field-decl | ::= | field-name : poly-typexpr |
| | | mutable field-name : poly-typexpr | |
| type-constraint | ::= | constraint ' ident = typexpr |
|
| exception-definition | ::= | exception constr-name [of typexpr] |
| | | exception constr-name = constr |
exn of exception values. The constructors are declared as
for a definition of a variant type.