1(***********************************************************************)
2(*                                                                     *)
3(*                          HEVEA                                      *)
4(*                                                                     *)
5(*  Luc Maranget, projet PARA, INRIA Rocquencourt                      *)
6(*                                                                     *)
7(*  Copyright 1998 Institut National de Recherche en Informatique et   *)
8(*  Automatique.  Distributed only by permission.                      *)
9(*                                                                     *)
10(***********************************************************************)
11
12type action =
13  | Subst of string list
14  | Toks of string list
15  | CamlCode of (Lexing.lexbuf -> unit)
16
17val pretty_body : out_channel -> string list -> unit
18val body_to_string : string list -> string
19val pretty_action : action -> unit
20val is_empty_list : string list -> bool
21
22type pat = string list * string list
23val pretty_pat : pat -> unit
24val is_subst : action -> bool
25val latex_pat: string list -> int -> pat
26val zero_pat : pat
27val one_pat : pat
28
29type subst
30type 'a arg = {arg : 'a ; subst : subst }
31val mkarg : 'a -> subst -> 'a arg
32val string_to_arg : 'a -> 'a arg
33
34val top_subst : subst
35val get_subst : unit -> subst
36
37exception Error of string
38exception SubstTop
39type jax = JaxOut | JaxInline | JaxDisplay
40
41type alltt = Not | Inside | Macro
42val effective : alltt -> bool
43
44val raw_chars : bool ref
45val display : bool ref
46val in_math : bool ref
47val jaxauto : bool ref
48val injaxauto : jax ref
49val alltt : alltt ref
50val whitepre: bool ref
51val optarg : bool ref
52val styleloaded : bool ref
53val activebrace : bool ref
54val html : bool ref
55val text : bool ref
56val alltt_loaded : bool ref
57val is_plain : char -> bool
58val set_plain : char -> unit
59val unset_plain : char -> unit
60val plain_back : bool -> char -> unit
61
62val withinLispComment : bool ref
63val afterLispCommentNewlines : int ref
64
65type case = Upper | Lower | Neutral
66
67val case : case ref
68
69type closenv
70val top_level : unit -> bool
71val is_top : subst -> bool
72
73val prerr_args : unit -> unit
74val full_pretty_subst : subst -> unit
75
76val pretty_lexbuf : Lexing.lexbuf -> unit
77
78
79val scan_arg : (string list arg -> 'a) -> int -> 'a
80val scan_body : (action -> 'a) -> action -> subst -> 'a
81
82val stack_lexbuf : Lexing.lexbuf MyStack.t
83val previous_lexbuf : unit -> Lexing.lexbuf
84val record_lexbuf : Lexing.lexbuf -> subst -> unit
85val top_lexstate : unit -> bool
86
87(* Saving and restoring lexstates on a stack *)
88val protect_save_string : (Lexing.lexbuf -> string) -> Lexing.lexbuf -> string
89val save_lexstate : unit -> unit
90val restore_lexstate : unit -> unit
91val start_lexstate : unit -> unit
92val start_lexstate_subst : subst -> unit
93
94(* Total checkpoint of lexstate *)
95type saved_lexstate
96val check_lexstate : unit -> saved_lexstate
97val hot_lexstate : saved_lexstate -> unit
98
99val flushing : bool ref
100val stack_in_math : bool MyStack.t
101val stack_display : bool MyStack.t
102val stack_alltt : alltt MyStack.t
103
104val start_normal: subst -> unit
105val end_normal : unit -> unit
106
107(* Super/Sub-script parsing *)
108  type sup_sub = {
109    limits : Misc.limits option;
110    sup : string arg;
111    sub : string arg;
112  }
113
114val unoption : string arg option -> string arg
115val save_sup_sub : Lexing.lexbuf -> sup_sub
116val save_sup : Lexing.lexbuf -> string arg option
117val save_sub : Lexing.lexbuf -> string arg option
118
119(* Give next char in entry,
120   may raise Not_found, if no next char is available *)
121val full_peek_char : Lexing.lexbuf -> char
122
123(* Argument parsing *)
124
125type ok = | No of string | Yes of string list
126val from_ok : ok arg -> string list arg
127
128val save_arg : Lexing.lexbuf -> string arg
129val save_body : Lexing.lexbuf -> string list arg
130val save_filename : Lexing.lexbuf -> string arg
131val save_verbatim : Lexing.lexbuf -> string arg
132val save_opt : string -> Lexing.lexbuf -> string list arg
133val save_opts : string list -> Lexing.lexbuf -> ok arg list
134val save_arg_with_delim : string -> Lexing.lexbuf -> string arg
135val save_xy_arg : Lexing.lexbuf -> string arg
136val save_cite_arg : Lexing.lexbuf -> (string list) arg
137
138
139val pretty_ok : ok -> string
140val skip_opt : Lexing.lexbuf -> unit
141val skip_csname : Lexing.lexbuf -> unit
142
143val make_stack : string -> pat -> Lexing.lexbuf -> subst
144
145
146
147val scan_this
148 : (Lexing.lexbuf -> 'a ) -> string -> 'a
149val scan_this_list : (Lexing.lexbuf -> 'a ) -> string list -> 'a
150val scan_this_arg : (Lexing.lexbuf -> 'a ) -> string arg -> 'a
151val scan_this_arg_list : (Lexing.lexbuf -> 'a ) -> string list arg -> 'a
152val scan_this_may_cont :
153    (Lexing.lexbuf -> 'a ) -> Lexing.lexbuf -> subst ->  string arg -> 'a
154val scan_this_list_may_cont :
155    (Lexing.lexbuf -> 'a ) -> Lexing.lexbuf -> subst ->  string list arg -> 'a
156
157val real_input_file :
158    int -> (Lexing.lexbuf -> unit) -> string -> in_channel -> unit
159val input_file : int -> (Lexing.lexbuf -> unit) -> string -> unit
160
161val register_cell : string -> bool ref -> unit
162val unregister_cell : string -> unit
163type saved
164
165val checkpoint : unit -> saved
166val hot_start : saved -> unit
167
168