-
- }
-
- private void skipUntilTerminatorEnd(Terminator terminator) throws InvalidSyntaxException {
- if (terminator.hasEndSequence())
- currentIndex = getEndSequenceIndex(terminator) + terminator.endSequence.length();
- else
- currentIndex += terminator.startSequence.length();
- }
-
- 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);
- else
- return buildSimplePreservedToken(terminator);
- }
-
- private TokenizerMatch buildSimplePreservedToken(Terminator terminator) {
- currentIndex += terminator.startSequence.length();
- return new TokenizerMatch(terminator.startSequence, null, terminator);
- }
-
- private TokenizerMatch buildComplexPreservedToken(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);
- }
-
- private int getEndSequenceIndex(Terminator terminator) throws InvalidSyntaxException {
- int endSequenceIndex = source.indexOf(terminator.endSequence,
- currentIndex + terminator.startSequence.length());
-
- if (endSequenceIndex < 0)
- throw new InvalidSyntaxException("Expected \"" + terminator.endSequence + "\" but not found.");
-
- return endSequenceIndex;