Blame view
circus/src/jcircus/complementaryenvs/StackVarEnv.java
1.81 KB
8d0dc533f
![]() |
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(); } } |