public T parse(
        CharSequence text,
        ParseLog status
    ) {

        int start = status.getPosition();

        for (int i = 0; i < this.parsers.length; i++) {
            status.reset(); // initialization
            status.setPosition(start);

            // use the default global attributes of every single parser
            T parsed = this.parsers[i].parse(text, status);

            if ((parsed != null) && !status.isError()) {
                return parsed;
            }

        }

        status.setError(status.getErrorIndex(), "Not matched by any format: " + text);
        return null;

    }
public T parse ( CharSequence text , ParseLog status ) { int start = status . getPosition ( ) ; for ( int i = 0 ; i < this . parsers . length ; i ++ ) { status . reset ( ) ; status . setPosition ( start ) ; T parsed = this . parsers [ i ] . parse ( text , status ) ; if ( ( parsed != null ) && ! status . isError ( ) ) { return parsed ; } } status . setError ( status . getErrorIndex ( ) , "Not matched by any format: " + text ) ; return null ; }
/*[deutsch]
<p>Interpretiert den angegebenen Text ab der angegebenen Position im
Log. </p>

<p>Folgendes Beispiel demonstriert eine sinnvolle Anwendung, wenn es um die Massenverarbeitung geht: </p>

<pre>
static final MultiFormatParser&lt;PlainDate&gt; MULTI_FORMAT_PARSER;

static {
ChronoFormatter&lt;PlainDate&gt; germanStyle =
ChronoFormatter.ofDatePattern(&quot;d. MMMM uuuu&quot;, PatternType.CLDR, Locale.GERMAN);
ChronoFormatter&lt;PlainDate&gt; frenchStyle =
ChronoFormatter.ofDatePattern(&quot;d. MMMM uuuu&quot;, PatternType.CLDR, Locale.FRENCH);
ChronoFormatter&lt;PlainDate&gt; usStyle =
ChronoFormatter.ofDatePattern(&quot;MM/dd/uuuu&quot;, PatternType.CLDR, Locale.US);
MULTI_FORMAT_PARSER = MultiFormatParser.of(germanStyle, frenchStyle, usStyle);
}

public Collection&lt;PlainDate&gt; parse(Collection&lt;String&gt; data) {
Collection&lt;PlainDate&gt; parsedDates = new ArrayList&lt;&gt;();
ParseLog plog = new ParseLog();
int index = 0;

for (String text : data) {
PlainDate date = MULTI_FORMAT_PARSER.parse(text, plog);
if ((date == null) || plog.isError()) {
// Anwender werden ermuntert, ein gutes Logging-Framework ihrer Wahl hier zu verwenden
System.out.println(&quot;Wrong entry found: &quot; + text + &quot; at position &quot; + index);
} else {
parsedDates.add(date);
}
index++;
}

return Collections.unmodifiableCollection(parsedDates);
}
</pre>

<p>Hinweis: Die Methode toleriert nicht interpretierte Zeichen am Textende. Wenn dieses Verhalten
nicht erw&uuml;nscht ist, dann bitte die alternative Methode {@link #parse(CharSequence)} benutzen. </p>

@param   text        text to be parsed
@param   status      parser information (always as new instance)
@return  result or {@code null} if parsing does not work
@throws  IndexOutOfBoundsException if the start position is at end of text or even behind
@since   3.14/4.11