aboutsummaryrefslogtreecommitdiff
path: root/discocaml/main.ml
diff options
context:
space:
mode:
Diffstat (limited to 'discocaml/main.ml')
-rw-r--r--discocaml/main.ml27
1 files changed, 27 insertions, 0 deletions
diff --git a/discocaml/main.ml b/discocaml/main.ml
new file mode 100644
index 0000000..2cc97b5
--- /dev/null
+++ b/discocaml/main.ml
@@ -0,0 +1,27 @@
+(*
+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)