# Module Parser

    module Parser: sig .. end

    type token =

`|` | `AMPERAMPER`
`|` | `AMPERSAND`
`|` | `AND`
`|` | `AS`
`|` | `ASSERT`
`|` | `BACKQUOTE`
`|` | `BANG`
`|` | `BAR`
`|` | `BARBAR`
`|` | `BARRBRACKET`
`|` | `BEGIN`
`|` | `CHAR of `char``
`|` | `CLASS`
`|` | `COLON`
`|` | `COLONCOLON`
`|` | `COLONEQUAL`
`|` | `COLONGREATER`
`|` | `COMMA`
`|` | `CONSTRAINT`
`|` | `DO`
`|` | `DONE`
`|` | `DOT`
`|` | `DOTDOT`
`|` | `DOWNTO`
`|` | `ELSE`
`|` | `END`
`|` | `EOF`
`|` | `EQUAL`
`|` | `EXCEPTION`
`|` | `EXTERNAL`
`|` | `FALSE`
`|` | `FLOAT of `(string * char option)``
`|` | `FOR`
`|` | `FUN`
`|` | `FUNCTION`
`|` | `FUNCTOR`
`|` | `GREATER`
`|` | `GREATERRBRACE`
`|` | `GREATERRBRACKET`
`|` | `IF`
`|` | `IN`
`|` | `INCLUDE`
`|` | `INFIXOP0 of `string``
`|` | `INFIXOP1 of `string``
`|` | `INFIXOP2 of `string``
`|` | `INFIXOP3 of `string``
`|` | `INFIXOP4 of `string``
`|` | `INHERIT`
`|` | `INITIALIZER`
`|` | `INT of `(string * char option)``
`|` | `LABEL of `string``
`|` | `LAZY`
`|` | `LBRACE`
`|` | `LBRACELESS`
`|` | `LBRACKET`
`|` | `LBRACKETBAR`
`|` | `LBRACKETLESS`
`|` | `LBRACKETGREATER`
`|` | `LBRACKETPERCENT`
`|` | `LBRACKETPERCENTPERCENT`
`|` | `LESS`
`|` | `LESSMINUS`
`|` | `LET`
`|` | `LIDENT of `string``
`|` | `LPAREN`
`|` | `LBRACKETAT`
`|` | `LBRACKETATAT`
`|` | `LBRACKETATATAT`
`|` | `MATCH`
`|` | `METHOD`
`|` | `MINUS`
`|` | `MINUSDOT`
`|` | `MINUSGREATER`
`|` | `MODULE`
`|` | `MUTABLE`
`|` | `NEW`
`|` | `NONREC`
`|` | `OBJECT`
`|` | `OF`
`|` | `OPEN`
`|` | `OPTLABEL of `string``
`|` | `OR`
`|` | `PERCENT`
`|` | `PLUS`
`|` | `PLUSDOT`
`|` | `PLUSEQ`
`|` | `PREFIXOP of `string``
`|` | `PRIVATE`
`|` | `QUESTION`
`|` | `QUOTE`
`|` | `RBRACE`
`|` | `RBRACKET`
`|` | `REC`
`|` | `RPAREN`
`|` | `SEMI`
`|` | `SEMISEMI`
`|` | `SHARP`
`|` | `SHARPOP of `string``
`|` | `SIG`
`|` | `STAR`
`|` | `STRING of `(string * string option)``
`|` | `STRUCT`
`|` | `THEN`
`|` | `TILDE`
`|` | `TO`
`|` | `TRUE`
`|` | `TRY`
`|` | `TYPE`
`|` | `UIDENT of `string``
`|` | `UNDERSCORE`
`|` | `VAL`
`|` | `VIRTUAL`
`|` | `WHEN`
`|` | `WHILE`
`|` | `WITH`
`|` | `COMMENT of `(string * Location.t)``
`|` | `DOCSTRING of `Docstrings.docstring``
`|` | `EOL`

    val implementation : (Lexing.lexbuf -> token) -> Lexing.lexbuf -> Parsetree.structure

    val interface : (Lexing.lexbuf -> token) -> Lexing.lexbuf -> Parsetree.signature

    val toplevel_phrase : (Lexing.lexbuf -> token) -> Lexing.lexbuf -> Parsetree.toplevel_phrase

    val use_file : (Lexing.lexbuf -> token) ->
           Lexing.lexbuf -> Parsetree.toplevel_phrase list

    val parse_core_type : (Lexing.lexbuf -> token) -> Lexing.lexbuf -> Parsetree.core_type

    val parse_expression : (Lexing.lexbuf -> token) -> Lexing.lexbuf -> Parsetree.expression

    val parse_pattern : (Lexing.lexbuf -> token) -> Lexing.lexbuf -> Parsetree.pattern