Add Sexp.Of_sexp.set_many
Signed-off-by: Jeremie Dimino <jeremie@dimino.org>
This commit is contained in:
parent
aed6513b05
commit
ff46b30a78
|
@ -141,6 +141,14 @@ module Of_sexp = struct
|
||||||
| Fields (loc, cstr, uc) ->
|
| Fields (loc, cstr, uc) ->
|
||||||
t (Fields (loc, cstr, Univ_map.add uc key v)) state
|
t (Fields (loc, cstr, Univ_map.add uc key v)) state
|
||||||
|
|
||||||
|
let set_many : type a k. Univ_map.t -> (a, k) parser -> (a, k) parser
|
||||||
|
= fun map t ctx state ->
|
||||||
|
match ctx with
|
||||||
|
| Values (loc, cstr, uc) ->
|
||||||
|
t (Values (loc, cstr, Univ_map.superpose uc map)) state
|
||||||
|
| Fields (loc, cstr, uc) ->
|
||||||
|
t (Fields (loc, cstr, Univ_map.superpose uc map)) state
|
||||||
|
|
||||||
let loc : type k. k context -> k -> Loc.t * k = fun ctx state ->
|
let loc : type k. k context -> k -> Loc.t * k = fun ctx state ->
|
||||||
match ctx with
|
match ctx with
|
||||||
| Values (loc, _, _) -> (loc, state)
|
| Values (loc, _, _) -> (loc, state)
|
||||||
|
|
|
@ -109,6 +109,7 @@ module Of_sexp : sig
|
||||||
(** Access to the context *)
|
(** Access to the context *)
|
||||||
val get : 'a Univ_map.Key.t -> ('a option, _) parser
|
val get : 'a Univ_map.Key.t -> ('a option, _) parser
|
||||||
val set : 'a Univ_map.Key.t -> 'a -> ('b, 'k) parser -> ('b, 'k) parser
|
val set : 'a Univ_map.Key.t -> 'a -> ('b, 'k) parser -> ('b, 'k) parser
|
||||||
|
val set_many : Univ_map.t -> ('a, 'k) parser -> ('a, 'k) parser
|
||||||
|
|
||||||
(** Return the location of the list currently being parsed. *)
|
(** Return the location of the list currently being parsed. *)
|
||||||
val loc : (Loc.t, _) parser
|
val loc : (Loc.t, _) parser
|
||||||
|
|
Loading…
Reference in New Issue