package nice_parser

  1. Overview
  2. Docs

Pass your parser/lexer to this functor to obtain a nicer interface, without having to write boilerplate code.

Parameters

module P : RAW_PARSER

Signature

Types

Inherited from RAW_PARSER.

type token = P.token
type result = P.result

Exceptions

Nice exceptions include the location at which an error occured. A nice ParseErrror also includes the token which caused the parser to choke, which can be useful for debugging.

exception LexError of {
  1. msg : string;
  2. loc : Location.t;
}
exception ParseError of {
  1. token : token;
  2. loc : Location.t;
}
val pp_exceptions : unit -> unit

Registers a pretty printer for LexError and ParseError. This results in colorful error messages including the source location when errrors occur. With OCaml >= 4.08, the pretty printer will also quote the problematic location in the soure code and underline the error location, like so:

File "examples/illegal.katbb", line 1, characters 10-17:
1 | this!; is illegal!; isntit?
              ^^^^^^^
Error: [parser] unexpected token

Parsing

val parse_string : ?pos:Lexing.position -> string -> result
val parse_chan : ?pos:Lexing.position -> in_channel -> result
val parse_file : string -> result