src/Pure/Syntax/lexicon.ML
changeset 53016 fa9c38891cf2
parent 52920 4539e4a06339
child 54732 b01bb3d09928
equal deleted inserted replaced
53015:a1119cf551e8 53016:fa9c38891cf2
   293       | nat n (c :: cs) = nat (n * 10 + (ord c - ord "0")) cs;
   293       | nat n (c :: cs) = nat (n * 10 + (ord c - ord "0")) cs;
   294 
   294 
   295     fun idxname cs ds = (implode (rev cs), nat 0 ds);
   295     fun idxname cs ds = (implode (rev cs), nat 0 ds);
   296     fun chop_idx [] ds = idxname [] ds
   296     fun chop_idx [] ds = idxname [] ds
   297       | chop_idx (cs as (_ :: "\\<^sub>" :: _)) ds = idxname cs ds
   297       | chop_idx (cs as (_ :: "\\<^sub>" :: _)) ds = idxname cs ds
   298       | chop_idx (cs as (_ :: "\\<^isub>" :: _)) ds = idxname cs ds
   298       | chop_idx (cs as (_ :: "\\<^isub>" :: _)) ds = idxname cs ds  (*legacy*)
       
   299       | chop_idx (cs as (_ :: "\\<^isup>" :: _)) ds = idxname cs ds  (*legacy*)
   299       | chop_idx (c :: cs) ds =
   300       | chop_idx (c :: cs) ds =
   300           if Symbol.is_digit c then chop_idx cs (c :: ds)
   301           if Symbol.is_digit c then chop_idx cs (c :: ds)
   301           else idxname (c :: cs) ds;
   302           else idxname (c :: cs) ds;
   302 
   303 
   303     val scan =
   304     val scan =