public void TokenizedStreamTest() { // 任意のパーサを繰り返し適用した結果をソースストリームとして利用可能にします。 // 字句解析等の前段処理を可能にします。 // 空白に挟まれた文字列を1要素として返すパーサ。 var token = Many1(LetterOrDigit()).Between(Spaces()).AsString(); var source = "The quick brown fox jumps over the lazy dog"; using var stream = StringStream.Create(source); using var tokenized = ParsecState.Tokenize(stream, token); // 任意のトークンにマッチし、その長さを返すパーサ。 var parser = Many(Any <string>().Map(x => x.Length)); parser.Parse(tokenized).WillSucceed(value => value.Is(source.Split(' ').Select(x => x.Length))); }