150472Spetersignature Regexp_Type = 238738Sbriansig 337Srgrimes 4234Snate type w64 = Word64.word 5234Snate type charset = w64 * w64 * w64 * w64 6234Snate 763912Sasmodai val alphabet_size : int 863912Sasmodai val alphabet : char list 963912Sasmodai 104994Sache (* charsets *) 1163912Sasmodai val charset_empty : charset 1212391Sache val charset_full : charset 1312392Sache val charset_mem : char -> charset -> bool 1419033Sache val charset_of : char list -> charset 1519033Sache val charset_elts : charset -> char list 16 17 val charset_insert : char -> charset -> charset 18 val charset_sing : char -> charset 19 val charset_span : int -> int -> charset 20 val charset_union : charset -> charset -> charset 21 val charset_diff : charset -> charset -> charset 22 val charset_compare : charset * charset -> order 23 24 datatype regexp 25 = Chset of charset 26 | Cat of regexp * regexp 27 | Star of regexp 28 | Or of regexp list 29 | Neg of regexp 30 31 val regexp_compare : regexp * regexp -> order 32 33 (* derived syntax *) 34 val And : regexp * regexp -> regexp 35 val Diff : regexp * regexp -> regexp 36 37 (* predeclared regexps *) 38 val WHITESPACE : regexp 39 val DIGIT : regexp 40 val ALPHA : regexp 41 val ALPHANUM : regexp 42 val EMPTY : regexp 43 val SIGMA : regexp 44 val DOT : regexp 45 val EPSILON : regexp 46 val SIGMASTAR : regexp 47 48 val replicate : regexp -> int -> regexp 49 val ranged : regexp -> int -> int -> regexp 50 val catlist : regexp list -> regexp 51 val strip_cat : regexp -> regexp list 52 val dots : int -> regexp list 53 val mk_or : regexp list -> regexp 54 55 56 datatype tree 57 = Ap of string * tree list 58 | Cset of charset 59 | Ident of char 60 | Power of tree * int 61 | Range of tree * int option * int option 62 | Interval of IntInf.int * IntInf.int 63 | Const of IntInf.int 64 65 val tree_parse : substring -> tree list * substring 66 val substring_to_tree : substring -> tree 67 val quote_to_tree : 'a frag list -> tree 68 69 val tree_to_regexp : (IntInf.int * IntInf.int -> regexp) -> tree -> regexp 70 71 val get_intervalFn : unit -> (IntInf.int * IntInf.int -> regexp) 72 val set_intervalFn : (IntInf.int * IntInf.int -> regexp) -> unit 73 74 val fromSubstring : substring -> regexp 75 val fromString : string -> regexp 76 val fromQuote : 'a frag list -> regexp 77 78 val pp_regexp : regexp PP.pprinter 79 val print_regexp : regexp -> unit 80 val println_regexp : regexp -> unit 81 82end 83