package lrgrep
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
Analyse the stack of a Menhir-generated LR parser using regular expressions
Install
dune-project
Dependency
Authors
Maintainers
Sources
lrgrep-0.3.tbz
sha256=84a1874d0c063da371e19c84243aac7c40bfcb9aaf204251e0eb0d1f077f2cde
sha512=5a16ff42a196fd741bc64a1bdd45b4dca0098633e73aa665829a44625ec15382891c3643fa210dbe3704336eab095d4024e093e37ae5313810f6754de6119d55
doc/src/fix/Glue.ml.html
Source file Glue.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187(******************************************************************************) (* *) (* Fix *) (* *) (* François Pottier, Inria Paris *) (* *) (* Copyright Inria. All rights reserved. This file is distributed under the *) (* terms of the GNU Library General Public License version 2, with a *) (* special exception on linking, as described in the file LICENSE. *) (* *) (******************************************************************************) open Sigs module CHAR = struct type t = char end module INT = struct type t = int end module STRING = struct type t = string end module TrivialOrderedType (T : TYPE) = struct include T let compare = compare end module TrivialHashedType (T : TYPE) = struct include T let equal = (=) let hash = Hashtbl.hash end module InjectOrderedType (U : OrderedType) (I : INJECTION with type u := U.t) = struct type t = I.t let compare x y = U.compare (I.encode x) (I.encode y) end module InjectHashedType (U : HashedType) (I : INJECTION with type u := U.t) = struct type t = I.t let equal x y = U.equal (I.encode x) (I.encode y) let hash x = U.hash (I.encode x) end module InjectMinimalImperativeMaps (M : MINIMAL_IMPERATIVE_MAPS) (I : INJECTION with type u := M.key) = struct type key = I.t type 'data t = 'data M.t let create = M.create let add x y m = M.add (I.encode x) y m let find x m = M.find (I.encode x) m end module InjectImperativeMaps (M : IMPERATIVE_MAPS) (I : INJECTION with type u := M.key) (J : sig val decode: M.key -> I.t end) = struct include InjectMinimalImperativeMaps(M)(I) let clear = M.clear let iter f m = M.iter (fun x y -> f (J.decode x) y ) m end module PersistentMapsToImperativeMaps (M : PERSISTENT_MAPS) = struct type key = M.key type 'data t = 'data M.t ref let create () = ref M.empty let clear t = t := M.empty let add k d t = t := M.add k d !t let find k t = M.find k !t let iter f t = M.iter f !t end module ArraysAsImperativeMaps (K : sig val n: int end) = struct open K type key = int type 'data t = 'data option array let create () = Array.make n None let clear m = Array.fill m 0 n None let add key data m = m.(key) <- Some data let find key m = match m.(key) with | None -> raise Not_found | Some data -> data let iter f m = Array.iteri (fun key data -> match data with | None -> () | Some data -> f key data ) m end module HashTablesAsImperativeMaps (H : HashedType) = struct include Hashtbl.Make(H) (* [clear], [iter] are included *) let create () = create 1023 let add key data table = add table key data let find table key = find key table end module WeakHashTablesAsImperativeMaps (H : HashedType) = struct include Ephemeron.K1.Make(H) (* [iter] is not included because it is not supported by the new ephemeron API in OCaml 5. *) let create () = create 1023 let add key data table = add table key data let find table key = find key table end module MinimalSemiLattice (P : SEMI_LATTICE) = struct type property = P.property let leq_join p' p = if P.leq p' p then p else P.join p' p end
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>