Commit | Line | Data |
---|---|---|
d6ce1786 C |
1 | type t = Type.t = Atom of string | List of t list |
2 | exception Of_sexp_error of exn * t | |
3 | type bigstring = | |
4 | (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t | |
5 | val default_indent : int ref | |
6 | val is_special_char : char -> bool | |
7 | val must_escape : string -> bool | |
8 | val maybe_esc_str : string -> string | |
9 | val pp_maybe_esc_str : Format.formatter -> string -> unit | |
10 | val pp_hum_indent : int -> Format.formatter -> t -> unit | |
11 | val pp_hum_rest : int -> Format.formatter -> t list -> unit | |
12 | val pp_mach_internal : bool -> Format.formatter -> t -> bool | |
13 | val pp_mach_rest : bool -> Format.formatter -> t list -> unit | |
14 | val pp_hum : Format.formatter -> t -> unit | |
15 | val pp_mach : Format.formatter -> t -> unit | |
16 | val pp : Format.formatter -> t -> unit | |
17 | val size_loop : int * int -> t -> int * int | |
18 | val size : t -> int * int | |
19 | val to_buffer_hum : buf:Buffer.t -> ?indent:int -> t -> unit | |
20 | val to_buffer_mach : buf:Buffer.t -> t -> unit | |
21 | val to_buffer : buf:Buffer.t -> t -> unit | |
22 | val buffer : unit -> Buffer.t | |
23 | val with_new_buffer : out_channel -> (Buffer.t -> 'a) -> unit | |
24 | val output_hum : out_channel -> t -> unit | |
25 | val output_hum_indent : int -> out_channel -> t -> unit | |
26 | val output_mach : out_channel -> t -> unit | |
27 | val output : out_channel -> t -> unit | |
28 | val save_of_output : | |
29 | ?perm:Unix.file_perm -> (out_channel -> 'a -> 'b) -> string -> 'a -> unit | |
30 | val output_sexp_nl : (out_channel -> 'a -> 'b) -> out_channel -> 'a -> unit | |
31 | val save_hum : ?perm:Unix.file_perm -> string -> t -> unit | |
32 | val save_mach : ?perm:Unix.file_perm -> string -> t -> unit | |
33 | val save : ?perm:Unix.file_perm -> string -> t -> unit | |
34 | val output_sexps_nl : | |
35 | (out_channel -> 'a -> 'b) -> out_channel -> 'a list -> unit | |
36 | val save_sexps_hum : ?perm:Unix.file_perm -> string -> t list -> unit | |
37 | val save_sexps_mach : ?perm:Unix.file_perm -> string -> t list -> unit | |
38 | val save_sexps : ?perm:Unix.file_perm -> string -> t list -> unit | |
39 | val to_string_hum : ?indent:int -> t -> string | |
40 | val to_string_mach : t -> string | |
41 | val to_string : t -> string | |
42 | val scan_sexp : ?buf:Buffer.t -> Lexing.lexbuf -> Type.t | |
43 | val scan_sexps : ?buf:Buffer.t -> Lexing.lexbuf -> Type.t list | |
44 | val get_main_buf : Buffer.t option -> Lexing.lexbuf -> Parser.token | |
45 | val scan_fold_sexps : | |
46 | ?buf:Buffer.t -> f:('a -> Type.t -> 'a) -> init:'a -> Lexing.lexbuf -> 'a | |
47 | val scan_iter_sexps : | |
48 | ?buf:Buffer.t -> f:(Type.t -> unit) -> Lexing.lexbuf -> unit | |
49 | val scan_sexps_conv : | |
50 | ?buf:Buffer.t -> f:(Type.t -> 'a) -> Lexing.lexbuf -> 'a list | |
51 | module Annot : | |
52 | sig | |
53 | type pos = Pre_sexp.Annot.pos = { line : int; col : int; offset : int; } | |
54 | type range = Pre_sexp.Annot.range = { start_pos : pos; end_pos : pos; } | |
55 | type t = | |
56 | Pre_sexp.Annot.t = | |
57 | Atom of range * Type.t | |
58 | | List of range * t list * Type.t | |
59 | type 'a conv = [ `Error of exn * t | `Result of 'a ] | |
60 | exception Conv_exn of string * exn | |
61 | type stack = | |
62 | Pre_sexp.Annot.stack = { | |
63 | mutable positions : pos list; | |
64 | mutable stack : t list list; | |
65 | } | |
66 | val get_sexp : t -> Type.t | |
67 | val get_range : t -> range | |
68 | exception Annot_sexp of t | |
69 | val find_sexp : t -> Type.t -> t option | |
70 | end | |
71 | module Parse_pos : | |
72 | sig | |
73 | type t = | |
74 | Pre_sexp.Parse_pos.t = { | |
75 | mutable text_line : int; | |
76 | mutable text_char : int; | |
77 | mutable global_offset : int; | |
78 | mutable buf_pos : int; | |
79 | } | |
80 | val create : | |
81 | ?text_line:int -> | |
82 | ?text_char:int -> ?buf_pos:int -> ?global_offset:int -> unit -> t | |
83 | val with_buf_pos : t -> int -> t | |
84 | end | |
85 | type ('a, 'b) parse_result = | |
86 | ('a, 'b) Pre_sexp.parse_result = | |
87 | Done of 'b * Parse_pos.t | |
88 | | Cont of bool * ('a, 'b) parse_fun | |
89 | and ('a, 'b) parse_fun = pos:int -> len:int -> 'a -> ('a, 'b) parse_result | |
90 | type 'a parse_state = | |
91 | 'a Pre_sexp.parse_state = { | |
92 | parse_pos : Parse_pos.t; | |
93 | mutable pstack : 'a; | |
94 | pbuf : Buffer.t; | |
95 | } | |
96 | type parse_error = | |
97 | Pre_sexp.parse_error = { | |
98 | location : string; | |
99 | err_msg : string; | |
100 | parse_state : | |
101 | [ `Annot of Annot.stack parse_state | `Sexp of t list list parse_state ]; | |
102 | } | |
103 | exception Parse_error of parse_error | |
104 | val bump_text_line : 'a parse_state -> unit | |
105 | val bump_text_pos : 'a parse_state -> unit | |
106 | val bump_pos_cont : | |
107 | 'a parse_state -> | |
108 | 'b -> | |
109 | max_pos:'c -> | |
110 | pos:int -> ('a parse_state -> 'b -> max_pos:'c -> pos:int -> 'd) -> 'd | |
111 | val bump_line_cont : | |
112 | 'a parse_state -> | |
113 | 'b -> | |
114 | max_pos:'c -> | |
115 | pos:int -> ('a parse_state -> 'b -> max_pos:'c -> pos:int -> 'd) -> 'd | |
116 | val add_bump : | |
117 | ('a parse_state -> 'b) -> | |
118 | 'a parse_state -> | |
119 | 'c -> | |
120 | max_pos:'d -> | |
121 | pos:int -> | |
122 | char -> ('a parse_state -> 'c -> max_pos:'d -> pos:int -> 'e) -> 'e | |
123 | val add_bump_pos : | |
124 | 'a parse_state -> | |
125 | 'b -> | |
126 | max_pos:'c -> | |
127 | pos:int -> | |
128 | char -> ('a parse_state -> 'b -> max_pos:'c -> pos:int -> 'd) -> 'd | |
129 | val add_bump_line : | |
130 | 'a parse_state -> | |
131 | 'b -> | |
132 | max_pos:'c -> | |
133 | pos:int -> | |
134 | char -> ('a parse_state -> 'b -> max_pos:'c -> pos:int -> 'd) -> 'd | |
135 | val set_parse_pos : Parse_pos.t -> int -> unit | |
136 | val mk_parse_pos : 'a parse_state -> int -> Parse_pos.t | |
137 | val raise_parse_error : | |
138 | [ `Annot of Annot.stack parse_state | `Sexp of t list list parse_state ] -> | |
139 | string -> int -> string -> 'a | |
140 | val raise_unexpected_char : | |
141 | [ `Annot of Annot.stack parse_state | `Sexp of t list list parse_state ] -> | |
142 | string -> int -> char -> 'a | |
143 | val parse_str : | |
144 | ?parse_pos:Parse_pos.t -> ?len:int -> string -> (string, t) parse_result | |
145 | val parse : | |
146 | ?parse_pos:Parse_pos.t -> ?len:int -> string -> (string, t) parse_result | |
147 | val get_glob_ofs : Parse_pos.t -> int -> int | |
148 | val mk_annot_pos : Parse_pos.t -> int -> Annot.pos | |
149 | val mk_annot_pos1 : Parse_pos.t -> int -> Annot.pos | |
150 | val add_annot_pos : Annot.stack parse_state -> int -> unit | |
151 | val add_annot_pos1 : Annot.stack parse_state -> int -> unit | |
152 | val get_annot_range : Annot.stack parse_state -> int -> Annot.range | |
153 | val mk_annot_atom : Annot.stack parse_state -> string -> int -> Annot.t | |
154 | val mk_annot_list : Annot.stack parse_state -> Annot.t list -> int -> Annot.t | |
155 | val init_annot_pstate : unit -> Annot.stack | |
156 | val parse_str_annot : | |
157 | ?parse_pos:Parse_pos.t -> | |
158 | ?len:int -> string -> (string, Annot.t) parse_result | |
159 | val parse_bigstring : | |
160 | ?parse_pos:Parse_pos.t -> | |
161 | ?len:int -> bigstring -> (bigstring, t) parse_result | |
162 | val bump_found_atom : | |
163 | (Annot.stack parse_state -> 'a) -> | |
164 | Annot.stack parse_state -> | |
165 | 'b -> | |
166 | max_pos:'c -> | |
167 | pos:int -> | |
168 | (Annot.stack parse_state -> | |
169 | 'b -> max_pos:'c -> pos:int -> ('d, Annot.t) parse_result) -> | |
170 | ('d, Annot.t) parse_result | |
171 | val check_str_bounds : string -> pos:int -> len:int -> bigstring -> int | |
172 | val mk_cont : | |
173 | string -> | |
174 | (Annot.stack parse_state -> | |
175 | bigstring -> max_pos:int -> pos:int -> (bigstring, 'a) parse_result) -> | |
176 | Annot.stack parse_state -> (bigstring, 'a) parse_result | |
177 | val parse_nl : | |
178 | Annot.stack parse_state -> | |
179 | bigstring -> max_pos:int -> pos:int -> (bigstring, Annot.t) parse_result | |
180 | val parse_comment : | |
181 | Annot.stack parse_state -> | |
182 | bigstring -> max_pos:int -> pos:int -> (bigstring, Annot.t) parse_result | |
183 | val parse_atom : | |
184 | Annot.stack parse_state -> | |
185 | bigstring -> max_pos:int -> pos:int -> (bigstring, Annot.t) parse_result | |
186 | val reg_parse_quoted : | |
187 | Annot.stack parse_state -> | |
188 | bigstring -> max_pos:int -> pos:int -> (bigstring, Annot.t) parse_result | |
189 | val parse_quoted : | |
190 | Annot.stack parse_state -> | |
191 | bigstring -> max_pos:int -> pos:int -> (bigstring, Annot.t) parse_result | |
192 | val parse_quoted_nl : | |
193 | Annot.stack parse_state -> | |
194 | bigstring -> max_pos:int -> pos:int -> (bigstring, Annot.t) parse_result | |
195 | val parse_escaped : | |
196 | Annot.stack parse_state -> | |
197 | bigstring -> max_pos:int -> pos:int -> (bigstring, Annot.t) parse_result | |
198 | val parse_skip_ws : | |
199 | Annot.stack parse_state -> | |
200 | bigstring -> max_pos:int -> pos:int -> (bigstring, Annot.t) parse_result | |
201 | val parse_skip_ws_nl : | |
202 | Annot.stack parse_state -> | |
203 | bigstring -> max_pos:int -> pos:int -> (bigstring, Annot.t) parse_result | |
204 | val parse_dec : | |
205 | Annot.stack parse_state -> | |
206 | bigstring -> | |
207 | max_pos:int -> | |
208 | pos:int -> count:int -> d:int -> (bigstring, Annot.t) parse_result | |
209 | val parse_hex : | |
210 | Annot.stack parse_state -> | |
211 | bigstring -> | |
212 | max_pos:int -> | |
213 | pos:int -> count:int -> d:int -> (bigstring, Annot.t) parse_result | |
214 | val parse_bigstring_annot : | |
215 | ?parse_pos:Parse_pos.t -> | |
216 | ?len:int -> bigstring -> (bigstring, Annot.t) parse_result | |
217 | val mk_this_parse : | |
218 | ?parse_pos:Parse_pos.t -> | |
219 | (?parse_pos:Parse_pos.t -> ?len:'a -> 'b -> 'c) -> | |
220 | pos:int -> len:'a -> 'b -> 'c | |
221 | val gen_input_sexp : | |
222 | (?parse_pos:Parse_pos.t -> ?len:int -> string -> (string, 'a) parse_result) -> | |
223 | ?parse_pos:Parse_pos.t -> in_channel -> 'a | |
224 | val input_sexp : ?parse_pos:Parse_pos.t -> in_channel -> t | |
225 | val gen_input_rev_sexps : | |
226 | (?parse_pos:Parse_pos.t -> ?len:int -> string -> (string, 'a) parse_result) -> | |
227 | ?parse_pos:Parse_pos.t -> ?buf:string -> in_channel -> 'a list | |
228 | val input_rev_sexps : | |
229 | ?parse_pos:Parse_pos.t -> ?buf:string -> in_channel -> t list | |
230 | val input_sexps : | |
231 | ?parse_pos:Parse_pos.t -> ?buf:string -> in_channel -> t list | |
232 | val of_string_bigstring : | |
233 | string -> | |
234 | ('a -> ('b, 'c) parse_result) -> | |
235 | 'b -> ('a -> int) -> ('a -> int -> int -> string) -> 'a -> 'c | |
236 | val of_string : string -> t | |
237 | val get_bstr_sub_str : | |
238 | (char, 'a, 'b) Bigarray.Array1.t -> int -> int -> string | |
239 | val bstr_ws_buf : | |
240 | (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t | |
241 | val of_bigstring : bigstring -> t | |
242 | val gen_load_rev_sexps : | |
243 | (?parse_pos:'a -> ?buf:'b -> in_channel -> 'c) -> ?buf:'b -> string -> 'c | |
244 | val load_rev_sexps : ?buf:string -> string -> t list | |
245 | val load_sexps : ?buf:string -> string -> t list | |
246 | val gen_load_sexp : | |
247 | (?parse_pos:Parse_pos.t -> ?len:int -> string -> (string, 'a) parse_result) -> | |
248 | ?strict:bool -> ?buf:string -> string -> 'a | |
249 | val load_sexp : ?strict:bool -> ?buf:string -> string -> t | |
250 | module Annotated : | |
251 | sig | |
252 | type pos = Annot.pos = { line : int; col : int; offset : int; } | |
253 | type range = Annot.range = { start_pos : pos; end_pos : pos; } | |
254 | type t = | |
255 | Annot.t = | |
256 | Atom of range * Type.t | |
257 | | List of range * t list * Type.t | |
258 | type 'a conv = [ `Error of exn * t | `Result of 'a ] | |
259 | exception Conv_exn of string * exn | |
260 | type stack = | |
261 | Annot.stack = { | |
262 | mutable positions : pos list; | |
263 | mutable stack : t list list; | |
264 | } | |
265 | val get_sexp : t -> Type.t | |
266 | val get_range : t -> range | |
267 | exception Annot_sexp of t | |
268 | val find_sexp : t -> Type.t -> t option | |
269 | val parse : | |
270 | ?parse_pos:Parse_pos.t -> | |
271 | ?len:int -> string -> (string, Annot.t) parse_result | |
272 | val parse_bigstring : | |
273 | ?parse_pos:Parse_pos.t -> | |
274 | ?len:int -> bigstring -> (bigstring, Annot.t) parse_result | |
275 | val input_rev_sexps : | |
276 | ?parse_pos:Parse_pos.t -> ?buf:string -> in_channel -> Annot.t list | |
277 | val input_sexp : ?parse_pos:Parse_pos.t -> in_channel -> Annot.t | |
278 | val input_sexps : | |
279 | ?parse_pos:Parse_pos.t -> ?buf:string -> in_channel -> Annot.t list | |
280 | val of_string : string -> Annot.t | |
281 | val of_bigstring : bigstring -> Annot.t | |
282 | val load_rev_sexps : ?buf:string -> string -> Annot.t list | |
283 | val load_sexps : ?buf:string -> string -> Annot.t list | |
284 | val load_sexp : ?strict:bool -> ?buf:string -> string -> Annot.t | |
285 | val conv : (Type.t -> 'a) -> t -> [> `Error of exn * t | `Result of 'a ] | |
286 | val get_conv_exn : file:string -> exc:exn -> t -> exn | |
287 | end | |
288 | val load_sexp_conv : | |
289 | ?strict:bool -> | |
290 | ?buf:string -> | |
291 | string -> (t -> 'a) -> [> `Error of exn * Annotated.t | `Result of 'a ] | |
292 | val raise_conv_exn : | |
293 | file:string -> [< `Error of exn * Annotated.t | `Result of 'a ] -> 'a | |
294 | val load_sexp_conv_exn : | |
295 | ?strict:bool -> ?buf:string -> string -> (t -> 'a) -> 'a | |
296 | val load_sexps_conv : | |
297 | ?buf:string -> | |
298 | string -> | |
299 | (t -> 'a) -> [> `Error of exn * Annotated.t | `Result of 'a ] list | |
300 | val load_sexps_conv_exn : ?buf:string -> string -> (t -> 'a) -> 'a list | |
301 | val gen_of_string_conv : | |
302 | ('a -> Type.t) -> | |
303 | ('a -> Annotated.t) -> | |
304 | 'a -> (Type.t -> 'b) -> [> `Error of exn * Annotated.t | `Result of 'b ] | |
305 | val of_string_conv : | |
306 | string -> (t -> 'a) -> [> `Error of exn * Annotated.t | `Result of 'a ] | |
307 | val of_bigstring_conv : | |
308 | bigstring -> (t -> 'a) -> [> `Error of exn * Annotated.t | `Result of 'a ] | |
309 | module Of_string_conv_exn : | |
310 | sig | |
311 | type t = | |
312 | Pre_sexp.Of_string_conv_exn.t = { | |
313 | exc : exn; | |
314 | sexp : Type.t; | |
315 | sub_sexp : Type.t; | |
316 | } | |
317 | exception E of t | |
318 | end | |
319 | val gen_of_string_conv_exn : ('a -> Type.t) -> 'a -> (Type.t -> 'b) -> 'b | |
320 | val of_string_conv_exn : string -> (t -> 'a) -> 'a | |
321 | val of_bigstring_conv_exn : bigstring -> (t -> 'a) -> 'a | |
322 | val unit : t | |
323 | external sexp_of_t : t -> t = "%identity" | |
324 | external t_of_sexp : t -> t = "%identity" | |
325 | type found = [ `Found | `Pos of int * found ] | |
326 | type search_result = [ `Found | `Not_found | `Pos of int * found ] | |
327 | val search_physical : | |
328 | t -> contained:t -> [ `Found | `Not_found | `Pos of int * found ] | |
329 | val subst_found : t -> subst:t -> ([< `Found | `Pos of int * 'a ] as 'a) -> t |