Source file ppx_parser.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
open Ppxlib
let ppx_parser_pat = Ast_pattern.(single_expr_payload
(alt
(pexp_function __ |> map1 ~f:(fun cases -> (None, cases)) )
(pexp_match __ __ |> map2 ~f:(fun e cases -> (Some e, cases)) ))
)
let parser_extension =
Extension.V3.declare "parser" Extension.Context.expression ppx_parser_pat
Ppx_parser_lib.Parser.expand_parser_from_ctxt
let parser_rule = Context_free.Rule.extension parser_extension
let () = Driver.register_transformation ~rules:[ parser_rule ] "ppx_parser"