diff options
| author | Sébastien Briais <sebastien.briais@lexifi.com> | 2017-02-01 18:46:32 +0100 |
|---|---|---|
| committer | alainfrisch <alain@frisch.fr> | 2017-02-28 14:11:45 +0100 |
| commit | 6a814bd73e7b8450381e76c9b7810a29402ad424 (patch) | |
| tree | f24781f1e0fa843a5159b8f2f1137ec7b2fb0063 /lex | |
| parent | 84b03d9e6d66a9862bb80a97076e0e994385682b (diff) | |
| download | ocaml-6a814bd73e7b8450381e76c9b7810a29402ad424.tar.gz | |
Simplify code by using Map.update.
Diffstat (limited to 'lex')
| -rw-r--r-- | lex/lexgen.ml | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/lex/lexgen.ml b/lex/lexgen.ml index 4054f27cc7..5ad2f1f71f 100644 --- a/lex/lexgen.ml +++ b/lex/lexgen.ml @@ -684,13 +684,10 @@ let env_to_class m = let env1 = MemMap.fold (fun _ (tag,s) r -> - try - let ss = TagMap.find tag r in - let r = TagMap.remove tag r in - TagMap.add tag (StateSetSet.add s ss) r - with - | Not_found -> - TagMap.add tag (StateSetSet.add s StateSetSet.empty) r) + TagMap.update tag (function + | None -> StateSetSet.singleton s + | Some ss -> StateSetSet.add s ss + ) r) m TagMap.empty in TagMap.fold (fun tag ss r -> MemKey.add {tag=tag ; equiv=ss} r) @@ -701,14 +698,12 @@ let env_to_class m = let inverse_mem_map trans m r = TagMap.fold (fun tag addr r -> - try - let otag,s = MemMap.find addr r in - assert (tag = otag) ; - let r = MemMap.remove addr r in - MemMap.add addr (tag,StateSet.add trans s) r - with - | Not_found -> - MemMap.add addr (tag,StateSet.add trans StateSet.empty) r) + MemMap.update addr (function + | None -> tag, StateSet.singleton trans + | Some (otag, s) -> + assert (tag = otag); + (tag, StateSet.add trans s) + ) r) m r let inverse_mem_map_other n (_,m) r = inverse_mem_map (OnChars n) m r |
