--- a/src/Pure/ML/ml_lex.ML Fri Mar 20 20:21:38 2009 +0100
+++ b/src/Pure/ML/ml_lex.ML Fri Mar 20 20:22:13 2009 +0100
@@ -16,6 +16,8 @@
val pos_of: token -> string
val kind_of: token -> token_kind
val content_of: token -> string
+ val markup_of: token -> Markup.T
+ val report_token: token -> unit
val keywords: string list
val scan_antiq: Symbol_Pos.T list -> token Antiquote.antiquote * Symbol_Pos.T list
val source: (Symbol.symbol, 'a) Source.source ->
@@ -74,6 +76,26 @@
| is_improper _ = false;
+(* markup *)
+
+val markup_of = kind_of #>
+ (fn Keyword => Markup.ML_keyword
+ | Ident => Markup.ML_ident
+ | LongIdent => Markup.ML_ident
+ | TypeVar => Markup.ML_tvar
+ | Word => Markup.ML_numeral
+ | Int => Markup.ML_numeral
+ | Real => Markup.ML_numeral
+ | Char => Markup.ML_char
+ | String => Markup.ML_string
+ | Space => Markup.none
+ | Comment => Markup.ML_comment
+ | Error _ => Markup.ML_malformed
+ | EOF => Markup.none);
+
+fun report_token tok = Position.report (markup_of tok) (position_of tok);
+
+
(** scanners **)