public TokenizerResult Parse(string txt) { var l = new List <object>(); var spacerequired = false; var txtSpan = TextSpan.FromString(txt); while (txtSpan.Length > 0) { if (spacerequired) { if (!char.IsWhiteSpace(txtSpan[0])) { break; } } var item = ParseSingleToken(ref txtSpan); if (item is null) { break; } l.Add(item); spacerequired = true; } return(new TokenizerResult { Tokens = l.ToArray(), NotParsedEnd = txtSpan }); }