Modifier and Type | Field and Description |
---|---|
private java.util.Deque<java.util.Map<Reference,java.lang.Object>> |
stack |
Constructor and Description |
---|
StackImpl(java.util.Map<Reference,?> gamma) |
Modifier and Type | Method and Description |
---|---|
java.lang.Object |
get(Reference var)
Look up a variable in the stack.
|
void |
pop()
Exit the current most-nested lexical scope.
|
void |
push()
Enter a new nested lexical scope.
|
java.lang.Object |
put(Reference var,
java.lang.Object val,
boolean canShadow)
Assign a value to a variable, either overwriting or shadowing prior
value.
|
void |
putAll(java.util.Map<Reference,?> map)
Bind a collection of variable/value pairs into the current lexical scope,
e.g., the arguments of a function.
|
private java.lang.Object |
stackOperation(java8.util.function.Function<java.util.Map<Reference,java.lang.Object>,java.lang.Object> op) |
java.lang.String |
toString() |
private final java.util.Deque<java.util.Map<Reference,java.lang.Object>> stack
public StackImpl(java.util.Map<Reference,?> gamma)
gamma
- Initial set of variablespublic void push()
Stack
public void pop()
Stack
public java.lang.Object put(Reference var, java.lang.Object val, boolean canShadow)
Stack
put
in interface Stack
var
- Name of the variable to be boundval
- Value to be assignedcanShadow
- If true, then only values in the same lexical scope are
overwritten; others are shadowed. If false, then prior value
is always overwritten.private java.lang.Object stackOperation(java8.util.function.Function<java.util.Map<Reference,java.lang.Object>,java.lang.Object> op)
public java.lang.Object get(Reference var)
Stack
public java.lang.String toString()
toString
in class java.lang.Object