1signature Regexp_Type = 2sig 3 4 type w64 = Word64.word 5 type charset = w64 * w64 * w64 * w64 6 7 val alphabet_size : int 8 val alphabet : char list 9 10 (* charsets *) 11 val charset_empty : charset 12 val charset_full : charset 13 val charset_mem : char -> charset -> bool 14 val charset_of : char list -> charset 15 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