public ParseResult <T> Parse([SpecialNullHandling] string text) { foreach (IPattern <T> pattern in patterns) { ParseResult <T> result = pattern.Parse(text); if (result.Success || !result.ContinueAfterErrorWithMultipleFormats) { return(result); } } return(ParseResult <T> .NoMatchingFormat(new ValueCursor(text))); }
public ParseResult <T> ParsePartial(ValueCursor cursor) { int index = cursor.Index; foreach (IPartialPattern <T> pattern in patterns) { cursor.Move(index); ParseResult <T> result = pattern.ParsePartial(cursor); if (result.Success || !result.ContinueAfterErrorWithMultipleFormats) { return(result); } } cursor.Move(index); return(ParseResult <T> .NoMatchingFormat(cursor)); }