(* type position = [%import: Lexing.position] [@@deriving show] type location = [%import: (Location.t[@with Lexing.position := position])] [@@deriving show] type constant = [%import: Parsetree.constant] [@@deriving show] type expression_desc = [%import: Parsetree.expression_desc] [@@deriving show] type expression = [%import: Parsetree.expression] [@@deriving show] type structure_item_desc = [%import: Parsetree.structure_item_desc] [@@deriving show] type structure_item = [%import: Parsetree.structure_item] [@@deriving show] type structure = [%import: Parsetree.structure] [@@deriving show] type toplevel_phrase = [%import: Parsetree.toplevel_phrase] [@@deriving show] *) let parse ~path (src : string) = let buf = Lexing.from_string src in buf.lex_start_p <- { buf.lex_start_p with pos_fname = path }; buf.lex_curr_p <- { buf.lex_curr_p with pos_fname = path }; Parse.use_file buf let () = parse ~path:"main.ml" "let () = print_endline ((\"Hello, world!\") )" |> List.iter (Pprintast.toplevel_phrase Format.std_formatter)