Correctly handle un-matched tokens and end-of-string situations.

This commit is contained in:
Danila Fedorin 2017-07-26 13:24:46 -07:00
parent 798ee6f7c3
commit e816b86a3e
1 changed files with 2 additions and 1 deletions

View File

@ -87,11 +87,12 @@ public class Lexer<T> {
int index = startAt;
ArrayList<Match<T>> matches = new ArrayList<>();
Match<T> lastMatch = null;
while((lastMatch = lexOne(from, index, compare)) != null && index < from.length()){
while(index < from.length() && (lastMatch = lexOne(from, index, compare)) != null){
if(lastMatch.getTo() == lastMatch.getFrom()) return null;
matches.add(lastMatch);
index += lastMatch.getTo() - lastMatch.getFrom();
}
if(lastMatch == null) return null;
return matches;
}