src/Pure/Syntax/lexicon.ML
changeset 67549 7b399522d6c1
parent 67548 c0f1667c1943
child 67550 3b666615e3ce
equal deleted inserted replaced
67548:c0f1667c1943 67549:7b399522d6c1
    26   val token_kind_ord: token_kind * token_kind -> order
    26   val token_kind_ord: token_kind * token_kind -> order
    27   datatype token = Token of token_kind * string * Position.range
    27   datatype token = Token of token_kind * string * Position.range
    28   val kind_of_token: token -> token_kind
    28   val kind_of_token: token -> token_kind
    29   val str_of_token: token -> string
    29   val str_of_token: token -> string
    30   val pos_of_token: token -> Position.T
    30   val pos_of_token: token -> Position.T
       
    31   val tokens_match_ord: token * token -> order
    31   val is_proper: token -> bool
    32   val is_proper: token -> bool
    32   val mk_eof: Position.T -> token
    33   val mk_eof: Position.T -> token
    33   val eof: token
    34   val eof: token
    34   val is_eof: token -> bool
    35   val is_eof: token -> bool
    35   val stopper: token Scan.stopper
    36   val stopper: token Scan.stopper
   142 
   143 
   143 fun kind_of_token (Token (k, _, _)) = k;
   144 fun kind_of_token (Token (k, _, _)) = k;
   144 fun str_of_token (Token (_, s, _)) = s;
   145 fun str_of_token (Token (_, s, _)) = s;
   145 fun pos_of_token (Token (_, _, (pos, _))) = pos;
   146 fun pos_of_token (Token (_, _, (pos, _))) = pos;
   146 
   147 
       
   148 fun tokens_match_ord toks =
       
   149   (case apply2 kind_of_token toks of
       
   150     (Literal, Literal) => fast_string_ord (apply2 str_of_token toks)
       
   151   | kinds => token_kind_ord kinds);
       
   152 
   147 val is_proper = kind_of_token #> (fn Space => false | Comment _ => false | _ => true);
   153 val is_proper = kind_of_token #> (fn Space => false | Comment _ => false | _ => true);
   148 
   154 
   149 
   155 
   150 (* stopper *)
   156 (* stopper *)
   151 
   157