summaryrefslogtreecommitdiff
path: root/lex
diff options
context:
space:
mode:
authorSébastien Briais <sebastien.briais@lexifi.com>2017-02-01 18:46:32 +0100
committeralainfrisch <alain@frisch.fr>2017-02-28 14:11:45 +0100
commit6a814bd73e7b8450381e76c9b7810a29402ad424 (patch)
treef24781f1e0fa843a5159b8f2f1137ec7b2fb0063 /lex
parent84b03d9e6d66a9862bb80a97076e0e994385682b (diff)
downloadocaml-6a814bd73e7b8450381e76c9b7810a29402ad424.tar.gz
Simplify code by using Map.update.
Diffstat (limited to 'lex')
-rw-r--r--lex/lexgen.ml25
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