Do I see it right that it really comes down to one use of isIdentifierStart(c) in one huge switch-case? Since "warp" seems to be interested only in ASCII properties since it is processing C code, could the switch-case be optimized into a 256 entries large jump table?
If a table lookup (char->bool) is faster than multiple comparisons, why shouldn't this apply to char->address as well? -- Marco