src/Pure/Syntax/lexicon.ML
changeset 50242 56b9c792a98b
parent 50239 fb579401dc26
child 51612 6a1e40f9dd55
equal deleted inserted replaced
50241:8b0fdeeefef7 50242:56b9c792a98b
   291     fun nat n [] = n
   291     fun nat n [] = n
   292       | nat n (c :: cs) = nat (n * 10 + (ord c - ord "0")) cs;
   292       | nat n (c :: cs) = nat (n * 10 + (ord c - ord "0")) cs;
   293 
   293 
   294     fun idxname cs ds = (implode (rev cs), nat 0 ds);
   294     fun idxname cs ds = (implode (rev cs), nat 0 ds);
   295     fun chop_idx [] ds = idxname [] ds
   295     fun chop_idx [] ds = idxname [] ds
       
   296       | chop_idx (cs as (_ :: "\\<^sub>" :: _)) ds = idxname cs ds
   296       | chop_idx (cs as (_ :: "\\<^isub>" :: _)) ds = idxname cs ds
   297       | chop_idx (cs as (_ :: "\\<^isub>" :: _)) ds = idxname cs ds
   297       | chop_idx (cs as (_ :: "\\<^isup>" :: _)) ds = idxname cs ds
   298       | chop_idx (cs as (_ :: "\\<^isup>" :: _)) ds = idxname cs ds
   298       | chop_idx (c :: cs) ds =
   299       | chop_idx (c :: cs) ds =
   299           if Symbol.is_digit c then chop_idx cs (c :: ds)
   300           if Symbol.is_digit c then chop_idx cs (c :: ds)
   300           else idxname (c :: cs) ds;
   301           else idxname (c :: cs) ds;