rendered paste bodypackage homework02;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
public class Environment {
private Environment prevEnv;
private LinkedList<Symbol> keys;
private LinkedList<Object> values;
private HashMap<Symbol, Object> myHashMap;
public Environment() {
this.keys = new LinkedList<Symbol>();
this.values = new LinkedList<Object>();
}
public Environment(LinkedList<Symbol> paramKeys, Environment prevEnv) {
this.prevEnv = prevEnv;
this.keys = new LinkedList<Symbol>();
if (equalContent(paramKeys) == true) {
System.out.println("the list has equal content");
System.exit(0);
} else {
System.out.println("the list is ok");
Iterator iter1 = paramKeys.listIterator();
while (iter1.hasNext()) {
Symbol s = (Symbol) iter1.next();
this.keys.add(s);
}
}
}
public static boolean equalContent(LinkedList<Symbol> paramKeys) {
int cnt = 0;
for (int i = 0; i < paramKeys.size(); i++) {
Symbol s = paramKeys.get(i);
for (int j = i; j < paramKeys.size(); j++) {
Symbol t = paramKeys.get(j);
if (s.toString().equals(t.toString())) {
cnt++;
}
}
if (cnt >= 2) {
System.out.println("doppelt:" + s);
return true;
}
cnt = 0;
}
return false;
}
public void bind(LinkedList<Object> paramValues) {
this.values = new LinkedList<Object>();
this.myHashMap = new HashMap<Symbol, Object>();
if (this.keys.size() == paramValues.size()) {
System.out.println("beide listen gleiche größe..");
} else {
System.out.println("größe ungleich..");
System.exit(0);
}
Iterator iter1 = paramValues.listIterator();
while (iter1.hasNext()) {
Object s = (Object) iter1.next();
this.values.add(s);
}
for (int i = 0; i < this.keys.size(); i++) {
Symbol s = (Symbol) this.keys.get(i);
Object o = (Object) this.values.get(i);
this.myHashMap.put(s, o);
}
}
public Object lookup(Symbol paramKey){
if (this.prevEnv == null) {
System.out.println("sorry, nix da");
} else {
if (this.myHashMap.get(paramKey) == null) {
System.out.println(this.myHashMap.get(paramKey));
System.out.println("hier null");
this.prevEnv.lookup(paramKey);
} else {
System.out.println("param gefunden: "
+ this.myHashMap.get(paramKey));
return this.myHashMap.get(paramKey);
}
}
return null;
}
}