Java: TokenizeExpr.java

Sourcecode for TokenizeExpr.java

//Tokenize an expression.  Example of delimiters as tokens.  

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;

public class TokenizeExpr extends JApplet {
   //----------------------------------------- field variables
   JTextField expr;        // expression text
   JTextField delimiters;  // delimiters
   JTextArea tokenDisplay; // show the tokens

   //-------------------------------------------------- init()
   public void init() {
      //--- Define listener used to do tokenization
      ActionListener tok = new ActionListener() {
          public void actionPerformed(ActionEvent e) {
              tokenDisplay.setText(tokenizeEx(expr.getText(),
                                              delimiters.getText()));
          }
      };
      
      //--- Initialize all the components
      expr = new JTextField(20);       // input expression
      expr.addActionListener(tok);

      delimiters = new JTextField(20); // show/set delimiters
      delimiters.setText(" +-*/()");
      delimiters.addActionListener(tok);

      tokenDisplay = new JTextArea(20, 20); // display tokens
      tokenDisplay.setEditable(false);

      //--- Arrange all components on panel
      JPanel content = new JPanel();
      content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
      content.setBackground(new Color(0x8080FF));
      content.add(new JLabel("Expression"));
      content.add(expr);
      content.add(new JLabel("Delimiters"));
      content.add(delimiters);
      content.add(new JLabel("Tokens"));
      content.add(tokenDisplay);
      this.setContentPane(content);
   }//end init
   
   
   //-------------------------------------------------- tokenizeEx()
   private String tokenizeEx(String expression, String delims) {
      StringBuffer sb = new StringBuffer(100);
      StringTokenizer scanner;    
      scanner = new StringTokenizer(expression, delims, true);
      
      while (scanner.hasMoreTokens()) {
         String aWord = scanner.nextToken();
         if (!Character.isWhitespace(aWord.charAt(0))) {
            sb.append(aWord + "\n");
         }
      }
      return sb.toString();
   }//end tokenizeEx
   
}//endclass