public IEnumerable <LangToken> ParseTokens(string text) { for (var i = 0; i < text.Length; i++) { var cls = CharClassify.ClassifyChar(text[i]); if (cls > 0) { var j = i; for (; j < text.Length && (CharClassify.ClassifyChar(text[j]) & cls) > 0; j++) { ; } var word = text.Substring(i, j - i); var result = new LangToken { Value = word, LeftOffset = i, RightOffset = j - 1 }; yield return(result); i = j - 1; } } }
public void AddParent(LangToken token) { parentTokens.Add(token); if (LeftOffset == -1 || token.LeftOffset < LeftOffset) { LeftOffset = token.LeftOffset; } if (RightOffset == -1 || token.RightOffset > RightOffset) { RightOffset = token.RightOffset; } }