fix: Using covariant interface for IParser and IParseResult.
Rename CanonSharp.Common to CanonSharp.Pascal.
This commit is contained in:
@@ -11,7 +11,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void ChoiceTest()
|
||||
{
|
||||
Parser<char, char> parser = Choice(Token('a'), Token('b'), Token('c'));
|
||||
IParser<char, char> parser = Choice(Token('a'), Token('b'), Token('c'));
|
||||
ValidateSuccessfulResult(parser, 'a', "abc");
|
||||
ValidateSuccessfulResult(parser, 'b', "bcd");
|
||||
ValidateSuccessfulResult(parser, 'c', "cde");
|
||||
@@ -25,10 +25,10 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void SequenceTest()
|
||||
{
|
||||
Parser<char, IEnumerable<char>> parser = Sequence(Token('a'), Token('b'), Token('c'));
|
||||
IParser<char, IEnumerable<char>> parser = Sequence(Token('a'), Token('b'), Token('c'));
|
||||
ValidateSuccessfulResult(parser, ['a', 'b', 'c'], "abc");
|
||||
|
||||
IEnumerable<Parser<char, char>> parsers = [Token('a'), Token('b'), Token('c')];
|
||||
IEnumerable<IParser<char, char>> parsers = [Token('a'), Token('b'), Token('c')];
|
||||
parser = Sequence(parsers);
|
||||
ValidateSuccessfulResult(parser, ['a', 'b', 'c'], "abc");
|
||||
}
|
||||
@@ -36,7 +36,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void LeftRightTest()
|
||||
{
|
||||
Parser<char, char> parser = Token('a').Left(Token('b'));
|
||||
IParser<char, char> parser = Token('a').Left(Token('b'));
|
||||
ValidateSuccessfulResult(parser, 'a', "ab");
|
||||
|
||||
parser = Token('a').Right(Token('b'));
|
||||
@@ -46,7 +46,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void ManyTest()
|
||||
{
|
||||
Parser<char, IEnumerable<char>> parser = Token('a').Many();
|
||||
IParser<char, IEnumerable<char>> parser = Token('a').Many();
|
||||
ValidateSuccessfulResult(parser, [], "bbb");
|
||||
ValidateSuccessfulResult(parser, ['a', 'a', 'a'], "aaa");
|
||||
|
||||
@@ -58,7 +58,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void SkipManyTest()
|
||||
{
|
||||
Parser<char, char> parser = Token('a').SkipMany().Right(Token('b'));
|
||||
IParser<char, char> parser = Token('a').SkipMany().Right(Token('b'));
|
||||
ValidateSuccessfulResult(parser, 'b', "aaaab");
|
||||
ValidateSuccessfulResult(parser, 'b', "bbbb");
|
||||
|
||||
@@ -72,7 +72,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
{
|
||||
// 等效于Many1
|
||||
// 但是不返回中间结果
|
||||
Parser<char, char> parser = Token('a').Chain(Token);
|
||||
IParser<char, char> parser = Token('a').Chain(Token);
|
||||
ValidateSuccessfulResult(parser, 'a', "aa");
|
||||
ValidateFailedResult(parser, "bb");
|
||||
|
||||
@@ -84,7 +84,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void ManyTillTest()
|
||||
{
|
||||
Parser<char, IEnumerable<char>> parser = Token('a').ManyTill(Token('b').LookAhead());
|
||||
IParser<char, IEnumerable<char>> parser = Token('a').ManyTill(Token('b').LookAhead());
|
||||
ValidateSuccessfulResult(parser, ['a', 'a', 'a'], "aaab");
|
||||
ValidateSuccessfulResult(parser, [], "b");
|
||||
|
||||
@@ -96,7 +96,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void SkipTillTest()
|
||||
{
|
||||
Parser<char, char> parser = Token('a').SkipTill(Token('b'));
|
||||
IParser<char, char> parser = Token('a').SkipTill(Token('b'));
|
||||
ValidateSuccessfulResult(parser, 'b', "aaab");
|
||||
ValidateSuccessfulResult(parser, 'b', "b");
|
||||
|
||||
@@ -108,7 +108,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void TakeTillTest()
|
||||
{
|
||||
Parser<char, IEnumerable<char>> parser = TakeTill(Token('b').LookAhead());
|
||||
IParser<char, IEnumerable<char>> parser = TakeTill(Token('b').LookAhead());
|
||||
ValidateSuccessfulResult(parser, ['a', 'a'], "aab");
|
||||
ValidateSuccessfulResult(parser, [], "b");
|
||||
|
||||
@@ -120,7 +120,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void MatchTest()
|
||||
{
|
||||
Parser<char, char> parser = Token('b').Match();
|
||||
IParser<char, char> parser = Token('b').Match();
|
||||
ValidateSuccessfulResult(parser, 'b', "asdfasdfasdfasdfb");
|
||||
ValidateSuccessfulResult(parser, 'b', "b");
|
||||
}
|
||||
@@ -128,7 +128,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void QuoteTest()
|
||||
{
|
||||
Parser<char, IEnumerable<char>> parser = Any<char>().Quote(Token('['), Token(']'));
|
||||
IParser<char, IEnumerable<char>> parser = Any<char>().Quote(Token('['), Token(']'));
|
||||
ValidateSuccessfulResult(parser, ['1', '2', '3'], "[123]");
|
||||
|
||||
parser = Any<char>().Quote(Token('\''));
|
||||
@@ -138,7 +138,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void SeparatedByTest()
|
||||
{
|
||||
Parser<char, IEnumerable<char>> parser = Token('a').SeparatedBy(Token(','));
|
||||
IParser<char, IEnumerable<char>> parser = Token('a').SeparatedBy(Token(','));
|
||||
ValidateSuccessfulResult(parser, ['a', 'a', 'a'], "a,a,a");
|
||||
ValidateSuccessfulResult(parser, ['a'], "a");
|
||||
ValidateSuccessfulResult(parser, [], "");
|
||||
@@ -152,7 +152,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void EndByTest()
|
||||
{
|
||||
Parser<char, IEnumerable<char>> parser = Satisfy<char>(char.IsLetter).EndBy(Token('.'));
|
||||
IParser<char, IEnumerable<char>> parser = Satisfy<char>(char.IsLetter).EndBy(Token('.'));
|
||||
ValidateSuccessfulResult(parser, ['a', 'b', 'c'], "abc.");
|
||||
ValidateSuccessfulResult(parser, [], ".");
|
||||
|
||||
@@ -164,7 +164,7 @@ public class CombinatorParserTests : ParserTestsBase
|
||||
[Fact]
|
||||
public void SeparatedOrEndByTest()
|
||||
{
|
||||
Parser<char, IEnumerable<char>> parser = Satisfy<char>(char.IsLetter).SeparatedOrEndBy1(Token(','));
|
||||
IParser<char, IEnumerable<char>> parser = Satisfy<char>(char.IsLetter).SeparatedOrEndBy1(Token(','));
|
||||
ValidateSuccessfulResult(parser, ['a', 'b', 'c'], "a,b,c,");
|
||||
ValidateSuccessfulResult(parser, ['a', 'b', 'c'], "a,b,c");
|
||||
ValidateFailedResult(parser, "");
|
||||
|
Reference in New Issue
Block a user