예제 #1
0
    public void ItemParser()
    {
        var stream = new MemoryStream <char>("abc".AsMemory());
        var p      = Combinator.Item <char>();

        var r1 = p.Parse(stream);
        var r2 = p.Parse(stream);
        var r3 = p.Parse(stream);
        var r4 = p.Parse(stream);

        Assert.True(r1.IsOk);
        Assert.True(r2.IsOk);
        Assert.True(r3.IsOk);
        Assert.False(r4.IsOk);
        Assert.Equal('a', r1.Ok.Value);
        Assert.Equal('b', r2.Ok.Value);
        Assert.Equal('c', r3.Ok.Value);
    }
예제 #2
0
    public void ExactItemParser()
    {
        var stream = new MemoryStream <char>("abc".AsMemory());
        var p1     = Combinator.Item('a');
        var p2     = Combinator.Item('b');
        var p3     = Combinator.Item('d');
        var p4     = Combinator.Item('c');

        var r1 = p1.Parse(stream);
        var r2 = p2.Parse(stream);
        var r3 = p3.Parse(stream);
        var r4 = p4.Parse(stream);

        Assert.True(r1.IsOk);
        Assert.True(r2.IsOk);
        Assert.False(r3.IsOk);
        Assert.True(r4.IsOk);
        Assert.Equal('a', r1.Ok.Value);
        Assert.Equal('b', r2.Ok.Value);
        Assert.Equal('c', r4.Ok.Value);
    }