src/Pure/Isar/token.ML
changeset 58861 5ff61774df11
parent 58855 2885e2eaa0fb
child 58863 64e571275b36
equal deleted inserted replaced
58860:fee7cfa69c50 58861:5ff61774df11
    42   val ident_with: (string -> bool) -> T -> bool
    42   val ident_with: (string -> bool) -> T -> bool
    43   val is_command: T -> bool
    43   val is_command: T -> bool
    44   val is_name: T -> bool
    44   val is_name: T -> bool
    45   val is_proper: T -> bool
    45   val is_proper: T -> bool
    46   val is_improper: T -> bool
    46   val is_improper: T -> bool
    47   val is_semicolon: T -> bool
       
    48   val is_comment: T -> bool
    47   val is_comment: T -> bool
    49   val is_begin_ignore: T -> bool
    48   val is_begin_ignore: T -> bool
    50   val is_end_ignore: T -> bool
    49   val is_end_ignore: T -> bool
    51   val is_error: T -> bool
    50   val is_error: T -> bool
    52   val is_space: T -> bool
    51   val is_space: T -> bool
   231   | is_proper (Token (_, (Comment, _), _)) = false
   230   | is_proper (Token (_, (Comment, _), _)) = false
   232   | is_proper _ = true;
   231   | is_proper _ = true;
   233 
   232 
   234 val is_improper = not o is_proper;
   233 val is_improper = not o is_proper;
   235 
   234 
   236 fun is_semicolon (Token (_, (Keyword, ";"), _)) = true
       
   237   | is_semicolon _ = false;
       
   238 
       
   239 fun is_comment (Token (_, (Comment, _), _)) = true
   235 fun is_comment (Token (_, (Comment, _), _)) = true
   240   | is_comment _ = false;
   236   | is_comment _ = false;
   241 
   237 
   242 fun is_begin_ignore (Token (_, (Comment, "<"), _)) = true
   238 fun is_begin_ignore (Token (_, (Comment, "<"), _)) = true
   243   | is_begin_ignore _ = false;
   239   | is_begin_ignore _ = false;
   339 fun unparse_src (Src {args, ...}) = map unparse args;
   335 fun unparse_src (Src {args, ...}) = map unparse args;
   340 
   336 
   341 fun print tok = Markup.markup (markup tok) (unparse tok);
   337 fun print tok = Markup.markup (markup tok) (unparse tok);
   342 
   338 
   343 fun text_of tok =
   339 fun text_of tok =
   344   if is_semicolon tok then ("terminator", "")
   340   let
   345   else
   341     val k = str_of_kind (kind_of tok);
   346     let
   342     val m = markup tok;
   347       val k = str_of_kind (kind_of tok);
   343     val s = unparse tok;
   348       val m = markup tok;
   344   in
   349       val s = unparse tok;
   345     if s = "" then (k, "")
   350     in
   346     else if size s < 40 andalso not (exists_string (fn c => c = "\n") s)
   351       if s = "" then (k, "")
   347     then (k ^ " " ^ Markup.markup m s, "")
   352       else if size s < 40 andalso not (exists_string (fn c => c = "\n") s)
   348     else (k, Markup.markup m s)
   353       then (k ^ " " ^ Markup.markup m s, "")
   349   end;
   354       else (k, Markup.markup m s)
       
   355     end;
       
   356 
   350 
   357 
   351 
   358 
   352 
   359 (** associated values **)
   353 (** associated values **)
   360 
   354