src/Pure/General/symbol.ML
changeset 11010 2c6559297be3
parent 10953 ea024d025463
child 12116 4027b15377a5
equal deleted inserted replaced
11009:9e0ad9a5f9bb 11010:2c6559297be3
    26   val is_letdig: symbol -> bool
    26   val is_letdig: symbol -> bool
    27   val is_blank: symbol -> bool
    27   val is_blank: symbol -> bool
    28   val is_symbolic: symbol -> bool
    28   val is_symbolic: symbol -> bool
    29   val is_printable: symbol -> bool
    29   val is_printable: symbol -> bool
    30   val length: symbol list -> int
    30   val length: symbol list -> int
       
    31   val strip_blanks: string -> string
    31   val beginning: symbol list -> string
    32   val beginning: symbol list -> string
    32   val scan: string list -> symbol * string list
    33   val scan: string list -> symbol * string list
    33   val scanner: string -> (symbol list -> 'a * symbol list) -> symbol list -> 'a
    34   val scanner: string -> (symbol list -> 'a * symbol list) -> symbol list -> 'a
    34   val source: bool -> (string, 'a) Source.source ->
    35   val source: bool -> (string, 'a) Source.source ->
    35     (symbol, (string, 'a) Source.source) Source.source
    36     (symbol, (string, 'a) Source.source) Source.source
   112 fun sym_length ss = foldl (fn (n, s) =>
   113 fun sym_length ss = foldl (fn (n, s) =>
   113   (if not (is_printable s) then 0 else
   114   (if not (is_printable s) then 0 else
   114     (case Library.try String.substring (s, 2, 4) of
   115     (case Library.try String.substring (s, 2, 4) of
   115       Some s' => if s' = "long" orelse s' = "Long" then 2 else 1
   116       Some s' => if s' = "long" orelse s' = "Long" then 2 else 1
   116     | None => 1)) + n) (0, ss);
   117     | None => 1)) + n) (0, ss);
       
   118 
       
   119 fun strip_blanks s =
       
   120   implode (#1 (Library.take_suffix is_blank (#2 (Library.take_prefix is_blank (explode s)))));
   117 
   121 
   118 
   122 
   119 (* beginning *)
   123 (* beginning *)
   120 
   124 
   121 val smash_blanks = map (fn s => if is_blank s then space else s);
   125 val smash_blanks = map (fn s => if is_blank s then space else s);