ppxlib-pp-ast can be used on files but it can also read from stdin: $ cat > test.ml << EOF > let x = x + 2 > EOF $ cat test.ml | ppxlib-pp-ast --str - [ 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 } ] ) ] It can also read the input directly from the command line: $ ppxlib-pp-ast --exp "x + 2" Pexp_apply ( Pexp_ident (Lident "+") , [ ( Nolabel, Pexp_ident (Lident "x")) ; ( Nolabel, Pexp_constant (Pconst_integer ( "2", None))) ] ) Note that the kind must be specified when the input is not a file: $ ppxlib-pp-ast "x + 2" ppxlib-pp-ast: Could not guess kind from input "x + 2". Please use relevant CLI flag. [123]