src/Pure/Isar/outer_lex.ML
changeset 8231 fa93309ff27e
parent 7902 10fd5d922c97
child 8580 e79ee31d3936
equal deleted inserted replaced
8230:6f8aa407bcf9 8231:fa93309ff27e
   136 (* scan symbolic idents *)
   136 (* scan symbolic idents *)
   137 
   137 
   138 val sym_chars = explode "!#$%&*+-/:<=>?@^_`|~";
   138 val sym_chars = explode "!#$%&*+-/:<=>?@^_`|~";
   139 fun is_sym_char s = s mem sym_chars;
   139 fun is_sym_char s = s mem sym_chars;
   140 
   140 
   141 val scan_symid = Scan.any1 is_sym_char >> implode;
   141 val scan_symid =
   142 
   142   Scan.any1 is_sym_char >> implode ||
   143 fun is_symid s = s <> "" andalso forall is_sym_char (Symbol.explode s);
   143   Scan.one Symbol.is_symbolic;
       
   144 
       
   145 fun is_symid str =
       
   146   (case try Symbol.explode str of
       
   147     Some [s] => Symbol.is_symbolic s orelse is_sym_char s
       
   148   | Some ss => forall is_sym_char ss
       
   149   | _ => false);
       
   150 
   144 val is_sid = is_symid orf Syntax.is_identifier;
   151 val is_sid = is_symid orf Syntax.is_identifier;
   145 
   152 
   146 
   153 
   147 (* scan strings *)
   154 (* scan strings *)
   148 
   155