diff options
| author | Kathy Gray | 2014-03-18 21:54:38 +0000 |
|---|---|---|
| committer | Kathy Gray | 2014-03-18 21:55:03 +0000 |
| commit | 651f61c4888666b9d23168722712505cacc33e7c (patch) | |
| tree | 9b394fe6477f86d9f7451d40277ff4b2a3a33984 /src | |
| parent | ef17899571edf9f937c0c9397ece277f99540e55 (diff) | |
Add parser support for empty and one element vectors
Diffstat (limited to 'src')
| -rw-r--r-- | src/finite_map.ml | 10 | ||||
| -rw-r--r-- | src/parser.mly | 6 |
2 files changed, 11 insertions, 5 deletions
diff --git a/src/finite_map.ml b/src/finite_map.ml index fd0a5553..32629fdc 100644 --- a/src/finite_map.ml +++ b/src/finite_map.ml @@ -93,11 +93,6 @@ module Fmap_map(Key : Set.OrderedType) : Fmap let insert m (k,v) = M.add k v m let union m1 m2 = M.merge (fun k v1 v2 -> match v2 with | None -> v1 | Some _ -> v2) m1 m2 - let intersect m1 m2 = - M.fold (fun k v res -> - if (M.mem k m2) - then M.add k v res - else res) M.empty m1 let merge f m1 m2 = M.merge f m1 m2 let apply m k = try @@ -117,6 +112,11 @@ module Fmap_map(Key : Set.OrderedType) : Fmap None let iter f m = M.iter f m let fold f m base = M.fold (fun k v res -> f res k v) base m + let intersect m1 m2 = + M.fold (fun k v res -> + if (M.mem k m2) + then M.add k v res + else res) m1 M.empty let remove m k = M.remove k m let pp_map pp_key pp_val ppf m = let l = M.fold (fun k v l -> (k,v)::l) m [] in diff --git a/src/parser.mly b/src/parser.mly index 4fef21f7..16d28daa 100644 --- a/src/parser.mly +++ b/src/parser.mly @@ -431,6 +431,8 @@ atomic_pat: { ploc (P_vector($2)) } | Lsquare pat Rsquare { ploc (P_vector([$2])) } + | Lsquare Rsquare + { ploc (P_vector []) } | Lsquare npats Rsquare { ploc (P_vector_indexed($2)) } | Lparen comma_pats Rparen @@ -507,6 +509,10 @@ atomic_exp: { eloc (E_tuple($2)) } | Lcurly exp With semi_exps Rcurly { eloc (E_record_update($2,$4)) } + | Lsquare Rsquare + { eloc (E_vector([])) } + | Lsquare exp Rsquare + { eloc (E_vector([$2])) } | Lsquare comma_exps Rsquare { eloc (E_vector($2)) } | Lsquare exp With atomic_exp Eq exp Rsquare |
