78 lines
1.7 KiB
Perl
78 lines
1.7 KiB
Perl
ppxlib-pp-ast is a simple utility to pretty-print the AST corresponding
|
|
to a given piece of source code or a marshalled AST.
|
|
|
|
It can be used on regular .ml files:
|
|
|
|
$ cat > test.ml << EOF
|
|
> let x = x + 2
|
|
> EOF
|
|
$ ppxlib-pp-ast test.ml
|
|
[ Pstr_value
|
|
( Nonrecursive
|
|
, [ { pvb_pat = Ppat_var "x"
|
|
; pvb_expr =
|
|
Pexp_apply
|
|
( Pexp_ident (Lident "+")
|
|
, [ ( Nolabel, Pexp_ident (Lident "x"))
|
|
; ( Nolabel, Pexp_constant (Pconst_integer ( "2", None)))
|
|
]
|
|
)
|
|
; pvb_constraint = None
|
|
; pvb_attributes = __attrs
|
|
; pvb_loc = __loc
|
|
}
|
|
]
|
|
)
|
|
]
|
|
|
|
on .mli files:
|
|
|
|
$ cat > test.mli << EOF
|
|
> val x : int
|
|
> EOF
|
|
$ ppxlib-pp-ast test.mli
|
|
[ Psig_value
|
|
{ pval_name = "x"
|
|
; pval_type = Ptyp_constr ( Lident "int", [])
|
|
; pval_prim = []
|
|
; pval_attributes = __attrs
|
|
; pval_loc = __loc
|
|
}
|
|
]
|
|
|
|
But it can also be used to pretty a single expression:
|
|
|
|
$ ppxlib-pp-ast --exp - << EOF
|
|
> x + 2
|
|
> EOF
|
|
Pexp_apply
|
|
( Pexp_ident (Lident "+")
|
|
, [ ( Nolabel, Pexp_ident (Lident "x"))
|
|
; ( Nolabel, Pexp_constant (Pconst_integer ( "2", None)))
|
|
]
|
|
)
|
|
|
|
on a single pattern:
|
|
|
|
$ ppxlib-pp-ast --pat - << EOF
|
|
> (x, _::tl)
|
|
> EOF
|
|
Ppat_tuple
|
|
[ Ppat_var "x"
|
|
; Ppat_construct
|
|
( Lident "::", Some ( [], Ppat_tuple [ Ppat_any; Ppat_var "tl"]))
|
|
]
|
|
|
|
or on a single core_type:
|
|
|
|
$ ppxlib-pp-ast --typ - << EOF
|
|
> (int * string) result
|
|
> EOF
|
|
Ptyp_constr
|
|
( Lident "result"
|
|
, [ Ptyp_tuple
|
|
[ Ptyp_constr ( Lident "int", [])
|
|
; Ptyp_constr ( Lident "string", [])
|
|
]
|
|
]
|
|
)
|