fix: Using covariant interface for IParser and IParseResult.
Rename CanonSharp.Common to CanonSharp.Pascal.
This commit is contained in:
@@ -11,13 +11,13 @@ namespace CanonSharp.Combinator.Parsers.Modifiers;
|
||||
/// <param name="resume">处理失败结果的恢复函数</param>
|
||||
/// <typeparam name="TToken">输入流令牌</typeparam>
|
||||
/// <typeparam name="T">解析器返回结果类型</typeparam>
|
||||
internal sealed class TryParser<TToken, T>(Parser<TToken, T> parser, Func<FailedResult<TToken, T>, T> resume)
|
||||
internal sealed class TryParser<TToken, T>(IParser<TToken, T> parser, Func<IFailedResult<TToken, T>, T> resume)
|
||||
: ModifiedParser<TToken, T, T>(parser)
|
||||
{
|
||||
protected override ParseResult<TToken, T> Succeed<TState>(TState state,
|
||||
SuccessfulResult<TToken, T> successfulResult)
|
||||
protected override IParseResult<TToken, T> Succeed<TState>(TState state,
|
||||
ISuccessfulResult<TToken, T> successfulResult)
|
||||
=> successfulResult;
|
||||
|
||||
protected override ParseResult<TToken, T> Fail<TState>(TState state, FailedResult<TToken, T> failedResult)
|
||||
protected override IParseResult<TToken, T> Fail<TState>(TState state, IFailedResult<TToken, T> failedResult)
|
||||
=> ParseResultBuilder.Succeed<TToken, TState, T>(resume(failedResult), state);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user