49 Symbol_Pos.explode (text, pos) |
49 Symbol_Pos.explode (text, pos) |
50 |> map_filter (fn (sym, pos) => |
50 |> map_filter (fn (sym, pos) => |
51 if Symbol.is_malformed sym |
51 if Symbol.is_malformed sym |
52 then SOME ((pos, Markup.bad), "Malformed symbolic character") else NONE); |
52 then SOME ((pos, Markup.bad), "Malformed symbolic character") else NONE); |
53 val is_malformed = Token.is_error tok orelse not (null malformed_symbols); |
53 val is_malformed = Token.is_error tok orelse not (null malformed_symbols); |
54 val (markup, msg) = Token.markup tok; |
54 val reports = Token.report tok :: Token.completion_report tok @ malformed_symbols; |
55 val reports = ((Token.pos_of tok, markup), msg) :: malformed_symbols; |
|
56 in (is_malformed, reports) end; |
55 in (is_malformed, reports) end; |
57 |
56 |
58 in |
57 in |
59 |
58 |
60 fun reports_of_tokens toks = |
59 fun reports_of_tokens toks = |
61 let val results = map reports_of_token toks |
60 let val results = map reports_of_token toks |
62 in (exists fst results, maps snd results) end; |
61 in (exists fst results, maps snd results) end; |
63 |
62 |
64 fun present_token tok = |
63 fun present_token tok = |
65 Markup.enclose (fst (Token.markup tok)) (Output.output (Token.unparse tok)); |
64 Markup.enclose (Token.markup tok) (Output.output (Token.unparse tok)); |
66 |
65 |
67 end; |
66 end; |
68 |
67 |
69 |
68 |
70 |
69 |