diff options
Diffstat (limited to 'parsing')
| -rw-r--r-- | parsing/parser.mly | 4 | ||||
| -rw-r--r-- | parsing/parsetree.mli | 1 | ||||
| -rw-r--r-- | parsing/printast.ml | 3 |
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"; |
