From f914c52768c1ae16df8f466409c0f9a1a21d518d Mon Sep 17 00:00:00 2001 From: Kraemerd <Dominic_Daniel.Kraemer@Student.Reutlingen-University.de> Date: Fri, 6 Jan 2023 06:01:55 +0100 Subject: [PATCH] improved lexter (variables can't be multiple characters) --- src/Application.java | 2 +- src/Lexer.java | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/Application.java b/src/Application.java index 8f0b93c..b8e4e45 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 5cc07dd..250e863 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)); -- GitLab