nice_parser

Nice parsers without the boilerplate
Legend:
Library
Module
Module type
Parameter
Class
Class type
Library nice_parser
Module Nice_parser . Make

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 {
msg : string;
loc : Location.t;
}
exception ParseError of {
token : token;
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