}
+ /**
+ *
+ * @return next @TokenizerMatch or <code>null</code> if end of input is reached.
+ * @throws InvalidSyntaxException
+ */
public TokenizerMatch getNextToken() throws InvalidSyntaxException {
tokenIndexes.push(currentIndex);
currentIndex += terminator.startSequence.length();
}
- private TokenizerMatch buildPreservedToken(StringBuilder token, Terminator terminator) throws InvalidSyntaxException {
+ /**
+ * @throws InvalidSyntaxException if end sequence is not found as is expected by given token.
+ */
+ private TokenizerMatch buildPreservedToken(StringBuilder token, Terminator terminator)
+ throws InvalidSyntaxException {
if (hasAccumulatedToken(token))
return new TokenizerMatch(token.toString(), null, terminator);
if (terminator.hasEndSequence())
- return buildComplexPreservedToken(terminator);
+ return buildTokenWithExpectedENdSequence(terminator);
else
- return buildSimplePreservedToken(terminator);
+ return buildTokenWithoutEndSequence(terminator);
}
- private TokenizerMatch buildSimplePreservedToken(Terminator terminator) {
+ private TokenizerMatch buildTokenWithoutEndSequence(Terminator terminator) {
currentIndex += terminator.startSequence.length();
return new TokenizerMatch(terminator.startSequence, null, terminator);
}
- private TokenizerMatch buildComplexPreservedToken(Terminator terminator) throws InvalidSyntaxException {
+ private TokenizerMatch buildTokenWithExpectedENdSequence(Terminator terminator) throws InvalidSyntaxException {
int endSequenceIndex = getEndSequenceIndex(terminator);
String reminder = source.substring(currentIndex + terminator.startSequence.length(), endSequenceIndex);
currentIndex = endSequenceIndex + terminator.endSequence.length();
return new TokenizerMatch(terminator.startSequence, reminder, terminator);
}
+ /**
+ * @throws InvalidSyntaxException if end of input is reached without finding expected end sequence.
+ */
private int getEndSequenceIndex(Terminator terminator) throws InvalidSyntaxException {
int endSequenceIndex = source.indexOf(terminator.endSequence,
currentIndex + terminator.startSequence.length());