byte id = context.rules.getKeywords().lookup(line, start, len);
if(context.rules.getHighlightDigits()) { boolean digit = true; char[] array = line.array; boolean octal = false; boolean hex = false; loop:		for(int i = 0; i < len; i++) { char ch = array[start+i]; switch(ch) { case '0': if(i == 0) octal = true; continue loop; case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': continue loop; case 'x': case 'X': if(octal && i == 1) { hex = true; continue loop; } else break; case 'a': case 'A': case 'b': case 'B': case 'c': case 'C': case 'd': case 'D': case 'e': case 'E': case 'f': case 'F': if(hex) continue loop; else break; default: break; }
	private void markKeyword(LineInfo info, Segment line, int start, int end)	{		int len = end - start;		byte id = context.rules.getKeywords().lookup(line, start, len);		if(id != Token.NULL)		{			if(start != lastOffset)			{				addToken(info,start - lastOffset, getActionToken(					context.rules.getDefault()));			}			addToken(info,len, id);			lastOffset = end;		}	}