If this makes it, can the lexers be indexed by a string instead of an ID also?
That's actually exactly my suggestion. For me an "ID" is a mixture of numbers and characters... ;-)
Anyway, I've had a look at killerbots' changes. It's quite a big patch but I guess I understood what's going on. I like the way he replaced the "direct indexing" with methods "Get/SetCompiler(By)Id". Thus the ID can be anything and still (if required) the old index to be backward compatible. Looks good to me, it's extensible and flexible.
I'm still trying to apply the path to the current SVN head but there have been really massive changes meanwhile... I guess when I've finished it won't work... A pity that it hasn't been applied any time earlier...
Morten.