equal
deleted
inserted
replaced
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); |