src/Pure/General/symbol.ML
changeset 8230 6f8aa407bcf9
parent 6857 6e6eb8d92377
child 8663 38d7ec8ef683
equal deleted inserted replaced
8229:38f453607c61 8230:6f8aa407bcf9
    20   val is_letter: symbol -> bool
    20   val is_letter: symbol -> bool
    21   val is_digit: symbol -> bool
    21   val is_digit: symbol -> bool
    22   val is_quasi_letter: symbol -> bool
    22   val is_quasi_letter: symbol -> bool
    23   val is_letdig: symbol -> bool
    23   val is_letdig: symbol -> bool
    24   val is_blank: symbol -> bool
    24   val is_blank: symbol -> bool
       
    25   val is_symbolic: symbol -> bool
    25   val is_printable: symbol -> bool
    26   val is_printable: symbol -> bool
    26   val length: symbol list -> int
    27   val length: symbol list -> int
    27   val beginning: symbol list -> string
    28   val beginning: symbol list -> string
    28   val scan: string list -> symbol * string list
    29   val scan: string list -> symbol * string list
    29   val scanner: string -> (symbol list -> 'a * symbol list) -> symbol list -> 'a
    30   val scanner: string -> (symbol list -> 'a * symbol list) -> symbol list -> 'a
    90     | "\160" => true | "\\<spacespace>" => true
    91     | "\160" => true | "\\<spacespace>" => true
    91     | _ => false;
    92     | _ => false;
    92 
    93 
    93 val is_letdig = is_quasi_letter orf is_digit;
    94 val is_letdig = is_quasi_letter orf is_digit;
    94 
    95 
       
    96 fun is_symbolic s =
       
    97   size s > 2 andalso nth_elem_string (2, s) <> "^";
       
    98 
    95 fun is_printable s =
    99 fun is_printable s =
    96   size s = 1 andalso ord space <= ord s andalso ord s <= ord "~" orelse
   100   size s = 1 andalso ord space <= ord s andalso ord s <= ord "~" orelse
    97   size s > 2 andalso nth_elem_string (2, s) <> "^";
   101   is_symbolic s;
       
   102 
    98 
   103 
    99 fun sym_length ss = foldl (fn (n, s) => if is_printable s then n + 1 else n) (0, ss);
   104 fun sym_length ss = foldl (fn (n, s) => if is_printable s then n + 1 else n) (0, ss);
   100 
   105 
   101 
   106 
   102 (* beginning *)
   107 (* beginning *)