src/Pure/Isar/outer_lex.ML
changeset 20112 a25c5d283239
parent 19305 5c16895d548b
child 20664 ffbc5a57191a
equal deleted inserted replaced
20111:ba1676dd3546 20112:a25c5d283239
   188   keep_line (Scan.one Symbol.is_blank);
   188   keep_line (Scan.one Symbol.is_blank);
   189 
   189 
   190 
   190 
   191 (* scan symbolic idents *)
   191 (* scan symbolic idents *)
   192 
   192 
   193 val sym_chars = explode "!#$%&*+-/:<=>?@^_|~";
   193 val sym_chars = explode "!#$%&*+-/<=>?@^_|~";
   194 fun is_sym_char s = s mem sym_chars;
   194 fun is_sym_char s = s mem sym_chars;
   195 
   195 
   196 val scan_symid =
   196 val scan_symid =
   197   Scan.any1 is_sym_char >> implode ||
   197   Scan.any1 is_sym_char >> implode ||
   198   Scan.one Symbol.is_symbolic;
   198   Scan.one Symbol.is_symbolic;
   201   (case try Symbol.explode str of
   201   (case try Symbol.explode str of
   202     SOME [s] => Symbol.is_symbolic s orelse is_sym_char s
   202     SOME [s] => Symbol.is_symbolic s orelse is_sym_char s
   203   | SOME ss => forall is_sym_char ss
   203   | SOME ss => forall is_sym_char ss
   204   | _ => false);
   204   | _ => false);
   205 
   205 
   206 val is_sid = is_symid orf Syntax.is_identifier;
   206 fun is_sid s = s = ":" orelse is_symid s orelse Syntax.is_identifier s;
   207 
   207 
   208 
   208 
   209 (* scan strings *)
   209 (* scan strings *)
   210 
   210 
   211 local
   211 local