private void lexKeyWord() { int offset = reader.offset() - 1; StringBuilder buf = new StringBuilder(); while (true) { int c = reader.read(); if (c < 0) { //tok = TokenType.EOS; break; } if (!Util.isIdentifierPart((char)c)) { reader.unread(); break; } buf.Append((char)c); } String s = buf.ToString(); var value = s; if (keyWordRuleDic.ContainsKey(s)) { tok = TokenType.Keyword; var elem = keyWordRuleDic[s]; elem.startIndex = offset; elem.len = value.Length; resultRule = elem; } }