{0 [ppxlib]'s user manual}

{1 Overview}

This is the user manual and API for [ppxlib], the core of the PPX meta-programming
system for {{:https://ocaml.org/}OCaml} and its derivatives, such as
{{:https://reasonml.github.io/}Reason}. For a good introduction on PPXs, what
they are, and how to use them, see the
{{:https://ocaml.org/docs/metaprogramming}OCaml official guide} on PPXs. This
manual is mostly aimed at authors of PPX rewriters and contains everything one
should know in order to write PPX rewriters.

{1 Manual}

The manual consists of several sections. It can be read linearly, but you can also jump directly to your section of interest:
{ol
{li {{!page-"quick_intro"}An introduction to [ppxlib]}}
{li {{!page-"driver"}How [ppxlib] works internally}}
{li {{!page-"writing-ppxs"}Registering a transformation}}
{li {{!page-"generating-code"}Generating AST nodes}}
{li {{!page-"matching-code"}Destructing AST nodes}}
{li {{!page-"ast-traversal"}Traversing the AST}}
{li {{!page-"good-practices"}Good practices}}
{li {{!page-"examples"}Examples}}
}
{1 API}

The API exposes the following modules:

{!modules: ppxlib ppxlib_ast astlib ppxlib_metaquot Ppxlib_metaquot_lifters Ppxlib_print_diff Ppxlib_runner Ppxlib_runner_as_ppx Stdppx Ppxlib_traverse Ppxlib_traverse_builtins}
