summaryrefslogtreecommitdiff
path: root/parsing
diff options
context:
space:
mode:
Diffstat (limited to 'parsing')
-rw-r--r--parsing/parser.mly4
-rw-r--r--parsing/parsetree.mli1
-rw-r--r--parsing/printast.ml3
3 files changed, 8 insertions, 0 deletions
diff --git a/parsing/parser.mly b/parsing/parser.mly
index 761b5a9741..f7de4188f0 100644
--- a/parsing/parser.mly
+++ b/parsing/parser.mly
@@ -825,6 +825,10 @@ expr:
{ mkexp(Pexp_let($2, List.rev $3, $5)) }
| LET MODULE UIDENT module_binding IN seq_expr
{ mkexp(Pexp_letmodule($3, $4, $6)) }
+ | LET OPEN mod_longident IN seq_expr
+ { mkexp(Pexp_open($3, $5)) }
+ | mod_longident DOT LPAREN seq_expr RPAREN
+ { mkexp(Pexp_open($1, $4)) }
| FUNCTION opt_bar match_cases
{ mkexp(Pexp_function("", None, List.rev $3)) }
| FUN labeled_simple_pattern fun_def
diff --git a/parsing/parsetree.mli b/parsing/parsetree.mli
index 0be71b4e7c..a67d50e196 100644
--- a/parsing/parsetree.mli
+++ b/parsing/parsetree.mli
@@ -113,6 +113,7 @@ and expression_desc =
| Pexp_poly of expression * core_type option
| Pexp_object of class_structure
| Pexp_newtype of string * expression
+ | Pexp_open of Longident.t * expression
(* Value descriptions *)
diff --git a/parsing/printast.ml b/parsing/printast.ml
index a81c9e6753..0d30b4f33c 100644
--- a/parsing/printast.ml
+++ b/parsing/printast.ml
@@ -308,6 +308,9 @@ and expression i ppf x =
| Pexp_newtype (s, e) ->
line i ppf "Pexp_newtype \"%s\"\n" s;
expression i ppf e
+ | Pexp_open (m, e) ->
+ line i ppf "Pexp_open \"%a\"\n" fmt_longident m;
+ expression i ppf e
and value_description i ppf x =
line i ppf "value_description\n";