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