diff --git a/Rechenmaschine.java b/Rechenmaschine.java index d3371db..4488450 100644 --- a/Rechenmaschine.java +++ b/Rechenmaschine.java @@ -241,7 +241,11 @@ public class Rechenmaschine { currentToken.append(buchstabe); state = 2; } - case '+', '-', '*', '/' -> { + case '+', '-' -> { + tokenlist.append(new Token("OPERATOR",Character.toString(buchstabe))); + state = 5; + } + case '*', '/' -> { System.out.println("Unmittelbar nach ( darf kein Operator oder ) folgen."); return false; } @@ -321,7 +325,7 @@ public class Rechenmaschine { state = 1; break; } else if( currentToken.getToken().equals("(")){ - state = 0; + state = 2; break; } else if( currentToken.getToken().equals(")")){ state = 1; @@ -345,11 +349,28 @@ public class Rechenmaschine { return false; } else if( currentToken.getToken().equals(")")) { state = 1; + break; + } else { + fehler = "Unbekanntes Token: "+currentToken.getType(); + return false; + } + case 2: + if( currentToken.getType().equals("OPERATOR") ) { + state = 0; + break; + } else if( currentToken.getType().equals("OPERAND") ) { + state = 1; + break; + } else if( currentToken.getToken().equals("(")){ + state = 2; + break; + } else if( currentToken.getToken().equals(")")){ + state = 1; + break; } else { fehler = "Unbekanntes Token: "+currentToken.getType(); return false; } - } tokenlist.next();