private string _Collect(CharacterClass expect, char ch) { CharacterBuffer buf = new CharacterBuffer(ch); while (true) { int cur = _reader.Peek(); if (cur == -1) { break; } ch = (char)cur; CharacterClass cc = _settings.Classifier [ch]; if ((cc & expect) == 0) { break; } buf.Write((char)_reader.Read()); } return(buf.ToString()); }
private string _CollectUntil(char[] stop, char[] disallowed) { CharacterBuffer buf = new CharacterBuffer(); while (true) { int cur = _reader.Read(); if (cur == -1) { throw new IOException(); } char ch = (char)cur; if (Array.IndexOf(stop, ch) >= 0) { break; } if (Array.IndexOf(disallowed, ch) >= 0) { throw new ApplicationException(); } buf.Write(ch); } return(buf.ToString()); }