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);
    }     
  }  
}