src/Pure/ML/ml_lex.ML
changeset 30614 845bcfd3e9cd
parent 30600 de241396389c
child 30636 bd8813d7774d
--- 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 **)