All pastes #762899 Raw Edit

Formula.java

public java v1 · immutable
·published 2007-11-05 23:55 UTC
rendered paste body
package uebung06;import java.util.Map;import java.util.Stack;import java.util.StringTokenizer;public class Formula implements UnaryPredicate {    /** erlaubte Operationen */    private final static int NOT = 0;    private final static int AND = 1;    private final static int OR = 2;    private final static int PREDICATE = 3;    private static int type(String tok) {         if (tok.equals("NOT"))           return NOT;         else if (tok.equals("AND"))      return AND;         else if (tok.equals("OR"))       return OR;         else                            return PREDICATE;    }    private UnaryPredicate executable;   /**      * erzeugt ein unäres Prädikat, das beliebig oft ausgeführt werden kann      *      * @param frm       eine Formel in Postfix-Form mit AND, OR und NOT      * @param namespace ein Verzeichnis der Praedikate. Die Namen der Praedikate      *                  sind die terminalen Symbole der Formel.      */    public Formula(String frm, Map namespace) {         executable = compile(frm, namespace);    }    /**      * wendet das unäre Prädikat (die Formel) auf ein Objekt (die Eingabe) an      */    public boolean execute(Object obj) {         return executable.execute(obj);    }    /**      * wandelt eine Formel in Postfix-Notation in ein unäres Prädikat um      *      * @return unäres Prädikat das der Formel entspricht      */    private UnaryPredicate compile(String frm, Map namespace) {         Stack stack = new Stack(); // Stack von unären Prädikaten         StringTokenizer s = new StringTokenizer(frm);         while (s.hasMoreTokens()) {        	 String token = s.nextToken();        	 switch(type(token)) {        	 	case NOT: //        	 		was ist hier zu tun?        	 		break; // break aus der switch anweisung?        	 	case AND://        	 		tuwas        	 		break;        	 	case OR://        	 		        	 		break;        	 	case PREDICATE://        	 		hol das Objekt aus der Map und pack's auf den Stack        	 		break;        	 }         }		return executable; // TODO richtiges return      }}