diff options
author | Jacques Garrigue <garrigue at math.nagoya-u.ac.jp> | 2005-12-12 08:02:38 +0000 |
---|---|---|
committer | Jacques Garrigue <garrigue at math.nagoya-u.ac.jp> | 2005-12-12 08:02:38 +0000 |
commit | 9b865efb2c279a54b5bf9561c3f8b5351a8ddd48 (patch) | |
tree | 7f0545f9cf173c371cbf5ebd24b48838b9b0c95e /parsing | |
parent | 2a13648d56564367ddd0843646a8389a9c910016 (diff) | |
download | ocaml-expoly.tar.gz |
ajout de la quantification des variables de rangeeexpoly
git-svn-id: http://caml.inria.fr/svn/ocaml/branches/expoly@7260 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'parsing')
-rw-r--r-- | parsing/parser.mly | 30 | ||||
-rw-r--r-- | parsing/parsetree.mli | 2 | ||||
-rw-r--r-- | parsing/printast.ml | 4 |
3 files changed, 19 insertions, 17 deletions
diff --git a/parsing/parser.mly b/parsing/parser.mly index 5a04a62591..72e324badf 100644 --- a/parsing/parser.mly +++ b/parsing/parser.mly @@ -983,23 +983,27 @@ let_bindings: | let_bindings AND let_binding { $3 :: $1 } ; let_binding: - typevar_list DOT let_val_binding + type_intro_list DOT let_val_binding { (List.rev $1, fst $3, snd $3) } | let_val_binding { ([], fst $1, snd $1) } ; +type_intro: + QUOTE LIDENT + { mktyp (Ptyp_var $2) } + | QUOTE LIDENT AS core_type2 + { mktyp (Ptyp_alias ($4, $2)) } +; +type_intro_list: + type_intro { [$1] } + | type_intro_list type_intro { $2 :: $1 } +; let_val_binding: - val_ident let_fun_binding + val_ident fun_binding { ({ppat_desc = Ppat_var $1; ppat_loc = rhs_loc 1}, $2) } | pattern EQUAL seq_expr { ($1, $3) } ; -let_fun_binding: - fun_binding - { $1} - | COLON explicit_poly_type EQUAL seq_expr - { ghexp(Pexp_constraint($4, Some $2, None)) } -; fun_binding: strict_binding { $1 } @@ -1247,13 +1251,11 @@ typevar_list: QUOTE ident { [$2] } | typevar_list QUOTE ident { $3 :: $1 } ; -explicit_poly_type: - typevar_list DOT core_type - { mktyp(Ptyp_poly(List.rev $1, $3)) } -; poly_type: - core_type { mktyp(Ptyp_poly([], $1)) } - | explicit_poly_type { $1 } + core_type + { mktyp(Ptyp_poly([], $1)) } + | typevar_list DOT core_type + { mktyp(Ptyp_poly(List.rev $1, $3)) } ; /* Core types */ diff --git a/parsing/parsetree.mli b/parsing/parsetree.mli index 4fd3013322..d7d59bdfae 100644 --- a/parsing/parsetree.mli +++ b/parsing/parsetree.mli @@ -112,7 +112,7 @@ and expression_desc = | Pexp_poly of expression * core_type option | Pexp_object of class_structure -and binding = string list * pattern * expression +and binding = core_type list * pattern * expression (* Value descriptions *) diff --git a/parsing/printast.ml b/parsing/printast.ml index 190d9ea779..9277d12da1 100644 --- a/parsing/printast.ml +++ b/parsing/printast.ml @@ -634,9 +634,9 @@ and pattern_x_expression_case i ppf (p, e) = pattern (i+1) ppf p; expression (i+1) ppf e; -and pattern_x_expression_def i ppf (vl, p, e) = +and pattern_x_expression_def i ppf (evo, p, e) = line i ppf "<def>\n"; - string (i+1) ppf (String.concat " " vl); + (* string (i+1) ppf (String.concat " " vl); *) pattern (i+1) ppf p; expression (i+1) ppf e; |