diff --git a/src/Application.java b/src/Application.java index 8f0b93c8202b4b61dc85fd2a8d69dcde1e3e5e5c..b8e4e45f08075ed7b365333a687d6bd7d50829ba 100644 --- a/src/Application.java +++ b/src/Application.java @@ -3,7 +3,7 @@ import java.util.List; public class Application { public static void main(String[] args) { - List<String> test = Arrays.asList("1 + x^2 - (31 * x)"); + List<String> test = Arrays.asList("1 + xy^2 - (31 * x)y"); for (String value: test) { List<Lexer.Token> tokens = Lexer.lex(value); for(Lexer.Token singleToken: tokens) { diff --git a/src/Lexer.java b/src/Lexer.java index 5cc07ddb68f4fe8735fd46d2fd66adbbd1a9f7f3..250e8631aa081571ccc743481aa0197dda98b97d 100644 --- a/src/Lexer.java +++ b/src/Lexer.java @@ -48,15 +48,16 @@ public class Lexer { index++; } else if(Character.isLetter(current)){ - int endIndex = index+1; - if(endIndex<input.length()) { - while(Character.isLetter(input.charAt(endIndex)) && endIndex<input.length()) { - endIndex += 1; + int iterator = index; + while(Character.isLetter(input.charAt(iterator)) && iterator<input.length()) { + Token token = new Token(TokenType.VARIABLE, String.valueOf(input.charAt(iterator))); + result.add(token); + iterator += 1; + if(!(iterator<input.length())) { + break; } } - Token token = new Token(TokenType.VARIABLE, input.substring(index,endIndex)); - result.add(token); - index += endIndex - index; + index += iterator - index; } else { Token token = new Token(TokenType.SPECIAL, String.valueOf(current));