StackVarEnv.java 1.81 KB
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
package jcircus.complementaryenvs;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Set;
import java.util.Stack;

public class StackVarEnv {
private HashMap <String, String> _map;

public StackVarEnv () {
this._map = new LinkedHashMap <String, String> ();
}
private HashMap <String, String> getMap () {
return this._map;
}
public StackVarEnv (StackVarEnv cde) {
this._map = new LinkedHashMap <String, String> (cde.getMap());
}
public void push (String varName) {
String stackpos = this.get(varName);
this._map.remove(varName);
if (stackpos.equals("")) {
this._map.put (varName, "1");
}
else {
this._map.put(varName, (new Integer ((Integer.parseInt(stackpos) + 1))).toString());
}
}
public void pop (String varName) {
String stackpos = this.get(varName);
if (stackpos.equals("1")) {
this._map.remove (varName);
}
else if (stackpos.equals("")) {}
else {
this._map.put(varName, (new Integer ((Integer.parseInt(stackpos) - 1))).toString());
}
}
public String get (String varName) {
if (!this._map.containsKey(varName)) {
return "";
}
return this._map.get(varName);
}
public String getPreviousScope (String varName) {
if (this.get(varName).length() > 0) {
return this.get(varName).substring(0, this.get(varName).length() - 1);
}
else {
return "";
}
}
public String getNextScope (String varName) {
if (this.get(varName).length() > 0) {
return this.get(varName) + "1";
}
else {
return "1";
}
}
public String getNewName (String varName) {
return (varName + this.get(varName));
}
public boolean containsKey (String str) {
return this._map.keySet().contains(str);
}
public Set <String> keySet() {
return this._map.keySet();
}
}