ArithmeticTokenizer.java
import java.util.*;
public class ArithmeticTokenizer extends StringTokenizer {
// zerlegt einen Eingabestring in Token
public ArithmeticTokenizer(String s) {
// erzeugt einen String-Tokenizer, der bei
// +-*/() und Leerzeichen auftrennt.
// Leerzeichen am Anfang oder Ende werden mit trim gleich beseitigt.
super(s.trim(), "+-*/() ", true);
}
public Token getNextToken() {
// liefert das nächste Token im Eingabestring zurück.
// zunächst Leerzeichen überlesen
String t;
do {
t = nextToken(); // liefert eines der Trennzeichen oder Rest
// Achtung: bei Leerzeichen am Ende gibt es hier Probleme!
// Daher wurden die mit trim schon implements Konstruktor beseitigt.
} while ( t.equals(" ") );
// ok, es ist nicht leer
if (t.equals("+") || t.equals("-") || t.equals("*") ||
t.equals("/") || t.equals("(") || t.equals(")") ) {
// Operator oder Klammer
return new Token(t.charAt(0));
} else {
// sollte eine ganze Zahl sein. Wenn nicht -> Exception!
int value = Integer.parseInt(t);
return new Token(value);
}
}
}